linux驱动程序中怎么做api函数供应用程序调用
2个回答
展开全部
以下是国嵌教学视频中的部分驱动代码及应用程序代码:
********************************************************************
//memdev.c
static const struct file_operations mem_fops =
{
.owner = THIS_MODULE,
.llseek = mem_llseek,
.read = mem_read,
.write = mem_write,
.open = mem_open,
.release = mem_release,
};
**********************************************************************
//app-mem.c
/*打开设备文件*/
fp0 = fopen("/dev/memdev0","r+");
/*写入设备*/
fwrite(Buf, sizeof(Buf), 1, fp0);
/*重新定位文件位置(思考没有该指令,会有何后果)*/
fseek(fp0,0,SEEK_SET);//调用mem_llseek()定位
/*读出设备*/
fread(Buf, sizeof(Buf), 1, fp0);
调用的函数名与如fopen,fwrite,fread,fseek与file_operation中的指针名open,write.read,llseek不一样,内核是如何知道应该调用哪个函数的?
********************************************************************
//memdev.c
static const struct file_operations mem_fops =
{
.owner = THIS_MODULE,
.llseek = mem_llseek,
.read = mem_read,
.write = mem_write,
.open = mem_open,
.release = mem_release,
};
**********************************************************************
//app-mem.c
/*打开设备文件*/
fp0 = fopen("/dev/memdev0","r+");
/*写入设备*/
fwrite(Buf, sizeof(Buf), 1, fp0);
/*重新定位文件位置(思考没有该指令,会有何后果)*/
fseek(fp0,0,SEEK_SET);//调用mem_llseek()定位
/*读出设备*/
fread(Buf, sizeof(Buf), 1, fp0);
调用的函数名与如fopen,fwrite,fread,fseek与file_operation中的指针名open,write.read,llseek不一样,内核是如何知道应该调用哪个函数的?
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询