Re: Where is atomicqueue?
Re: Where is atomicqueue?
- Subject: Re: Where is atomicqueue?
- From: Terry Lambert <email@hidden>
- Date: Thu, 24 Apr 2008 12:17:59 -0700
On Apr 24, 2008, at 10:34 AM, Army Research Lab wrote:
On 4/24/08 11:40 AM, "Shawn Erickson" <email@hidden> wrote:
On Thu, Apr 24, 2008 at 8:30 AM, Shawn Erickson <email@hidden>
wrote:
On Thu, Apr 24, 2008 at 4:35 AM, Army Research Lab <email@hidden
>
wrote:
I've been poking through the man pages, and discovered the docs for
<libkern/OSAtomic.h>; I see the documentation for atomic and for
spinlock,
but 'man barrier' also lists atomicqueue. Unfortunately,
although the man
pages claim that I should find it, it isn't there. I also can't
find
anything like it in /usr/include. Does it exist?
BTW, I'm looking at all of this on a OS X 10.4.11 machine...
<http://developer.apple.com/documentation/Cocoa/Conceptual/Multithreading/Thr
eadSafety/chapter_5_section_6.html>
[0:505] > find /usr/include -name "OSAtomic.h"
/usr/include/libkern/OSAtomic.h
That is on a 10.4.11 system with Xcode 2.5.
Ah maybe you are talking about that header not containing the
definition for OSAtomic queue?
From the 10.5 man page...
"Most of these functions first appeared in Mac OS 10.4 (Tiger). The
"Orig" forms of the boolean operations, the "int", "long" and "ptr"
forms of compare-and-swap, and lockless enqueue/dequeue first
appeared
in Mac OS 10.5 (Leopard)."
The atomic queue does exist on 10.4 when in the kernel.
OK, maybe that is the problem then; I did look in
/usr/include/libkern/OSAtomic.h before I posted, but there is just a
comment
about the queue, not the queue itself. Do I have to download the
Darwin
sources to get access to it? Note that I'm just curious here, the
only
thing I need is spinlock, and if I'm clever, I won't even need that.
Short answer:
(1) It's protected by #ifdef __ppc__, so it's PPC only
(2) It's in a header <libkern/OSAtomic.h>, so you should only _expect_
to be able to use it in the kernel; the fact that there are some
inline functions there notwithstanding
(3) The atual implementaiton is as an external symbol in the Libkern
and System6.0 exports for PPC only
So to get at it you will need to be linked against the kernel (you
will need to be either kernel code or a KEXT), you will need to be
running PPC-only, and you will need to declare an explicit dependency
for your KEXT on an exported symbol set or on the entire kernel.
-- Terry
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Darwin-dev mailing list (email@hidden)
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden