XWOS API  4.0
XWOS C/C++ API参考手册
载入中...
搜索中...
未找到
device.c 文件参考

玄武设备栈:设备基类 更多...

#include <xwcd/ds/standard.h>
#include <string.h>
#include <xwos/lib/xwaop.h>
#include <xwos/lib/bclst.h>
#include <xwos/osal/lock/spinlock.h>
#include <xwos/osal/lock/seqlock.h>
#include <xwos/osal/lock/mtx.h>
#include <xwcd/ds/xwds.h>
#include <xwcd/ds/object.h>
#include <xwcd/ds/device.h>
device.c 的引用(Include)关系图:

浏览源代码.

函数

void xwds_device_construct (struct xwds_device *dev)
 XWDS API:设备的构造函数
 
void xwds_device_destruct (struct xwds_device *dev)
 XWDS API:设备的析构函数
 
xwer_t xwds_device_vop_probe (struct xwds_device *dev)
 设备基本操作函数:探测设备
 
xwer_t xwds_device_vop_remove (struct xwds_device *dev)
 设备基本操作函数:删除设备
 
xwer_t xwds_device_vop_start (struct xwds_device *dev)
 设备基本操作函数:启动设备
 
xwer_t xwds_device_vop_stop (struct xwds_device *dev)
 设备基本操作函数:停止设备
 
xwer_t xwds_device_vop_suspend (struct xwds_device *dev)
 设备基本操作函数:暂停设备
 
xwer_t xwds_device_vop_resume (struct xwds_device *dev)
 设备基本操作函数:继续设备
 
xwer_t xwds_device_gc (void *obj)
 
xwer_t xwds_device_probe (struct xwds *ds, struct xwds_device *dev, xwobj_gc_f gcfunc)
 XWDS API:探测设备
 
xwer_t xwds_device_remove (struct xwds_device *dev)
 XWDS API:删除设备
 
xwer_t xwds_device_start (struct xwds_device *dev)
 XWDS API:启动设备
 
xwer_t xwds_device_stop (struct xwds_device *dev)
 XWDS API:停止设备
 
xwer_t xwds_device_suspend (struct xwds_device *dev)
 XWDS API:暂停设备
 
xwer_t xwds_device_resume (struct xwds_device *dev)
 XWDS API:继续设备
 
xwer_t xwds_device_suspend_all (struct xwds *ds, bool ign_err)
 XWDS API:暂停所有设备
 
xwer_t xwds_device_resume_all (struct xwds *ds, bool ign_err)
 XWDS API:继续所有设备
 

变量

const struct xwds_virtual_operation xwds_dev_vop
 实现面向对象“多态”的函数表
 

详细描述

玄武设备栈:设备基类

作者

在文件 device.c 中定义.

函数说明

◆ xwds_device_gc()

xwer_t xwds_device_gc ( void *  obj)

<No error

在文件 device.c180 行定义.

181{
182 struct xwds_device * dev;
183 struct xwds * ds;
184 const struct xwds_virtual_operation * vop;
185 xwer_t rc;
186
187 dev = obj;
188 ds = dev->ds;
189 if (ds) {
190 xwds_obj_del(ds, &dev->obj);
191 }
192 dev->ds = NULL;
193
194 /* remove device */
195 vop = dev->vop;
196 if (vop && vop->remove) {
197 rc = vop->remove(dev);
198 } else {
199 rc = xwds_device_vop_remove(dev);
200 }
201 if (rc < 0) {
202 goto err_dev_vop_remove;
203 }
204 return XWOK;
205
206err_dev_vop_remove:
207 xwds_obj_add(ds, &dev->obj);
208 dev->ds = ds;
209 return rc;
210}
xwer_t xwds_device_vop_remove(struct xwds_device *dev)
设备基本操作函数:删除设备
Definition device.c:86
xwer_t xwds_obj_add(struct xwds *ds, struct xwds_object *obj)
Definition object.c:172
xwer_t xwds_obj_del(struct xwds *ds, struct xwds_object *obj)
Definition object.c:190
#define XWOK
No error
Definition errno.h:182
signed long xwer_t
Definition type.h:554
#define NULL
Definition type.h:28
设备(所有设备的基类)
Definition device.h:127
const struct xwds_virtual_operation * vop
Definition device.h:138
struct xwds * ds
Definition device.h:137
struct xwds_object obj
Definition device.h:128
基本操作的虚函数表(类似C++的虚函数表)
Definition device.h:99
xwer_t(* remove)(struct xwds_device *)
Definition device.h:101
设备栈
Definition xwds.h:37
函数调用图:

变量说明

◆ xwds_dev_vop

const struct xwds_virtual_operation xwds_dev_vop
初始值:
= {
}
xwer_t xwds_device_vop_start(struct xwds_device *dev)
设备基本操作函数:启动设备
Definition device.c:105
xwer_t xwds_device_vop_stop(struct xwds_device *dev)
设备基本操作函数:停止设备
Definition device.c:124
xwer_t xwds_device_vop_resume(struct xwds_device *dev)
设备基本操作函数:继续设备
Definition device.c:163
xwer_t xwds_device_vop_probe(struct xwds_device *dev)
设备基本操作函数:探测设备
Definition device.c:67
xwer_t xwds_device_vop_suspend(struct xwds_device *dev)
设备基本操作函数:暂停设备
Definition device.c:144

实现面向对象“多态”的函数表

在文件 device.c35 行定义.