How to access information in sysfs




1 Article purpose[edit]

This article provides some information about the sysfs pseudo filesystem usage from the user space.

2 Sysfs (/sys) pseudo filesystem[edit]

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[edit]

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[edit]

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[edit]

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[edit]

System File System (See https://en.wikipedia.org/wiki/Sysfs for more details)

Pulse Width Modulation

Attachments

Discussions