도와주세요!!
글 수 15,339
2002.12.18 12:54:41 (*.241.222.80)
6673
디바이스 드라이버 초기화 할때,
if( !register_chrdev( KEYPAD_MAJOR, KEYPAD_NAME, &keypad_fops ) )
를 이용하여 장치를 등록하져.
여기서 keypad_fops는 file_operations의 구조체입니다.
아래와 같이 open, write, read등등의 함수를 아래와 같이
본인이 만든 함수와 매칭시켜줍니다.
static struct file_operations keypad_fops =
{
open : xxx_open,
release : xxx_release,
read : xxx_read,
write : xxx_write,
ioctl : xxx_ioctl,
poll : xxx_poll,
};
참고로 file_operations 구조체는 fs.h에 정의 되어 있습니다.
trijin wrote..
: 책 보다가 궁굼한게 있어서 여기 질문합니다.
: (이런 질문을 해도 되나?)
:
: application에서 어떤 디바이스를 이용하려면 커널쪽에서
: file fd[n]을 하나를 이용하게 되고, fd[n]구조체에 포함된것 중에
: file_operations f_op를 이용해서 드라이버의 내용에 접근하는데...
: 이때 f_op와 device driver에서 생성한
: file_operation xxx_fops는 어떻게 연결되는건가요?
:
: 그러니깐
: 만약에...
: file_operations함수 open, release, read, write,...
: 의 함수들을 내가 짠 디바이스 드라이버의
: xxx_open, xxx_release, xxx_read, xxx_write,... 가 있다면
: 커널쪽에서
: fd[n]->f_op->open() 이 디바이스 드라이버의 xxx_open()
: 이라는것을 어떻게 알게되는건가요?
:
: 커널 소스를 뒤져봐도 잘 모르겠네요...
if( !register_chrdev( KEYPAD_MAJOR, KEYPAD_NAME, &keypad_fops ) )
를 이용하여 장치를 등록하져.
여기서 keypad_fops는 file_operations의 구조체입니다.
아래와 같이 open, write, read등등의 함수를 아래와 같이
본인이 만든 함수와 매칭시켜줍니다.
static struct file_operations keypad_fops =
{
open : xxx_open,
release : xxx_release,
read : xxx_read,
write : xxx_write,
ioctl : xxx_ioctl,
poll : xxx_poll,
};
참고로 file_operations 구조체는 fs.h에 정의 되어 있습니다.
trijin wrote..
: 책 보다가 궁굼한게 있어서 여기 질문합니다.
: (이런 질문을 해도 되나?)
:
: application에서 어떤 디바이스를 이용하려면 커널쪽에서
: file fd[n]을 하나를 이용하게 되고, fd[n]구조체에 포함된것 중에
: file_operations f_op를 이용해서 드라이버의 내용에 접근하는데...
: 이때 f_op와 device driver에서 생성한
: file_operation xxx_fops는 어떻게 연결되는건가요?
:
: 그러니깐
: 만약에...
: file_operations함수 open, release, read, write,...
: 의 함수들을 내가 짠 디바이스 드라이버의
: xxx_open, xxx_release, xxx_read, xxx_write,... 가 있다면
: 커널쪽에서
: fd[n]->f_op->open() 이 디바이스 드라이버의 xxx_open()
: 이라는것을 어떻게 알게되는건가요?
:
: 커널 소스를 뒤져봐도 잘 모르겠네요...