upipe/uatomic.h header reference

Upipe thread-safe atomic operations More

Header inclusion [link] 

Members [link] 

Types [link] 

Function [link] 

Macros [link] 

Description [link] 

This API mimics a partial C11 stdatomic implementation. Atomic variables must be initialized with uatomic_init before use, and released with uatomic_clean before deallocation.

Members detail [link] 

#define UATOMIC_TEMPLATE(type, ctype, atomictype) [link] 

This macro is declared in upipe/uatomic.h source file, line 81.

This macro defines a set of functions to manipulate atomic variables.

#define _UPIPE_UATOMIC_H_ [link] 

This macro is declared in upipe/uatomic.h source file, line 34.

uint32_t atomic_fetch_sub(uatomic_uint32_t *obj, uint32_t operand) [link] 

This function is declared in upipe/uatomic.h source file, line 159.

This function decrements a uatomic variable.

Parameter list:

  • obj: pointer to a uatomic variable
  • operand: value to subtract

The return value is value before the operation

#define uatomic_clean(a) [link] 

This macro is declared in upipe/uatomic.h source file, line 59.

#define uatomic_compare_exchange [link] 

This macro is declared in upipe/uatomic.h source file, line 61.

#define uatomic_fetch_add [link] 

This macro is declared in upipe/uatomic.h source file, line 64.

#define uatomic_fetch_sub [link] 

This macro is declared in upipe/uatomic.h source file, line 65.

#define uatomic_init [link] 

This macro is declared in upipe/uatomic.h source file, line 53.

#define uatomic_load [link] 

This macro is declared in upipe/uatomic.h source file, line 57.

#define uatomic_ptr_clean(a) [link] 

This macro is declared in upipe/uatomic.h source file, line 60.

#define uatomic_ptr_compare_exchange [link] 

This macro is declared in upipe/uatomic.h source file, line 62.

#define uatomic_ptr_compare_exchange_ptr(obj, expected, desired) [link] 

This macro is declared in upipe/uatomic.h source file, line 269.

This macro atomically replaces the uatomic pointer, if it contains an expected value, with a desired value.

Parameter list:

  • obj: pointer to a uatomic variable
  • expected: reference to expected value, overwritten with actual value if it fails
  • desired: desired value

The return value is false if the exchange failed

#define uatomic_ptr_init [link] 

This macro is declared in upipe/uatomic.h source file, line 54.

#define uatomic_ptr_load [link] 

This macro is declared in upipe/uatomic.h source file, line 58.

#define uatomic_ptr_load_ptr(obj, type) [link] 

This macro is declared in upipe/uatomic.h source file, line 257.

This macro loads an atomic pointer.

Parameter list:

  • obj: pointer to a uatomic variable
  • type: type of the pointer

The return value is the loaded value

#define uatomic_ptr_store [link] 

This macro is declared in upipe/uatomic.h source file, line 56.

typedef void * uatomic_ptr_t [link] 

This typedef is declared in upipe/uatomic.h source file, line 79.

This typedef defines an atomic pointer.

#define uatomic_store [link] 

This macro is declared in upipe/uatomic.h source file, line 55.

typedef uint32_t uatomic_uint32_t [link] 

This typedef is declared in upipe/uatomic.h source file, line 76.

This typedef defines an atomic 32-bits unsigned integer. ARM platforms do not support larger atomic operations.

See also uring_lifo and uring_fifo.

Valid XHTML 1.0 StrictGenerated by cmassiot on Sun Dec 14 18:31:17 2025 using MkDoc