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);
번호 | 제목 | 글쓴이 | 날짜 | 조회 수 |
---|---|---|---|---|
44 | [IPC]D-Bus 소개 | makersweb | 2015.02.28 | 29743 |
43 | mmap() 함수, munmap() 함수 | pjk | 2014.02.05 | 15218 |
42 | ioctl() 함수 | makersweb | 2014.02.27 | 14068 |
41 | read() 함수, write() 함수 | makersweb | 2014.03.04 | 11344 |
40 | 리눅스 프레임버퍼(Linux Frame Buffer) | makersweb | 2015.02.15 | 7412 |
39 | Ubuntu Linux에서 dbus-c++바인딩 D-Bus 테스트 | makersweb | 2018.03.07 | 7057 |
38 | SocketCAN 유틸 사용방법 | makersweb | 2022.02.05 | 7005 |
37 | 키패드 드라이버 | pjk | 2014.02.12 | 6506 |
36 | 리눅스 커널 소스코드 구성도 | makersweb | 2014.03.04 | 5482 |
35 | Build Qt 4.7.0 for Embedded Linux | makersweb | 2015.05.25 | 5409 |
34 | 플랫폼 디바이스 드라이버 개발 시 많이 사용되는 커널 API 및 매크로 | makersweb | 2020.01.28 | 4711 |
33 | 리눅스 데스크탑 환경 종류 | pjk | 2015.02.11 | 4616 |
32 | 디바이스 드라이버에 대해서 | makersweb | 2014.04.19 | 4121 |
31 | Wayland에 대한 간단한 소개 | makersweb | 2017.12.29 | 3369 |
» | file_operations | makersweb | 2014.02.27 | 3287 |
29 | 리눅스 디렉터리 구조 | makersweb | 2014.02.28 | 3227 |
28 | 4. Makefile를 작성할 때 알면 좋은 것들 | pjk | 2014.02.05 | 3039 |
27 | 리눅스 오디오 스택과 아키텍처 | makersweb | 2020.09.02 | 2864 |
26 | 리눅스에서 네트워크 구성 | makersweb | 2022.06.11 | 2849 |
25 | 3. 매크로(Macro) 와 확장자(Suffix) 규칙 | pjk | 2014.02.05 | 2602 |