### Function

# GLib atomic_int_and

since: 2.30

#### Declaration [src]

    guint
    g_atomic_int_and (
      volatile guint* atomic,
      guint val
    )

#### Description [src]

Performs an atomic bitwise ‘and’ of the value of `atomic` and `val`, storing the result back in `atomic`.

This call acts as a full compiler and hardware memory barrier.

Think of this operation as an atomic version of `{ tmp = *atomic; *atomic &= val; return tmp; }`.

While `atomic` has a `volatile` qualifier, this is a historical artifact and the pointer passed to it should not be `volatile`.

Available since: 2.30

#### Parameters

`atomic`

  Type: `volatile guint*`

  A pointer to a #gint or #guint.

  The data is owned by the caller of the function.

`val`

  Type: `guint`

  The value to ‘and’.

#### Return value

Type: `guint`

The value of `atomic` before the operation, unsigned.