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 11 #ifndef __BLK_DEV_H__ 12 #define __BLK_DEV_H__ 13 14 #include <rthw.h> 15 #include <rtthread.h> 16 #include <drivers/blk.h> 17 #include <drivers/misc.h> 18 19 #define to_blk_disk(dev) rt_container_of(dev, struct rt_blk_disk, parent) 20 #define to_blk(dev) rt_container_of(dev, struct rt_blk_device, parent) 21 22 #ifdef RT_USING_DM 23 #define to_disk_name(disk) rt_dm_dev_get_name(&(disk)->parent) 24 #define to_blk_name(blk) rt_dm_dev_get_name(&(blk)->parent) 25 #else 26 #define to_disk_name(disk) (disk)->parent.parent.name 27 #define to_blk_name(blk) (blk)->parent.parent.name 28 #endif 29 30 /* %c%c name */ 31 #define letter_name(n) ('a' + (n) / ((n) >= 26 ? (26 * 2) : 1)), ((n) >= 26 ? 'a' + (n) % 26 : '\0') 32 spin_lock(struct rt_spinlock * spinlock)33rt_inline void spin_lock(struct rt_spinlock *spinlock) 34 { 35 rt_hw_spin_lock(&spinlock->lock); 36 } 37 spin_unlock(struct rt_spinlock * spinlock)38rt_inline void spin_unlock(struct rt_spinlock *spinlock) 39 { 40 rt_hw_spin_unlock(&spinlock->lock); 41 } 42 43 rt_err_t blk_dev_initialize(struct rt_blk_device *blk); 44 rt_err_t disk_add_blk_dev(struct rt_blk_disk *disk, struct rt_blk_device *blk); 45 rt_err_t disk_remove_blk_dev(struct rt_blk_device *blk, rt_bool_t lockless); 46 47 rt_uint32_t blk_request_ioprio(void); 48 49 #endif /* __BLK_DEV_H__ */ 50