bitmap.h 908 B

12345678910111213141516171819202122232425262728293031323334
  1. /*
  2. * Copyright (c) 2006-2021, RT-Thread Development Team
  3. *
  4. * SPDX-License-Identifier: Apache-2.0
  5. *
  6. * Change Logs:
  7. * Date Author Notes
  8. * 2021-08-04 JasonHu first version
  9. */
  10. #ifndef __RT_BITMAP_H__
  11. #define __RT_BITMAP_H__
  12. #include <rtdef.h>
  13. #define RT_BITMAP_MASK 1UL
  14. /**
  15. * rt_bitmap structure
  16. */
  17. struct rt_bitmap
  18. {
  19. rt_size_t byte_length; /**< rt_bitmap size in byte. */
  20. rt_uint8_t *bits; /**< rt_bitmap bits base addr. */
  21. };
  22. typedef struct rt_bitmap rt_bitmap_t;
  23. void rt_bitmap_init(rt_bitmap_t *bitmap, uint8_t *bits, rt_size_t byte_len);
  24. rt_base_t rt_bitmap_scan(rt_bitmap_t *bitmap, rt_size_t count);
  25. void rt_bitmap_set(rt_bitmap_t *bitmap, rt_ubase_t index, rt_bool_t value);
  26. rt_bool_t rt_bitmap_change(rt_bitmap_t *bitmap, rt_ubase_t index);
  27. rt_bool_t rt_bitmap_test_and_change(rt_bitmap_t *bitmap, rt_ubase_t index);
  28. #endif /* __RT_BITMAP_H__ */