Function

GLibpointer_bit_unlock_and_set

unstable since: 2.80

Declaration

void
g_pointer_bit_unlock_and_set (
  void* address,
  guint lock_bit,
  gpointer ptr,
  guintptr preserve_mask
)

Description

This is equivalent to g_pointer_bit_unlock() and atomically setting the pointer value.

Note that the lock bit will be cleared from the pointer. If the unlocked pointer that was set is not identical to ptr, an assertion fails. In other words, ptr must have lock_bit unset. This also means, you usually can only use this on the lowest bits.

Available since: 2.80

Parameters

address

Type: void*

A pointer to a #gpointer-sized value.

The data is owned by the caller of the function.
lock_bit

Type: guint

A bit value between 0 and 31

ptr

Type: gpointer

The new pointer value to set.

The argument can be NULL.
The data is owned by the caller of the function.
preserve_mask

Type: guintptr

If non-zero, those bits of the current pointer in address are preserved. Note that the lock_bit bit will be always set according to set, regardless of preserve_mask and the currently set value in address.