[Patch] nginx to use libatomic_ops

W-Mark Kubacki wmark+nginx at hurrikane.de
Fri Oct 9 13:57:24 MSD 2009

2009/10/8 Igor Sysoev <is at rambler-co.ru>:
> On Tue, Sep 29, 2009 at 12:26:43PM +0200, W-Mark Kubacki wrote:
>> [...]
>> What do you think about the compromise using GCC builtins if
>> --with-libatomic is not set?
>> Only architectures not covered by the #ifs would be affected and you
>> could remove lock_file code entirely in future.
> On i386/amd64 gcc builtins are just inlines and do not require libgcc.
> As to libatomic, I'm not sure now. I prefer to use complex libraries
> such as OpenSSL, zlib, etc.

On x86/amd64 the shipped assembler code works fine, and my libatomic
patch was intended for 'other' architectures.
Despite of the latter I believe reinventing the wheel (as did php-fpm)
is no good engineering - and you need to maintain that code yourself
rather than have the 'community' do that for you (and other projects).

Unfortunately I don't know the "complex" libraries good enough to tell
whether they contain atomic ops nor whether they export it.

Igor, if it was my project I would have deleted the asm part
completely and used GCC atomics (the same goes for php-fpm) where
available, and libatomic (or any better replacement, I am not dogmatic
here) else. As far as I can tell the latter are inlined, too.

In the meantime I've created modified Gentoo ebuilds [1] (for all
archs) and binaries [2] (for ARM) - with the option for libatomic.
Find it attached as the link mentioned previously does not work
anymore because I replaced subversion by GIT.

W-Mark Kubacki

[1] http://git.ossdl.de/?p=ossdl-overlay.git;a=summary
[2] http://binhost.ossdl.de/armv5tel-softfloat-linux-gnueabi/
     (set this as binhost in Gentoo and the packages will be pulled
-------------- next part --------------
A non-text attachment was scrubbed...
Name: nginx-0.8.16-libatomic.patch
Type: application/octet-stream
Size: 3970 bytes
Desc: not available
URL: <http://nginx.org/pipermail/nginx/attachments/20091009/71e6ec5d/attachment.obj>

More information about the nginx mailing list