deleted>Frq07399 mNo edit summary |
Registered User mNo edit summary |
||
Line 1: | Line 1: | ||
== Article purpose == | == Article purpose == | ||
This article provides some information about the sysfs pseudo filesystem usage from the user space. | This article provides some information about the sysfs pseudo filesystem usage from the user space. | ||
Line 27: | Line 18: | ||
* open a file descriptor of the sysfs entry file | * open a file descriptor of the sysfs entry file | ||
<syntaxhighlight lang="c" line start="10"> | |||
len=snprintf(buf, sizeof(buf), "/sys/class/pwm/pwmchip0/pwm%d/duty_cycle", pwm_channel); | len=snprintf(buf, sizeof(buf), "/sys/class/pwm/pwmchip0/pwm%d/duty_cycle", pwm_channel); | ||
fd = open(buf, O_RDWR); | fd = open(buf, O_RDWR); | ||
</ | </syntaxhighlight> | ||
*if fd is correctly opened, write/read value in the file: pay attention to the "text" format | *if fd is correctly opened, write/read value in the file: pay attention to the "text" format | ||
< | <syntaxhighlight lang="c" line start="12"> | ||
if (fd < 0) | if (fd < 0) | ||
{ | { | ||
Line 38: | Line 29: | ||
return fd; | return fd; | ||
} | } | ||
</ | </syntaxhighlight> | ||
:*read: store data to buffer | :*read: store data to buffer | ||
< | <syntaxhighlight lang="c" line start="18"> | ||
read(fd, buf, sizeof(buf)); | read(fd, buf, sizeof(buf)); | ||
</ | </syntaxhighlight> | ||
:*write: write data from buffer | :*write: write data from buffer | ||
< | <syntaxhighlight lang="c" line start="20"> | ||
len = snprintf(buf, sizeof(buf), "%d", 900000); | len = snprintf(buf, sizeof(buf), "%d", 900000); | ||
write(fd, buf, len); | write(fd, buf, len); | ||
</ | </syntaxhighlight> | ||
* close file descriptor | * close file descriptor | ||
< | <syntaxhighlight lang="c" line start="30"> | ||
close(fd); | close(fd); | ||
</ | </syntaxhighlight> | ||
=== Example for shell command / bash script === | === Example for shell command / bash script === | ||
Line 62: | Line 53: | ||
== References == | == References == | ||
<references /> | <references /> | ||
<noinclude> | |||
[[Category:How to trace and debug]] | |||
[[Category:OpenSTLinux filesystem]] | |||
{{PublicationRequestId | 10265 | 2019-01-16 |BrunoB}} | |||
</noinclude> |
Latest revision as of 11:31, 24 January 2020
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