sysfs 모듈 작성 방법을 배우려고하는데 기본 초기화시 혼란 스럽습니다. kobject.h 파일을보고있는 this 문서에는 sysfs 항목을 만드는 것과 관련된 여러 가지 기능이 있습니다. 그것의 모습에서 Sysfs 모듈 작성
는, 함수는 "kobject_init_and_add"다음 소요 사용할 수있는 권리 것처럼 보인다90 int kobject_init_and_add(struct kobject *kobj,
91 struct kobj_type *ktype, struct kobject *parent,
92 const char *fmt, ...);
구조체 kobject 및 구조체 kobj_type 충분히 간단하지만 이해가 안 돼요 * 부모 kobject와 * fmt cstring이 될 것으로 예상되는 것.
또한 이러한 객체를 초기화 한 후 exit_module 함수에서 제거해야하지만 두 가지 옵션, kobject_del 및 kobject_puts가 있습니다. 이들의 차이점은 무엇입니까?
혼란 스러울 부분은 대답을 검색하는 동안 kobject_register와 같은 기능을 사용하는 지침서가 있지만 기능이 실제로 존재하지 않는다는 사실에서 비롯된 것입니다.
sysfs_create_group 예제의 & module_attr과 같은 속성의 경우 & module_attr은 어디에 정의되어 있습니까? 그게 내가 문제가있는 곳인 것 같아. 나는 당신이 __ATTR 매크로를 사용할 수 있다고 읽었지만 그것은 나를 위해 오류를 일으키는 것입니다. – Zephyr
아래와 같이 정의 할 수 있습니다. static struct attribute_group module_attr = { .attrs = module_attribute, }; –
제 질문은, 당신이 사용하는 'module_attribute'가 미리 정의 될 필요가 있을까, 아니면 그냥 선언 할 것인가하는 것입니다. 정적 ssize_t의 module_show_minimum_value (구조체 kobject * kobj, 구조체 kobj_attribute * ATTR, 숯불 * 버피) { // 추가 – Zephyr