GSP
Quick Navigator

Search Site

Unix VPS
A - Starter
B - Basic
C - Preferred
D - Commercial
MPS - Dedicated
Previous VPSs
* Sign Up! *

Support
Contact Us
Online Help
Handbooks
Domain Status
Man Pages

FAQ
Virtual Servers
Pricing
Billing
Technical

Network
Facilities
Connectivity
Topology Map

Miscellaneous
Server Agreement
Year 2038
Credits
 

USA Flag

 

 

Man Pages
ck_pr_cas(3) FreeBSD Library Functions Manual ck_pr_cas(3)

ck_pr_cas_ptr, ck_pr_cas_ptr_value, ck_pr_cas_ptr_2, ck_pr_cas_ptr_2_value, ck_pr_cas_double, ck_pr_cas_double_value, ck_pr_cas_char, ck_pr_cas_char_value, ck_pr_cas_uint, ck_pr_cas_uint_value, ck_pr_cas_int, ck_pr_cas_int_value, ck_pr_cas_64_2, ck_pr_cas_64_2_value, ck_pr_cas_64, ck_pr_cas_64_value, ck_pr_cas_32, ck_pr_cas_32_value, ck_pr_cas_16, ck_pr_cas_16_value, ck_pr_cas_8, ck_pr_cas_8_value
atomic compare-and-swap operations

Concurrency Kit (libck, -lck)

#include <ck_pr.h>

bool
ck_pr_cas_ptr(void *target, void *old_value, void *new_value);

bool
ck_pr_cas_ptr_value(void *target, void *old_value, void *new_value, void *original_value);

bool
ck_pr_cas_ptr_2(void *target, void *old_value, void *new_value);

bool
ck_pr_cas_ptr_2_value(void *target, void *old_value, void *new_value, void *original_value);

bool
ck_pr_cas_double(double *target, double old_value, double new_value);

bool
ck_pr_cas_double_value(double *target, double old_value, double new_value, double *original_value);

bool
ck_pr_cas_char(char *target, char old_value, char new_value);

bool
ck_pr_cas_char_value(char *target, char old_value, char new_value, char *original_value);

bool
ck_pr_cas_uint(unsigned int *target, unsigned int old_value, unsigned int new_value);

bool
ck_pr_cas_uint_value(unsigned int *target, unsigned int old_value, unsigned int new_value, unsigned int *original_value);

bool
ck_pr_cas_int(int *target, int old_value, int new_value);

bool
ck_pr_cas_int_value(int *target, int old_value, int new_value, int *original_value);

bool
ck_pr_cas_64_2(uint64_t target[static 2], uint64_t old_value[static 2], uint64_t new_value[static 2]);

bool
ck_pr_cas_64_2_value(uint64_t target[static 2], uint64_t old_value[static 2], uint64_t new_value[static 2], uint64_t original_value[static 2]);

bool
ck_pr_cas_64(uint64_t *target, uint64_t old_value, uint64_t new_value);

bool
ck_pr_cas_64_value(uint64_t *target, uint64_t old_value, uint64_t new_value, uint64_t *original_value);

bool
ck_pr_cas_32(uint32_t *target, uint32_t old_value, uint32_t new_value);

bool
ck_pr_cas_32_value(uint32_t *target, uint32_t old_value, uint32_t new_value, uint32_t *original_value);

bool
ck_pr_cas_16(uint16_t *target, uint16_t old_value, uint16_t new_value);

bool
ck_pr_cas_16_value(uint16_t *target, uint16_t old_value, uint16_t new_value, uint16_t *original_value);

bool
ck_pr_cas_8(uint8_t *target, uint8_t old_value, uint8_t new_value);

bool
ck_pr_cas_8_value(uint8_t *target, uint8_t old_value, uint8_t new_value, uint8_t *original_value);

The ck_pr_cas(3) family of functions atomically compare the value in target for equality with old_value and if so, replace the value pointed to by target with the value specified by new_value. If the value in target was not equal to the value specified by old_value then no modifications occur to the value in target. The *_value form of these functions unconditionally update original_value.

This family of functions return true if the value in target was modified as a result of the operation. Otherwise, they return false.

ck_pr_fence_load(3), ck_pr_fence_load_depends(3), ck_pr_fence_store(3), ck_pr_fence_memory(3), ck_pr_load(3), ck_pr_store(3), ck_pr_fas(3), ck_pr_faa(3), ck_pr_inc(3), ck_pr_dec(3), ck_pr_neg(3), ck_pr_not(3), ck_pr_sub(3), ck_pr_and(3), ck_pr_or(3), ck_pr_xor(3), ck_pr_add(3), ck_pr_btc(3), ck_pr_bts(3), ck_pr_btr(3)

Additional information available at http://concurrencykit.org/

April 11, 2013

Search for    or go to Top of page |  Section 3 |  Main Index

Powered by GSP Visit the GSP FreeBSD Man Page Interface.
Output converted with ManDoc.