1.系统请求键
2.通过/proc接口
proc文件系统是一种伪文件系统。实际上,它并占用存储空间,而是系统运行时在内存中建立的内核状态映射。可以瞬时地提供系统的状态信息。
在用户空间可以作为文件系统挂接到/proc目录下,提供给用户访问。可以通过Shel命令挂接。
3.通过/sys接口
sysfs文件系统是2.6内核新增加的文件系统。它也是一种伪文件系统,是在内存中实现的文件系统。它可以把内核空间的数据、属性、链接等东西输出到用户空间。
在2.6内核中,sysfs和kobject是紧密结合的,成为驱动程序模型的组成部分。
当加载或卸载kobject的时候。需要注册或者注销操作。当注册kobject时,注册函数除了把kobject插入到kset链表中,还要在sysfs中创建对应的目录。反过来,当注销kobject时,注销函数也会删除sysfs中相应的目录。
sysfs的编程接口
第一个方面是属性。属性能够以文件系统的正常文件形式输出到用户空间。Sysfs文件系统间接调用属性定义的函数操作,提供读写内核属性的方法。
简单的属性定义示例:
第2个方面是子系统操作函数。当子系统定义了一个属性类型时,必须实现一些sysfs操作函数。当应用程序调用read/write函数时,通过这些子系统函数显示或者保存属性值。
当读写这个sysfs时,sys调用对应的函数。然后,把通用的kobject结构体和结构体属性指针转换成适当的指针类型,并且调用相关的函数。
4.通过ioctl方法
在内核空间,ioctl驱动程序原型如下:
int (*ioctl)(struct inode *inode, struct file *flip, unsigned int cmd, unsigned long arg);
用户空间可以使用ioctl系统调用
int ioctl(int fd, unsigned long cmd, ...);