Linux/Device Driver

    read(), write()

    https://rorsi.tistory.com/65 이전 open(), close()에 이어서 이번에는 read(), write()를 구현해 보고자 한다. driver.c #include #include #include #include #include #include #include #include #include #include #define DEVICE_NAME "driver" static dev_t device_dev; static struct class *device_class; static struct cdev device_cdev; static char *buffer = NULL; int device_open(struct inode *inode, struct file *filp); int de..

    open(), close()

    https://rorsi.tistory.com/61 디바이스 드라이버 디바이스 드라이버(Device Driver) 일반적으로 디바이스란 컴퓨터에 물려있는 여러 주변장치들을 뜻한다. 네트워크 어댑터, 오디오, 키보드, 마우스 등이 디바이스에 해당하고, 이러한 디바이스들 rorsi.tistory.com 위 포스트에 이어서 디바이스 드라이버를 만들었다면 이제 그 드라이버를 이용해 open(), close()를 구현해 보고자 한다. driver.c #include #include #include #include #include #include #include #include #include #include #define DEVICE_NAME "driver" static dev_t device_dev; stati..

    ioctl()

    ioctl ioctl() 함수란 하드웨어의 제어와 상태 정보를 얻기 위해 제공되는 함수이다. read(), write()를 이용해서 데이터를 읽고 쓰는 등의 기능은 가능하지만 하드웨어를 제어하거나 상태 정보를 확인하려면 ioctl()를 이용해야 한다. long (*unlocked_ioctl) (struct file *, unsigned int, unsigned long); long (*compat_ioctl) (struct file *, unsigned int, unsigned long); 첫 번째 인자는 open 한 디바이스 드라이버의 fd 값이다 두 번째 인자는 디바이스에게 전달할 명령이다. 이 명령에 따라서 디바이스를 컨트롤할 수 있다. 에러시 -1을 반환, 다른 시스템 호출과 같이 성공하면 0보다..

    디바이스 드라이버

    디바이스 드라이버(Device Driver) 일반적으로 디바이스란 컴퓨터에 물려있는 여러 주변장치들을 뜻한다. 네트워크 어댑터, 오디오, 키보드, 마우스 등이 디바이스에 해당하고, 이러한 디바이스들을 컨트롤하기 위한 디바이스 드라이버가 존재한다. 응용프로그램이 하드웨어를 직접 컨트롤하는 것이 아니라 디바이스 드라이버를 통해서 하드웨어를 조종한다. 수많은 하드웨어 장치를 컨트롤하기 위해서는 그 규격에 맞춰서 개발을 해야 하는데 이는 매우 어렵고 비효율적인 일이다. 리눅스 시스템은 VFS(Virtual File System)기능을 지원하는데, 리눅스는 디바이스를 /dev 디렉토리에 하나의 파일로써 취급한다. 디바이스 드라이버 또한 파일로 관리된다. /dev/ 아래에 존재하는 파일들이 바로 디바이스 드라이버 ..