[질문] kernel level에서 HDIO_DRIVE_CMD 보내려면 어찌해야 할까요?
글쓴이: gandarf / 작성시간: 목, 2009/07/02 - 8:21오후
안녕하세요?
linux kernel 2.6.18에서 HDD 온도를 읽어오는 device driver를 만들고 있는데 시작부터 좀 막막하네요.
application으로 구현은 미리 해 뒀는데 이걸 device driver로 다시 구현해야 하는 상황입니다.
첨엔 단순하게 생각했는데, kernel level에서 사용하지 못하는 함수들이 있어서 고민입니다.
단순화 한 application code입니다.
void read_temp(void) { __u8 data[4+512] = {WM_SMART, 0xE0, 0xD5, 1, }; int fd = open("/dev/sda/", O_RDONLY); ioctl(fd, HDIO_DRIVE_CMD, &data); printf("HDD temperature is %d\n", data[204]); close(fp); }
이걸 device driver로 구현을 해야 하는데 당장 open부터 걸리네요.
open이야 filp_open으로 처리한다고 해도 그 뒷단이 너무 지저분하게 될것 같습니다.
어떻게 해야 잘 했다고 소문이 날까요? ^^
따듯한 도움의 손길을 바랍니다~
Forums:
libata 쪽에 특별한
libata 쪽에 특별한 설비도 없고...
built-in 으로만 사용하실 거라면 vfs_ioctl() 계열이 있지만 module 로 하실거라면 이것도 못쓰고...
계속 모니터 해야한다면 procfs 를 통해 유저모드 데몬이 주기적으로 입력하게 만들 수 있고,
필요할 때 알아내기만 하면 된다면 call_usermodehelper() 로 어플리케이션을 실행시켜서 procfs 로 입력받도록 만들 수 있고요.
OTL
댓글 달기