리눅스 디바이스 드라이버 프로그래밍(4) - ioctl 함수, blocked 입력
글 작성자: _rian
ioctl() 시스템 호출
ioctl은 "입출력 제어(I/O control)"의 줄임말로, read(), write() 이외의 장치에 특화된 입출력, 제어 동작을 수행하고자 할 때 사용되는 시스템 호출이다.
하드웨어에 데이터를 쓰거나 읽어올 때, 일반적인 R/W 함수의 동작만으로는 하드웨어의 동작 상태에 따라 처리되지 못하는 데이터가 종종 발생하기 때문에 리눅스 커널에서는 ioctl을 제공한다. ioctl 함수는 read나 write 작업도 처리할 수 있지만, 하드웨어의 제어나 상태를 얻기 위해 주로 사용되는 함수이다.
#include <sys/ioctl.h>
int ioctl(int fd, int cmd, ...);
- cmd 인수로 수행할 동작 지정
- 추가적인 인수 사용 가능
ioctl() 시스템 호출의 구현
ioctl 함수는 old version에서는 디바이스 드라이버에서 함수를 제공했는데, linux kernel 2.6.36 이후에는 제거되었다. 바뀐 새로운 버전에서는 아래와 같은 함수로 변경되었다.
long (*unlocked_ioctl) (struct file *, unsigned int, unsigned long);
long (*compat_ioctl) (struct file *, unsigned int, unsigned long);
'Computer Engineering > 임베디드 시스템' 카테고리의 다른 글
리눅스 디바이스 드라이버 프로그래밍(3) - 7segment led 예제 fpga에 적용시켜보기 (0) | 2019.06.13 |
---|---|
리눅스 디바이스 드라이버 프로그래밍(2) - 모듈 프로그래밍 (0) | 2019.06.12 |
리눅스 디바이스 드라이버 프로그래밍(1) - 디바이스 드라이버 개요, 디바이스 드라이버 종류 (0) | 2019.06.12 |
임베디드 리눅스 커널 프로그래밍(3) - 시스템 호출 함수 구현 (0) | 2019.06.12 |
임베디드 리눅스 커널 프로그래밍(2) - 커널 데이터타입, 커널 인터페이스 함수 (0) | 2019.06.11 |
댓글
이 글 공유하기
다른 글
-
리눅스 디바이스 드라이버 프로그래밍(3) - 7segment led 예제 fpga에 적용시켜보기
리눅스 디바이스 드라이버 프로그래밍(3) - 7segment led 예제 fpga에 적용시켜보기
2019.06.13 -
리눅스 디바이스 드라이버 프로그래밍(2) - 모듈 프로그래밍
리눅스 디바이스 드라이버 프로그래밍(2) - 모듈 프로그래밍
2019.06.12 -
리눅스 디바이스 드라이버 프로그래밍(1) - 디바이스 드라이버 개요, 디바이스 드라이버 종류
리눅스 디바이스 드라이버 프로그래밍(1) - 디바이스 드라이버 개요, 디바이스 드라이버 종류
2019.06.12 -
임베디드 리눅스 커널 프로그래밍(3) - 시스템 호출 함수 구현
임베디드 리눅스 커널 프로그래밍(3) - 시스템 호출 함수 구현
2019.06.12