Last edited 4 years ago

How to access information in sysfs

The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

1 Article purpose[edit source]

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

2 Sysfs (/sys) pseudo filesystem[edit source]

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 source]

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 source]

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 source]

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 source]