trijin님께서 fd[n]->f_op->open() 이렇게 open이 호출된다고 하셨죠..

그럼, 다 해결된거네요...구조체 안의 필드는 function pointer이니까

fd에 따라서 f_op의 구조체의 open 필드에 들어있는 함수가 불리어 지겠
군요.

fd[n]->f_op->open() == fd[n]->f_op->xxx_open 이 되겠네요.

trijin wrote..
: (읽으시는분이 없어서 제목을 고쳤습니다... ^^)
: 답변은 감사합니다.
: 그런데... 제가 궁굼한건...
: static struct file_operations xxx_fops =
: {
: open : xxx_open,
: release : xxx_release,
: read : xxx_read,
: write : xxx_write,
: ioctl : xxx_ioctl,
: poll : xxx_poll,
: };
: 에서 어떻게 open이 xxx_open이라고 할수 있는지를 알고싶은데요...
:
: 어플리케이션에서 process가 하나 생성되가지구 task_struct를 만들잖아 요...
: 여기어 어떤 디바이스를 건드려야 한다면 task_struct의 files를 통해 서
: files_struct의 fd[]를 하나 만들어 디바이스를 건들게 되고...
: 이쪽에서 file 이라는 구조체를 통해서 f_dentry로 흘러가고...
: f_dentry를 통해서 inode를 디바이스 드라이버랑 연결하는것까지는 알겠 는
: 데... f_op에 open,release,read,...들의 함수들이랑
: 디바이스 드라이버의 xxx_open, xxx_release, xxx_read...들이랑 연결 되는 부
: 분을 커널 소스에서 찾을수가 없네요...
: 이게 어떻게 연결되는거죠? (아는게 없어서...T.T)
:
: (질문 내용이 이곳의 게시판과 잘 어울리지 않을까 걱정이네요...)