'sysfs'에 해당하는 글 1건

sysfs

카테고리 없음 2011. 11. 2. 23:11
int __must_check sysfs_create_group(struct kobject *kobj, const struct attribute_group *grp)

sysfs 파일시스템에 새 파일을 생성하는 함수

첫번째 인자(kobj) - 새롭게 생성할 파일이 위치할 kobject의 포인터

ex) kernel/kernel/power/fbearly_suspend.c에서는 wait_for_fb_sleep, wait_for_fb_wake를 /sys/power 밑에 생성하였다.

(아마도) 그래서 첫번째 인자로 power_kobj를 넘겨준것 같다.

두번째 인자(grp) - 생성할 파일들을 기술한 attribute_group의 포인터

wait_for_fb_sleep, wait_for_fb_wake라는 파일을 생성하기 위해 각 각을 kobj_attribute구조체로 생성하였다.
(fbearly_suspend.c에서는 power_ro_attr()매크로를 이용하였다.)


해당 구조체는 다음과 같이 정의되어 있다.

struct kobj_attribute {
struct attribute attr;
ssize_t (*show)(struct kobject *kobj, struct kobj_attribute *attr, char *buf);
ssize_t (*store)(struct kobject *kobj, struct kobj_attribute *attr, const char *buf, size_t count);
};

attribute 구조체와 두개의 함수 포인터를 멤버로 가지고 있다.
attribute구조체는 다음과 같으며 해당 파일의 이름,소유주 모듈, 접근권한을 설정해줄 수 있다.

 
struct attribute {
           char            * name;
           
struct module   *owner;
           
mode_t          mode;
 
};


show와 store 멤버는 각각 해당 파일이 읽힐때, 쓰기를 할때 호출되는 함수이다. 
해당 파일이 읽혔을때 보여줄 값은 show의 buf에 쓰면 되고
해당 파일에 값이 쓰여지면 해당 값은 store의 buf인자로 넘어온다.

리턴값은 각각 buf에서 쓰여진, 읽혀진 바이트 수이다.

reference :
http://mindwave.tistory.com/85 

WRITTEN BY
RootFriend
개인적으로... 나쁜 기억력에 도움되라고 만들게되었습니다.

,