file_operations
개요
/* * NOTE: * read, write, poll, fsync, readv, writev can be called * without the big kernel lock held in all filesystems. */ struct file_operations { struct module *owner; loff_t (*llseek) (struct file *, loff_t, int); ssize_t (*read) (struct file *, char *, size_t, loff_t *); ssize_t (*write) (struct file *, const char *, size_t, 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); int (*mmap) (struct file *, struct vm_area_struct *); int (*open) (struct inode *, struct file *); int (*flush) (struct file *); int (*release) (struct inode *, struct file *); int (*fsync) (struct file *, struct dentry *, int datasync); int (*fasync) (int, struct file *, int); int (*lock) (struct file *, int, struct file_lock *); ssize_t (*readv) (struct file *, const struct iovec *, unsigned long, loff_t *); ssize_t (*writev) (struct file *, const struct iovec *, unsigned long, loff_t *); 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); };
*참고 : 커널 버전이 증가하면서 file_operations의 개수가 늘어나고 있다.
file_operrations 구조체 필드
struct module *owner;
off_t(*llseek)(struct file *, loff_t, int);
ssize_t(*lead)(struct file *, char *, size_t, loff *);
ssize_t(*write)(struct file *, const char *, size_t, loff_t *);
unsigned int(*poll)(struct file *, struct poll_table_struct*);
int(*ioctl)(struct inode *, struct file *, unsigned int, unsigned long);
번호 | 제목 | 글쓴이 | 날짜 | 조회 수 |
---|---|---|---|---|
5 | libblkid - USB Storage의 정보 가져오기 | makersweb | 2018.10.18 | 680 |
4 | GRUB의 timeout 설정 | makersweb | 2023.11.07 | 678 |
3 | 리눅스 Qt 응용프로그램 AppImage 로 구축 | makersweb | 2024.01.07 | 630 |
2 | PATH에 새로운 경로 추가 | makersweb | 2019.09.19 | 405 |
1 | 리눅스에서 시리얼 포트 사용 및 접근 권한 | makersweb | 2024.05.21 | 217 |