fetch_and_and o fetch_and_or Kernel Services

Finalidad

Borra y establece bits en una variable de forma atómica.

Sintaxis

#include <sys/atomic_op.h>
uint fetch_and_and (addr,  mask)
atomic_p addr;uint mask;

ulong fetch_and_andlp (addr,  mask)
atomic_l addr;
ulong mask;

uint fetch_and_or (addr,  mask)
atomic_p addr;
uint mask;

ulong fetch_and_orlp (addr,  mask)
atomic_l addr;
ulong mask;

Parámetros

Elemento Descripción
addr Especifica la dirección de la variable cuyos bits deben borrarse o establecerse.
máscara Especifica la máscara de bits que se va a aplicar a la variable.

Descripción

Los servicios de kernel de fetch_and_y y fetch_and_or , respectivamente, borran y establecen bits en una variable, de acuerdo con una máscara de bits, como una única operación atómica. El servicio fetch_and_y borra los bits de la variable que corresponden a los bits claros de la máscara de bits, y el servicio de fetch_and_or establece bits en la variable que corresponde a los bits establecidos en la máscara de bits.

Los servicios de kernel de fetch_and_add y fetch_and_or operan en una sola palabra (32 bits), mientras que los servicios de kernel fetch_and_addlp y fetch_and_orlp operan en una variable de doble palabra (64 bits).

Estas operaciones son útiles cuando una variable que contiene distintivos de bits se comparte entre varias hebras de kernel, ya que aseguran que las operaciones de captación, actualización y almacenamiento utilizadas para borrar o establecer un bit en la variable se producen de forma atómica (no son interrumpibles).

Nota:
  • Para los servicios de kernel de fetch_and_y y fetch_and_or , la única palabra que contiene los distintivos de bits debe alinearse en un límite de palabra completa (32 bits).
  • Para los servicios de kernel de fetch_and_addlp y fetch_and_orlp , la palabra doble que contiene los distintivos de bits debe alinearse en un límite de doble palabra (64 bits).

Entorno de ejecución

Los servicios de kernel fetch_and_y y fetch_and_or se pueden llamar desde el entorno proceso o interrupción .

Valores de retorno

Los servicios de kernel de fetch_and_y y fetch_and_or devuelven el valor original de la variable.