1. Article purpose
This article provides some information about the sysfs pseudo filesystem usage from the user space.
2. Sysfs (/sys) pseudo filesystem
Sysfs provides a mean to export kernel data structures, their attributes, and the linkages between them to the user space.
Please refer to sysfs part of pseudo filesystem page.
3. Sysfs usage
Linux kernel provides a documentation[1] about the rules for sysfs usage.
Some examples are also described below with two different approaches for using sysfs entries from the user space:
- Linux application in C language
- bash script.
3.1. Example from Linux application
The below example is a typical sequence for using sysfs entry (here a PWM component):
- open a file descriptor of the sysfs entry file
len=snprintf(buf, sizeof(buf), "/sys/class/pwm/pwmchip0/pwm%d/duty_cycle", pwm_channel);
fd = open(buf, O_RDWR);
- if fd is correctly opened, write/read value in the file: pay attention to the "text" format
if (fd < 0)
{
perror("pwm/duty_cycle");
return fd;
}
- read: store data to buffer
read(fd, buf, sizeof(buf));
- write: write data from buffer
len = snprintf(buf, sizeof(buf), "%d", 900000);
write(fd, buf, len);
- close file descriptor
close(fd);
3.2. Example for shell command / bash script
Operations on sysfs entries can be done by using command lines (i.e. echo for writing, cat for reading).
In this way, it is possible to use a bash script to execute a configuration sequence, similarly to what a user would do by typing multiple shell commands.
An example is provided in How_to_use_PWM_with_sysfs_interface.
4. References