atomic.rs 568 B

1234567891011121314151617181920212223242526
  1. #![allow(dead_code)]
  2. use core::ptr::{read_volatile, write_volatile};
  3. use crate::include::bindings::bindings::atomic_t;
  4. /// @brief 原子的读取指定的原子变量的值
  5. #[inline]
  6. pub fn atomic_read(ato: *const atomic_t) -> i64 {
  7. unsafe {
  8. return read_volatile(&(*ato).value);
  9. }
  10. }
  11. /// @brief 原子的设置原子变量的值
  12. #[inline]
  13. pub fn atomic_set(ato: *mut atomic_t, value:i64) {
  14. unsafe{
  15. write_volatile(&mut (*ato).value, value);
  16. }
  17. }
  18. impl Default for atomic_t {
  19. fn default() -> Self {
  20. Self { value: 0 }
  21. }
  22. }