rtthread posix接口支持
rtthread 支持POSIX 接口,驅(qū)動現(xiàn)在也需要支持posix接口,讓linux 的應(yīng)用同樣可以運(yùn)行到讓rtthread上 .應(yīng)用通用可以減少上層應(yīng)用的改動。加快產(chǎn)品開發(fā)速度,同樣測試也可以通用,減少維護(hù)成本,提高測試效率。
驅(qū)動部分需要實現(xiàn):
應(yīng)用聲明文件:
#include <dfs_file.h>
#include <dfs_posix.h>
#include <dfs_poll.h>
實現(xiàn)的接口結(jié)構(gòu)體:
static const struct dfs_file_ops rtc_fops = {
rtc_fops_open,
RT_NULL,
RT_NULL,
rtc_fops_read,
RT_NULL,
RT_NULL,
RT_NULL,
RT_NULL,
rtc_fops_poll,
};
以上接口函數(shù)的實現(xiàn):
int rtc_fops_open(struct dfs_fd *fd)
{
return 0;
}
static int rtc_fops_read(struct dfs_fd *fd, void *buf, size_t count)
{
*(int *)buf = (core_int_count<<8) | 0x0;
return 0;
}
static int rtc_fops_poll(struct dfs_fd *fd, rt_pollreq_t *req)
{
int mask = 0;
}
進(jìn)行注冊:
#ifdef RT_USING_POSIX
rtc.fops = (void *)&rtc_fops;
#endif
這樣驅(qū)動的準(zhǔn)備就完成了。
應(yīng)用進(jìn)行調(diào)用的流程:
rtc_fd = open("/dev/rtc", O_RDONLY, 0);//open 設(shè)備
if (rtc_fd < 0)
{
rt_kprintf(“open rtc dev failed %d\n”,rtc_fd);
return;
};
while(1){
FD_ZERO(&readfds);
FD_SET(rtc_fd, &readfds);
rt_kprintf(“select fd:%d readfds:%d\n”,rtc_fd,readfds);
ret = select(rtc_fd+1, &readfds, RT_NULL, RT_NULL, &timeout);// 應(yīng)用調(diào)用select 接口,驅(qū)動進(jìn)入到poll
if (ret < 0)
{
rt_kprintf(“select failed %d\n”, ret);
test_rlt = -1;
read(rtc_fd, &buf, 3);// 驅(qū)動部分會進(jìn)入read 函數(shù)
總結(jié)
以上是生活随笔為你收集整理的rtthread posix接口支持的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 一阶电路分析
- 下一篇: 原型链的继承都发生在构造函数上