커널 모듈/드라이버를 작성하는 동안 대부분의 구조는 일부 특정 기능을 가리 키도록 초기화됩니다. 이것에있는 초심자는 이것의 중요성을 설명 할 수 있었다. 구조체를 사용하여 함수 설정
이 또한 내가 기능이 선언에 있는데도 그들은 항상 구현되지 않은 것을 발견 문자 장치 드라이버를 쓰는 동안 은 내가struct file_operations
을 보았다. 아무도 그걸 도울 수 있을까? 예를 들어, 커널 소스 : 정의 커널/dma.c,
static const struct file_operations proc_dma_operations = {
.open = proc_dma_open,
.read = seq_read,
.llseek = seq_lseek,
.release = single_release,
};
그겁니다 만 proc_dma_open 구현됩니다.
아니요, 다른 기능 (seq_read, seq_lseek 및 single_release)은 다른 곳에서 간단하게 구현됩니다. – fge
@fge 커널 소스의 dma.c, dma.h 또는 seq_file.h에서'seq_read','single_release','seq_lseek'를 찾을 수 없습니다. '' – user567879
이 예제는 다소 이상합니다. 일반적으로 이러한 구조를 채울 때 함수에 대한 포인터로 채 웁니다. 여기서는 몇 가지 "표준"기능 (seq_xxx, fs/seq_file.c에 구현 됨)과 사용자 고유의 기능 (proc_dma_open)을 사용합니다. – ugoren