blk_dev.h 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. /*
  2. * Copyright (c) 2006-2023, RT-Thread Development Team
  3. *
  4. * SPDX-License-Identifier: Apache-2.0
  5. *
  6. * Change Logs:
  7. * Date Author Notes
  8. * 2023-02-25 GuEe-GUI first version
  9. */
  10. #ifndef __BLK_DEV_H__
  11. #define __BLK_DEV_H__
  12. #include <rthw.h>
  13. #include <rtthread.h>
  14. #include <drivers/blk.h>
  15. #include <drivers/misc.h>
  16. #define to_blk_disk(dev) rt_container_of(dev, struct rt_blk_disk, parent)
  17. #define to_blk(dev) rt_container_of(dev, struct rt_blk_device, parent)
  18. #ifdef RT_USING_DM
  19. #define to_disk_name(disk) rt_dm_dev_get_name(&(disk)->parent)
  20. #define to_blk_name(blk) rt_dm_dev_get_name(&(blk)->parent)
  21. #else
  22. #define to_disk_name(disk) (disk)->parent.parent.name
  23. #define to_blk_name(blk) (blk)->parent.parent.name
  24. #endif
  25. /* %c%c name */
  26. #define letter_name(n) ('a' + (n) / ((n) >= 26 ? (26 * 2) : 1)), ((n) >= 26 ? 'a' + (n) % 26 : '\0')
  27. rt_inline void spin_lock(struct rt_spinlock *spinlock)
  28. {
  29. rt_hw_spin_lock(&spinlock->lock);
  30. }
  31. rt_inline void spin_unlock(struct rt_spinlock *spinlock)
  32. {
  33. rt_hw_spin_unlock(&spinlock->lock);
  34. }
  35. rt_err_t blk_dev_initialize(struct rt_blk_device *blk);
  36. rt_err_t disk_add_blk_dev(struct rt_blk_disk *disk, struct rt_blk_device *blk);
  37. rt_err_t disk_remove_blk_dev(struct rt_blk_device *blk, rt_bool_t lockless);
  38. rt_uint32_t blk_request_ioprio(void);
  39. #endif /* __BLK_DEV_H__ */