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);
| 번호 | 제목 | 글쓴이 | 날짜 | 조회 수 |
|---|---|---|---|---|
| 25 | libblkid - USB Storage의 정보 가져오기 | makersweb | 2018.10.18 | 2707 |
| 24 | tslib 크로스 컴파일과 터치스크린 보정 | makersweb | 2018.08.02 | 4675 |
| 23 |
Ubuntu Linux에서 dbus-c++바인딩 D-Bus 테스트
| makersweb | 2018.03.07 | 10075 |
| 22 | NFS를 통해 파일시스템 공유 | makersweb | 2018.03.05 | 3094 |
| 21 |
Wayland에 대한 간단한 소개
| makersweb | 2017.12.29 | 5775 |
| 20 |
Ubuntu16.04에서 weston구동
| makersweb | 2017.12.28 | 3616 |
| 19 | UVC 장치를 사용할때 v4l2: select timeout 에러 발생 | makersweb | 2017.12.27 | 5060 |
| 18 | Build Qt 4.7.0 for Embedded Linux | makersweb | 2015.05.25 | 7905 |
| 17 |
[IPC]D-Bus 소개
| makersweb | 2015.02.28 | 32402 |
| 16 |
리눅스 프레임버퍼(Linux Frame Buffer)
| makersweb | 2015.02.15 | 10247 |
| 15 | 리눅스 데스크탑 환경 종류 | pjk | 2015.02.11 | 6673 |
| 14 | 디바이스 드라이버에 대해서 | makersweb | 2014.04.19 | 6791 |
| 13 |
리눅스 커널 소스코드 구성도
| makersweb | 2014.03.04 | 7947 |
| 12 | read() 함수, write() 함수 | makersweb | 2014.03.04 | 14067 |
| 11 | 리눅스 디렉터리 구조 | makersweb | 2014.02.28 | 5166 |
| » | file_operations | makersweb | 2014.02.27 | 5494 |
| 9 |
ioctl() 함수
| makersweb | 2014.02.27 | 18017 |
| 8 | 키패드 드라이버 | pjk | 2014.02.12 | 9624 |
| 7 | 1. make | pjk | 2014.02.05 | 4263 |
| 6 | 2. 간단한 Makefile | pjk | 2014.02.05 | 5008 |