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); 

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]

Reply via email to