What is the APR standard for utilizing functions that may or may not be present in a specific version of an OS ? For example, there are two ways, at run time, to detect the presence of InterlockedIncrement64() under Windows.
A. You could call a LoadLibrary/GetProcAddress combination on the function, and use it if you succeed in getting a valid function pointer. B. You can make Kernel32.dll delayload, and only attempt to call InterlockedIncrement64() if the proper OS version is detected at run time that is known to support InterlockedIncrement64(). I guess the same can be done for processor specific features at run time. /Daniel -----Original Message----- From: Jim Jagielski [mailto:j...@jagunet.com] Sent: Wednesday, January 07, 2009 7:46 AM To: Justin Erenkrantz Cc: Daniel May; dev@apr.apache.org Subject: Re: Does apr_atomic_inc64 exist ? On Jan 6, 2009, at 12:50 PM, Justin Erenkrantz wrote: > On Tue, Jan 6, 2009 at 7:17 AM, Daniel May <dan...@spryware.com> > wrote: >> I am looking for a 64-bit counterpart to apr_atomic_inc32(). Has >> this been implemented ? > > I don't believe that we've guaranteed 64-bit atomics anywhere. I'm > not sure how much underlying OS/architecture support there would > generically be for 64-bit atomics... -- justin > Unless we do it with mutexes... ugly. But we do have places in the code where the lack of 64bit "atomics" are a concern... PS: Am I the only one who, when I see "atomics" think of Patrick Stewart in the old Dune movie screaming: "Atomics!" ??