驱动笔记 - file_operations

#include <linux/fs.h>

struct file_operations {
struct module *owner;
loff_t (*llseek) (struct file *, loff_t, int);
ssize_t (*read) (struct file *, char __user *, size_t, loff_t *);
ssize_t (*write) (struct file *, const char __user *, size_t, loff_t *);
ssize_t (*aio_read) (struct kiocb *, const struct iovec *, unsigned long, loff_t);
ssize_t (*aio_write) (struct kiocb *, const struct iovec *, unsigned long, loff_t);
int (*readdir) (struct file *, void *, filldir_t);

unsigned int (*poll) (struct file *, struct poll_table_struct *);

int (*ioctl) (struct inode *, struct file *, unsigned int, unsigned long);  //已经被unlocked_ioctl替代

long (*unlocked_ioctl) (struct file *, unsigned int, unsigned long);

long (*compat_ioctl) (struct file *, unsigned int, unsigned long);
int (*mmap) (struct file *, struct vm_area_struct *);

int (*open) (struct inode *, struct file *);

int (*flush) (struct file *, fl_owner_t id);

int (*release) (struct inode *, struct file *);

int (*fsync) (struct file *, struct dentry *, int datasync);
int (*aio_fsync) (struct kiocb *, int datasync);
int (*fasync) (int, struct file *, int);
int (*lock) (struct file *, int, struct file_lock *);
ssize_t (*sendpage) (struct file *, struct page *, int, size_t, loff_t *, int);
unsigned long (*get_unmapped_area)(struct file *, unsigned long, unsigned long, unsigned long, unsigned long);
int (*check_flags)(int);
int (*flock) (struct file *, int, struct file_lock *);
ssize_t (*splice_write)(struct pipe_inode_info *, struct file *, loff_t *, size_t, unsigned int);
ssize_t (*splice_read)(struct file *, loff_t *, struct pipe_inode_info *, size_t, unsigned int);
int (*setlease)(struct file *, long, struct file_lock **);
};

时间: 2024-10-12 02:27:12

驱动笔记 - file_operations的相关文章

驱动笔记 - platform中断程序

platform_device: #include <linux/module.h> #include <linux/types.h> #include <linux/fs.h> #include <linux/init.h> #include <linux/platform_device.h> #include <linux/interrupt.h> #include <linux/device.h> #include

入门级的按键驱动——按键驱动笔记之poll机制-异步通知-同步互斥阻塞-定时器防抖

文章对应视频的第12课,第5.6.7.8节. 在这之前还有查询方式的驱动编写,中断方式的驱动编写,这篇文章中暂时没有这些类容.但这篇文章是以这些为基础写的,前面的内容有空补上. 按键驱动——按下按键,打印键值: 目录 概要 poll机制 异步通知 同步互斥阻塞 定时器防抖 概要: 查询方式: 12-3 缺点:占用CPU99%的资源.中断方式:12-4 缺点:调用read函数后如果没有按键按下,该函数永远不会结束,一直在等待按键按下. 优点:使用到了休眠机制,占用cpu资源极少.poll机制: 1

学习Linux下s3c2440的USB鼠标驱动笔记

USB驱动学习笔记: 2 1.ARM-Linux下USB驱动程序开发 3 1.1.1.linux下USB配置: 4 *********(MassStorage:存储设备)************************************ 5 -> Device Drivers 6 -> SCSI device support(通用设备) 7 -> SCSI disk support (磁盘支持) 8 -> SCSI device support(设备支持) 9 10 ->

Samsung_tiny4412(驱动笔记10)----mdev,bus,device,driver,platform

/*********************************************************************************** * * mdev,bus,device,driver,platform * * 声明: * 1. 本系列文档是在vim下编辑,请尽量是用vim来阅读,在其它编辑器下可能会 * 不对齐,从而影响阅读. * 2. 由于本人水平有限,很难阐述清楚bus device driver platform的关系 * 所以强烈要求您详细参考本次

驱动笔记 - 混杂设备常用函数

#include <linux/miscdevice.h>混杂设备:主设备号为10的字符设备struct miscdevice{ int minor; //次设备号 const char *name; const struct file_operations *fops; struct list_head list; struct device *parent; struct device *this_device;} 混杂设备注册int misc_register (struct miscd

驱动笔记 - 字符设备常用函数

字符设备: 静态申请设备号int register_chrdev_region(dev_t from, unsigned count,const char *name)申请使用从from开始的count个设备号(主设备号不变,次设备号增加)from:希望申请使用的设备号count:希望申请使用的设备号数目name:设备文件 动态分配设备号int alloc_chrdev_region(dev_t *dev, unsigned baseminor, unsigned count, const ch

驱动笔记 - ioctl

#include <linux/ioctl.h> 定义命令 _IO(type,nr) 没有参数的命令 _IOR(type,nr,datatype) 从驱动中读数据 _IOW(type,nr,datatype) 写数据到驱动 _IOWR(type,nr,datatype) 双向传送,type和number成员作为参数被传递例: #define MEM_IOC_MAGIC 'm' #define MEM_IOCSET _IOW(MEM_IOC_MAGIC,0,int) #define MEM_IO

驱动笔记 - 字符设备范例

#include <linux/types.h> #include <linux/kernel.h> #include <linux/init.h> #include <linux/module.h> #include <linux/kdev_t.h> #include <linux/fs.h> #include <linux/cdev.h> #include <linux/moduleparam.h> #in

i2c驱动笔记

基于bcm5300x芯片 注册为平台总线上的设备.drivers/i2c/busses/i2c-bcm5300x.c是针对不同芯片写的驱动. drivers/i2c/i2c-dev.c,i2c共有接口,通过文件描述符可以调用这个函数中的open,read,write,ioctl等函数.这些函数有通过调用algorithm结构体中的算法,调用不同平台的操作. 网上搜素到关于i2c数据结构之间的关系.