this fabulous tutorial에 설명 된대로 Linux에 문자 장치 드라이버 커널 모듈을 만들었습니다. 드라이버는 잘 작동하지만 난 (기능 write()
를 호출) 호출 사용자 프로세스가 일정 시간 동안 차단되도록 커널 모듈 기능을문자 장치 드라이버 커널 모듈 작성자에게 절전 모드를 설정하는 방법
static ssize_t device_write(struct file *filp, const char *buff, size_t len, loff_t *off)
을 확장 할 필요가있다.
내 커널 모듈에 device_write
의 linux/delay.h
을 포함하고 msleep(1000)
을 사용하여 CPU를 대기시킬 수 있습니다. 그러나 이것이 사용자 공간에서 write()
의 함수 호출을 차단하는 올바른 방법인지는 모르겠습니다.
리소스와 동시 액세스하는 것과 혼동하지 마십시오. 그게 내 요점이 아니야. 하드웨어 데이터를 쓸 때까지 사용자 공간 프로그램의 write()
호출을 차단하기 만합니다. 시간이 걸립니다. 이 작업이 완료되면 작업이 성공했는지 알 수 있으며 device_write
을 통해 적절한 상태 호출을 write
사용자 공간 프로그램 호출로 반환 할 수 있습니다.
작업이 완료되면 "추측 하시겠습니까?" –
힌트 : 어떻게하는지 알아 내고 싶다면, 일반적으로 비슷한 것을하는 기존 메커니즘을 찾아서 어떻게 작동하는지 살펴보십시오. 매우 일반적인 I/O 블로킹 드라이버를 설명하는 것처럼 보이기 때문에 비슷한 예제를 찾는 데 어려움이 없어야합니다. –