驱动程序与应用程序中函数调用关系分析(write)
来源:互联网 发布:阿里云服务器密码修改 编辑:程序博客网 时间:2024/05/22 07:58
驱动程序里的write函数有四个参数,函数格式如下:
short_write (struct inode *inode, struct file *filp, const char *buf, int count)
而用户程序中的write函数只有三个参数,函数格式如下:
write(inf fd, char *buf, int count)
那他们两个是怎么联系在一起的呢?这就要靠操作系统核心中的函数sys_write了,下面
是Linux Kernel 2.2.14中sys_write中的源代码:
asmlinkage ssize_t sys_write(unsigned int fd, const char * buf, size_t count)
{
ssize_t ret;
struct file * file;
struct inode * inode;
ssize_t (*write)(struct file *, const char *, size_t, loff_t *); /* 指向
驱动程序中的wirte函数的指针*/
lock_kernel();
ret = -EBADF;
file = fget(fd); /* 通过文件描述符得到文件指针 */
if (!file)
goto bad_file;
if (!(file->f_mode & FMODE_WRITE))
goto out;
inode = file->f_dentry->d_inode; /* 得到inode信息 */
ret = locks_verify_area(FLOCK_VERIFY_WRITE, inode, file, file->f_pos,
count);
if (ret)
goto out;
ret = -EINVAL;
if (!file->f_op || !(write = file->f_op->write)) /* 将函数开始时声明的
write函数指针指向fops方法中对应的write函数 */
goto out;
down(&inode->i_sem);
ret = write(file, buf, count, &file->f_pos); /* 使用驱动程序中的write函数
将数据输入设备,注意看,这里就是四个参数了 */
up(&inode->i_sem);
out:
fput(file);
bad_file:
unlock_kernel();
return ret;
- 驱动程序与应用程序中函数调用关系分析(write)
- read 系统调用剖析--file_operations中read/write函数与内核系统调用的关系
- read 系统调用剖析--file_operations中read/write函数与内核系统调用的关系
- read 系统调用剖析--file_operations中read/write函数与内核系统调用的关系
- read 系统调用剖析--file_operations中read/write函数与内核系统调用的关系
- linux下的cmos摄像头驱动设计2-应用程序的调用与驱动程序的关系
- uc/os-ii应用程序中函数的调用关系
- 应用程序调用dll组件,及dll组件之间的关系,dll中类及函数的导入导出;dll的导出方式和链接方式分析(一)
- linux驱动程序与应用程序函数的联系
- linux驱动程序与应用程序函数的联系
- 系统调用和驱动程序中相应函数的参数对应关系
- Linux 驱动程序与应用函数关系
- 应用程序如何调用驱动程序
- 将应用程序的函数指针传递给驱动程序来调用
- 应用程序和驱动程序调用自己定义的函数
- 在一个驱动程序中调用另外一个驱动程序中的函数
- 测试程序中系统调用如何调用到驱动程序函数
- Nginx的主要函数调用关系分析
- SoundTouch音频处理库源码分析及算法提取(6)
- 抛开技术做技术才是出路
- .net与java建立WebService再互相调用
- 关于副本构造函数(Copy Constructor)
- winform打开链接
- 驱动程序与应用程序中函数调用关系分析(write)
- 常见的一些代码
- Android 开发环境安装失败问题总结 win7下
- 解密淘宝网的开源架构
- 想学学pic单片机,请大家多多交流,指教啊
- 体验CSDN博客
- 一个带停止按钮的计数时钟
- C++网络编程卷1、卷2概述
- JAVA NIO异步通信框架MINA选型和使用的几个细节(概述入门,UDP, 心跳)