19#define DEV_TABLE_SIZE XF_HAL_TYPE_MAX
29#if XF_HAL_LOCK_IS_ENABLE
59#if XF_HAL_LOCK_IS_ENABLE
80#if XF_HAL_LOCK_IS_ENABLE
86#if XF_HAL_LOCK_IS_ENABLE
107 XF_LOGE(
TAG,
"set default failed, %d", (
int)err);
135#if XF_HAL_LOCK_IS_ENABLE
140#if XF_HAL_LOCK_IS_ENABLE
146#if XF_HAL_LOCK_IS_ENABLE
161 XF_ASSERT(!err, err,
TAG,
"ioctl failed:%d!", (
int)err);
175 XF_ASSERT(err >= 0, err,
TAG,
"driver read failed:%d!", (
int) - err);
187 XF_ASSERT(err >= 0, err,
TAG,
"driver write failed:%d!", (
int) - err);
200#if XF_HAL_LOCK_IS_ENABLE
208#if XF_HAL_LOCK_IS_ENABLE
220 "Duplicate device registration!");
222#if XF_HAL_LOCK_IS_ENABLE
229#if XF_HAL_LOCK_IS_ENABLE
233 XF_LOGD(
TAG,
"Device registration successful");
244#if XF_HAL_LOCK_IS_ENABLE
255#if XF_HAL_LOCK_IS_ENABLE
259 if (&dev->
node == dev_list) {
#define XF_ASSERT(condition, retval, tag, format,...)
xfusion 断言宏(条件 不成立 时则输出日志后返回)。
#define BITS_CHECK(src, bits_mask)
检查变量 var 在 bits_mask 的位置上是否存在 1。
int32_t xf_err_t
整形错误类型。 错误码具体值见 xf_err_code_t.
static void xf_list_init(xf_list_t *list)
动态初始化链表.
static void xf_list_add_tail(xf_list_t *new_node, xf_list_t *head)
xf_list_add_tail - 在指定节点之前添加一个 new_node.
static void xf_list_del_init(xf_list_t *entry)
xf_list_del_init - 从链表中删除节点, 并重新初始化.
#define xf_list_for_each_entry(pos, head, type, member)
list_for_each_entry - 迭代给定类型的链表。
xf_err_t xf_lock_init(xf_lock_t *p_lock)
初始化锁.
int xf_lock_unlock(xf_lock_t lock)
解锁.
int xf_lock_lock(xf_lock_t lock)
锁定直至成功.
static xf_osal_mutex_t mutex
xf_err_t(* open)(xf_hal_dev_t *dev)
int(* read)(xf_hal_dev_t *dev, void *buf, size_t count)
xf_err_t(* ioctl)(xf_hal_dev_t *dev, uint32_t cmd, void *config)
xf_err_t(* close)(xf_hal_dev_t *dev)
int(* write)(xf_hal_dev_t *dev, const void *buf, size_t count)
xf_hal_dev_create_t constructor
xf_driver_ops_t driver_ops
xf_err_t xf_hal_driver_close(xf_hal_dev_t *dev)
int xf_hal_driver_read(xf_hal_dev_t *dev, void *buf, size_t count)
xf_err_t xf_hal_driver_ioctl(xf_hal_dev_t *dev, uint32_t cmd, void *config)
static xf_hal_driver_t dev_table[DEV_TABLE_SIZE]
xf_err_t xf_hal_driver_open(xf_hal_dev_t *dev, xf_hal_type_t type, uint32_t id)
uint32_t xf_hal_driver_get_enable_count(xf_hal_type_t type)
int xf_hal_driver_write(xf_hal_dev_t *dev, const void *buf, size_t count)
xf_err_t xf_hal_device_add(xf_hal_dev_t *dev)
struct _xf_hal_driver_t xf_hal_driver_t
uint32_t xf_hal_driver_get_flag(xf_hal_type_t type)
xf_hal_dev_t * xf_hal_device_find(xf_hal_type_t type, uint32_t id)
xf_err_t xf_hal_driver_register(xf_hal_type_t type, xf_hal_flag_t flag, xf_hal_dev_create_t constructor, const xf_driver_ops_t *driver_ops)
xf_hal_dev_t * xf_hal_driver_create(xf_hal_type_t type, uint32_t id)
enum _xf_hal_type_t xf_hal_type_t
enum _xf_hal_flag_t xf_hal_flag_t
#define XF_HAL_DEV_CMD_ALL
xf_hal_dev_t *(* xf_hal_dev_create_t)(uint32_t id)
#define XF_HAL_DEV_CMD_DEFAULT
#define XF_LOGE(tag, format,...)
#define XF_LOGD(tag, format,...)