error: unknownfield ‘ioctl’ specified in initializer
비동기식 알림은 디바이스가 준비되면 애플리케이션에 사전 통지하므로 디바이스 상태를 조회할 필요가 없습니다.
이 점은 하드웨어의 "중단"개념과 매우 유사하며, 비교적 정확한 명칭은 "신호 구동의 비동기식 I/O"이다.신호는 소프트웨어 차원에서 인터럽트 메커니즘에 대한 시뮬레이션으로 원리적으로 하나의 프로세스가 하나의 신호를 수신하는 것은 프로세서가 인터럽트 요청을 수신하는 것과 같다.
1) 드라이브를 2.6.32에서 2.6.36으로 이식하는 중 오류
/home/kernel_test/globalfifo/globalfifo.c:240:2:error: unknown field 'ioctl' specified in initializer
2.6.36의 파일을 발견했습니다_운영 구조에 중대한 변화가 생겼다.(그러나 기본적인 사상은 변하지 않는다)
기존 ioctl 구성원을 취소하고 새 구성원으로 추가
long(*unlocked_ioctl) (struct file *, unsigned int, unsigned long);
long(*compat_ioctl) (struct file *, unsigned int, unsigned long);
2)/home/kernel_test/globalfifo/globalfifo.c:245:2:warning: initialization from incompatible pointer type
이 Warnning이 나타나는 이유 "호환되지 않는 바늘 형식 초기화"는 당신이 정의한 함수 형식과 인터페이스 함수의 형식이 다르기 때문입니다.
다음을 수행합니다.
ssize_t (*read) (struct file *, char __user *, size_t, loff_t *);
ssize_t(*write) (struct file *, const char __user *, size_t, loff_t *);
콘스트를 적게 쓰면 warning을 일으킬 수 있습니다. 왜냐하면 여기서 콘스트가 하는 역할은 함수가 바늘로 들어오는 값을 바꾸는 것을 피하는 것입니다.
237
238 /* */
239 static const struct file_operations globalfifo_fops = {
240 .owner = THIS_MODULE,
241 .read = globalfifo_read,
242 .write = globalfifo_write,
243 //.ioctl = globalfifo_ioctl,
244 .unlocked_ioctl = globalfifo_ioctl,
245 .poll = globalfifo_poll,
246 .fasync = globalfifo_fasync, /* */
247 .open = globalfifo_open,
248 .release = globalfifo_release,
249 };
250
251
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Ruby의 구조체 클래스은 접근자 메서드가 있는 속성 모음입니다. 클래스를 명시적으로 작성할 필요 없이. Struct 클래스는 구성원 및 해당 값 집합을 포함하는 새 하위 클래스를 생성합니다. 각 멤버에 대해 #attr_accessor 와...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.