Rama Krishna wrote:
Hi,
I have found cas32() atomic function in </usr/include/sys/atomic.h> (and also there is another atomic.h header file in </usr/include/atomic.h> but this header file does not have any cas32() function declarations) the declaration of cas32 in <sys/atomic.h>
is as follows
extern uint32_t cas32(uint32_t *target, uint32_t cmp, uint32_t newval);
extern ulong_t caslong(ulong_t *target, ulong_t cmp, ulong_t newval);
extern uint64_t cas64(uint64_t *target, uint64_t cmp, uint64_t newval);
extern void *casptr(void *target, void *cmp, void *newval);
extern uint8_t cas8(uint8_t *target, uint8_t cmp, uint8_t newval);
The header documents those functions as Legacy Kernel interfaces that
will go away. So those are only for the Kernel and are deprecated.
You should be be able to use the atomic_* functions. Like atomic_cas_32
in your case. For more details: man atomic_cas_32
Regards,
Moinak.
But the problem is when iam using these functions in c programs and compiling
using gcc it is showing the following error.
-------------------------------------------------------------------------------
Undefined first referenced
symbol in file
cas32 /var/tmp//ccQcsnev.o
--------------------------------------------------------------------------------
And if i use the function other than cas32 group of instruction
such as atomic_or_uint()
whose declaration is extern void atomic_or_uint(uint_t *target, uint_t bits);
in <sys/atomic.h> it is giving no error where as for CAS32 it showing as
undefined symbol.Why it is giving like that we are not able to know.Is it the case
that CAS32 instruction only available in Kernel mode and not available to user
mode.Please inform us if anyone knows how to use cas32() instruction in the user C
programs.As this is usefull for writing Nonblocking versions of stacks and Queues.Is
there any way to write
our own atomic functions?
Rama
This message posted from opensolaris.org
_______________________________________________
opensolaris-discuss mailing list
[email protected]
_______________________________________________
opensolaris-discuss mailing list
[email protected]