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

玄武设备栈:SOC:时钟 更多...

#include <xwcd/ds/standard.h>
#include <string.h>
#include <xwcd/ds/soc/clock.h>
clock.c 的引用(Include)关系图:

浏览源代码.

函数

xwer_t xwds_clk_req (struct xwds_soc *soc, xwid_t id)
 XWDS API:申请时钟
 
xwer_t xwds_clk_rls (struct xwds_soc *soc, xwid_t id)
 XWDS API:释放时钟
 
xwer_t xwds_clk_getfqcy (struct xwds_soc *soc, xwid_t id, xwu32_t *buf, xwsz_t *num)
 XWDS API:获取时钟频率
 

详细描述

玄武设备栈:SOC:时钟

作者

在文件 clock.c 中定义.

函数说明

◆ xwds_clk_getfqcy()

xwer_t xwds_clk_getfqcy ( struct xwds_soc soc,
xwid_t  id,
xwu32_t buf,
xwsz_t num 
)

XWDS API:获取时钟频率

参数
[in]socSOC对象指针
[in]id时钟ID
[out]buf返回时钟频率的缓冲区的指针
[in,out]num指向缓冲区的指针,此缓冲区:
  • (I) 作为输入时,表示缓冲区数组的数量
  • (O) 作为输出时,返回实际的频率数据的数量
返回
错误码
返回值
XWOK没有错误
-EFAULT无效指针
-ERANGE时钟ID错误
-ENOSYS不支持的API
注解
  • 上下文:中断、中断底半部、线程

<No error

在文件 clock.c83 行定义.

85{
86 const struct xwds_soc_driver * drv;
87 xwer_t rc;
88
89 XWDS_VALIDATE(soc, "nullptr", -EFAULT);
90 XWDS_VALIDATE((id < soc->clk.num), "out-of-range", -ERANGE);
91 XWDS_VALIDATE(buf, "nullptr", -EFAULT);
92 XWDS_VALIDATE(num, "nullptr", -EFAULT);
93
94 rc = xwds_soc_grab(soc);
95 if (rc < 0) {
96 goto err_soc_grab;
97 }
98
99 drv = xwds_cast(struct xwds_soc_driver *, soc->dev.drv);
100 if ((drv) && (drv->clk_getfqcy)) {
101 rc = drv->clk_getfqcy(soc, id, buf, num);
102 } else {
103 rc = -ENOSYS;
104 }
105 if (rc < 0) {
106 goto err_drv_getfqcy;
107 }
108
109 xwds_soc_put(soc);
110 return XWOK;
111
112err_drv_getfqcy:
113 xwds_soc_put(soc);
114err_soc_grab:
115 return rc;
116}
xwer_t xwds_soc_grab(struct xwds_soc *soc)
XWDS API:增加对象的引用计数
Definition chip.c:71
xwer_t xwds_soc_put(struct xwds_soc *soc)
XWDS API:减少对象的引用计数
Definition chip.c:77
#define xwds_cast(type, dev)
Definition standard.h:40
#define XWDS_VALIDATE(exp, errstr,...)
Definition standard.h:51
#define EFAULT
Bad address
Definition errno.h:44
#define ENOSYS
Function not implemented
Definition errno.h:110
#define XWOK
No error
Definition errno.h:182
#define ERANGE
Result too large
Definition errno.h:64
signed long xwer_t
Definition type.h:554
const struct xwds_driver * drv
Definition device.h:133
BSP中需要提供的SOC设备驱动函数表
Definition chip.h:51
struct xwds_device dev
Definition chip.h:162
函数调用图:

◆ xwds_clk_rls()

xwer_t xwds_clk_rls ( struct xwds_soc soc,
xwid_t  id 
)

XWDS API:释放时钟

参数
[in]socSOC对象指针
[in]id时钟ID
返回
错误码
返回值
XWOK没有错误
-ERANGE时钟ID错误
-ENOSYS不支持的API
注解
  • 上下文:中断、中断底半部、线程

<No error

在文件 clock.c57 行定义.

58{
59 const struct xwds_soc_driver * drv;
60 xwer_t rc;
61
62 XWDS_VALIDATE(soc, "nullptr", -EFAULT);
63 XWDS_VALIDATE((id < soc->clk.num), "out-of-range", -ERANGE);
64
65 drv = xwds_cast(struct xwds_soc_driver *, soc->dev.drv);
66 if ((drv) && (drv->clk_rls)) {
67 rc = drv->clk_rls(soc, id);
68 } else {
69 rc = -ENOSYS;
70 }
71 if (rc < 0) {
72 goto err_drv_clk_rls;
73 }
74
75 xwds_soc_put(soc);
76 return XWOK;
77
78err_drv_clk_rls:
79 return rc;
80}
函数调用图: