● 3가지 인터페이스 접근 가능
●
/dev 내부의 디바이스 노드를 통해 접근
– open/read/write/close/ioctl
– character device
– block device
● sysfs filesystem
– 마치 파일처럼 접근(문자열로 쓰고/읽기)
● Network sockets and related APIs
– 소켓처럼 API를 통해
● sysfs의 파일은 디바이스 드라이버의 정보를 가지고 있음.
● class, bus, devices 정보를 유저 스페이스에 전달
●
read/write/ioctl 대비 편하게 접근
● shell에서 접근 가능
– cat
– echo: 특정 파일은 쓰기 가능
● mount /sys
– mount -t sysfs nodev /sys
● 모든 디바이스는 sysfs에서 보임
● /sys
– properties of the devices
– access the device
● LED
– /sys/class/leds
● PWM
– /sys/class/pwm
●
IIO
– /sys/class/iio
● 원래 커널 코드 안에서 객체의 참조 카운터를 효과적으로 관리하기 위해 고안
● 여러가지 기능들이 추가되어서 sysfs와 디바이스 모델의 인터페이스 역할
● sysfs는 kernel object를 활용
● Create a directory in /sys
● Create sysfs file
● kobject_create_and_add => 디렉토리 만듦
struct kobject kobject_create_and_add ( const char name, struct kobject * parent); // parent에 따라 디렉토리 경로가 바뀜.
● Name
– the name for the kobject
● parent
– the parent kobject of this kobject
– kernel_kobj
● “/sys/kernel” 밑에 생성
– NULL
● “/sys” 밑에 생성
● sysfs 파일 생성을 위해서는 kobj_attribute 설정 필요
==> __ATTR 매크로를 통해 생성
● sysfs_create_file을 통해 생성
int sysfs_create_file ( struct kobject * kobj, const struct attribute