备注

AI Translation Notice

This document was automatically translated by Qwen/Qwen3-8B model, for reference only.

  • Source document: kernel/core_api/atomic.md

  • Translation time: 2025-05-19 01:41:25

  • Translation model: Qwen/Qwen3-8B

Please report issues via Community Channel

Atomic Variables

Introduction

  DragonOS implements atomic variables of type atomic_t. Atomic variables are implemented using architecture-specific atomic operation instructions. The specific implementation is located in kernel/common/atomic.h.

API

   Note that all the following APIs are atomic operations.

inline void atomic_add(atomic_t *ato, long val)

Description

   Atomically adds a specified value to the atomic variable.

Parameters

ato

   The atomic variable object.

val

   The value to be added to the variable.

inline void atomic_sub(atomic_t *ato, long val)

Description

   Atomically subtracts a specified value from the atomic variable.

Parameters

ato

   The atomic variable object.

val

   The value to be subtracted from the variable.

void atomic_inc(atomic_t *ato)

Description

   Atomically increments the atomic variable by 1.

Parameters

ato

   The atomic variable object.

void atomic_dec(atomic_t *ato)

Description

   Atomically decrements the atomic variable by 1.

Parameters

ato

   The atomic variable object.

inline void atomic_set_mask(atomic_t *ato, long mask)

Description

   Performs a bitwise OR operation between the atomic variable and the mask variable.

Parameters

ato

   The atomic variable object.

mask

   The variable used for the OR operation with the atomic variable.

inline void atomic_clear_mask(atomic_t *ato, long mask)

Description

   Performs a bitwise AND operation between the atomic variable and the mask variable.

Parameters

ato

   The atomic variable object.

mask

   The variable used for the AND operation with the atomic variable.