u32 값을 읽고 쓰기 위한 debugfs 파일 생성

u32 값을 읽고 쓰기 위한 debugfs 파일 생성

다음 사양으로 파일을 만들려고 합니다.

debugfs 하위 디렉터리의 "myfile" 파일은 다음과 같습니다.읽기 전용모든 사용자가 읽고, 읽을 때 jiffies 커널 타이머의 현재 값을 반환해야 합니다.

my_init직접 호출되는 함수에 다음 코드 줄을 작성했습니다 module_init(my_init).

if (!debugfs_create_u32("myfile", 0444, handle, (u32*)&myfile))
        goto fail;

실행할 때 make다음 오류가 발생합니다.

error: invalid use of void expression
  if (!debugfs_create_u32("myfile", 0444, handle, (u32*)&myfile))

누군가가 이 오류를 해결하는 데 도움을 줄 수 있다면 좋을 것입니다. 미리 감사드립니다 :)

답변1

반환 값이 debugfs_create_u32에서 제거되었습니다.2b07021a940ce1cdec736ec0cacad6af77717afcv5.7 입력:

debugfs: debugfs_create_u32()의 반환 값을 제거합니다. debugfs_create_u32()의 반환 값은 필요하지 않기 때문에 아무도 확인하지 않으므로 앞으로는 누구도 이를 시도하지 않도록 반환 값을 void로 설정합니다.

그래서 당신은 그것을 제거할 수 있습니다 if.

나에게 문제는 모듈이 언로드된 후 debugfs 파일을 삭제하고 싶은데 내 항목이 debugfs의 최상위 수준에 있고 NULL이므로 그냥 할 수 없다는 것입니다 debugfs_remove_recursive.

그래서 나는 치과 치료를 받을 것이라고 생각했습니다.

debugfs_lookup("basename", NULL)

여러 항목이 있는 경우 네임스페이스를 너무 많이 오염시키기 때문에 최상위 수준에서 debugfs 항목을 생성하면 안 될 수도 있습니다.

그러나 일부 매우 유사한 호출은 여전히 ​​약간 일관성이 없는 파일을 반환합니다. 예를 들면 다음과 같습니다.

struct dentry *debugfs_create_ulong

그래서 저는 이것이 단지 API 버그라고 생각합니다. 커널 개발자는 내가 한때 생각했던 완벽한 신이 아닌가? :-영형

관련 정보