| .\" Copyright (c) 2017 by Michael Kerrisk <mtk.manpages@gmail.com> |
| .\" |
| .\" %%%LICENSE_START(VERBATIM) |
| .\" Permission is granted to make and distribute verbatim copies of this |
| .\" manual provided the copyright notice and this permission notice are |
| .\" preserved on all copies. |
| .\" |
| .\" Permission is granted to copy and distribute modified versions of this |
| .\" manual under the conditions for verbatim copying, provided that the |
| .\" entire resulting derived work is distributed under the terms of a |
| .\" permission notice identical to this one. |
| .\" |
| .\" Since the Linux kernel and libraries are constantly changing, this |
| .\" manual page may be incorrect or out-of-date. The author(s) assume no |
| .\" responsibility for errors or omissions, or for damages resulting from |
| .\" the use of the information contained herein. The author(s) may not |
| .\" have taken the same level of care in the production of this manual, |
| .\" which is licensed free of charge, as they might when working |
| .\" professionally. |
| .\" |
| .\" Formatted or processed versions of this manual, if unaccompanied by |
| .\" the source, must acknowledge the copyright and authors of this work. |
| .\" %%%LICENSE_END |
| .\" |
| .TH SYSFS 5 2018-04-30 "Linux" "Linux Programmer's Manual" |
| .SH NAME |
| sysfs \- a filesystem for exporting kernel objects |
| .SH DESCRIPTION |
| The |
| .B sysfs |
| filesystem is a pseudo-filesystem which provides an interface to |
| kernel data structures. |
| (More precisely, the files and directories in |
| .B sysfs |
| provide a view of the |
| .IR kobject |
| structures defined internally within the kernel.) |
| The files under |
| .B sysfs |
| provide information about devices, kernel modules, filesystems, |
| and other kernel components. |
| .PP |
| The |
| .B sysfs |
| filesystem is commonly mounted at |
| .IR /sys . |
| Typically, it is mounted automatically by the system, |
| but it can also be mounted manually using a command such as: |
| .PP |
| .in +4n |
| .EX |
| mount \-t sysfs sysfs /sys |
| .EE |
| .in |
| .PP |
| Many of the files in the |
| .B sysfs |
| filesystem are read-only, |
| but some files are writable, allowing kernel variables to be changed. |
| To avoid redundancy, |
| symbolic links are heavily used to connect entries across the filesystem tree. |
| .\" |
| .SS Files and directories |
| The following list describes some of the files and directories under the |
| .I /sys |
| hierarchy. |
| .TP |
| .IR /sys/block |
| This subdirectory contains one symbolic link for each block device |
| that has been discovered on the system. |
| The symbolic links point to corresponding directories under |
| .IR /sys/devices . |
| .TP |
| .IR /sys/bus |
| This directory contains one subdirectory for each of the bus types |
| in the kernel. |
| Inside each of these directories are two subdirectories: |
| .RS |
| .TP |
| .IR devices |
| This subdirectory contains symbolic links to entries in |
| .IR /sys/devices |
| that correspond to the devices discovered on this bus. |
| .TP |
| .IR drivers |
| This subdirectory contains one subdirectory for each device driver |
| that is loaded on this bus. |
| .RE |
| .TP |
| .IR /sys/class |
| This subdirectory contains a single layer of further subdirectories |
| for each of the device classes that have been registered on the system |
| (e.g., terminals, network devices, block devices, graphics devices, |
| sound devices, and so on). |
| Inside each of these subdirectories are symbolic links for each of the |
| devices in this class. |
| These symbolic links refer to entries in the |
| .IR /sys/devices |
| directory. |
| .TP |
| .IR /sys/class/net |
| Each of the entries in this directory is a symbolic link |
| representing one of the real or virtual networking devices |
| that are visible in the network namespace of the process |
| that is accessing the directory. |
| Each of these symbolic links refers to entries in the |
| .IR /sys/devices |
| directory. |
| .TP |
| .IR /sys/dev |
| This directory contains two subdirectories |
| .IR block / |
| and |
| .IR char/ , |
| corresponding, respectively, |
| to the block and character devices on the system. |
| Inside each of these subdirectories are symbolic links with names of the form |
| .IR major-ID : minor-ID , |
| where the ID values correspond to the major and minor ID of a specific device. |
| Each symbolic link points to the |
| .B sysfs |
| directory for a device. |
| The symbolic links inside |
| .IR /sys/dev |
| thus provide an easy way to look up the |
| .B sysfs |
| interface using the device IDs returned by a call to |
| .BR stat (2) |
| (or similar). |
| .IP |
| The following shell session shows an example from |
| .IR /sys/dev : |
| .IP |
| .in +4n |
| .EX |
| $ \fBstat \-c "%t %T" /dev/null\fP |
| 1 3 |
| $ \fBreadlink /sys/dev/char/1\\:3\fP |
| \&../../devices/virtual/mem/null |
| $ \fBls \-Fd /sys/devices/virtual/mem/null\fP |
| /sys/devices/virtual/mem/null/ |
| $ \fBls \-d1 /sys/devices/virtual/mem/null/*\fP |
| /sys/devices/virtual/mem/null/dev |
| /sys/devices/virtual/mem/null/power/ |
| /sys/devices/virtual/mem/null/subsystem@ |
| /sys/devices/virtual/mem/null/uevent |
| .EE |
| .in |
| .TP |
| .IR /sys/devices |
| This is a directory that contains a filesystem representation of |
| the kernel device tree, |
| which is a hierarchy of |
| .I device |
| structures within the kernel. |
| .TP |
| .IR /sys/firmware |
| This subdirectory contains interfaces for viewing and manipulating |
| firmware-specific objects and attributes. |
| .TP |
| .IR /sys/fs |
| This directory contains subdirectories for some filesystems. |
| A filesystem will have a subdirectory here only if it chose |
| to explicitly create the subdirectory. |
| .TP |
| .IR /sys/fs/cgroup |
| This directory conventionally is used as a mount point for a |
| .BR tmpfs (5) |
| filesystem containing mount points for |
| .BR cgroups (7) |
| filesystems. |
| .TP |
| .IR /sys/fs/smackfs |
| The directory contains configuration files for the SMACK LSM. |
| See the kernel source file |
| .IR Documentation/admin-guide/LSM/Smack.rst . |
| .TP |
| .IR /sys/hypervisor |
| [To be documented] |
| .TP |
| .IR /sys/kernel |
| This subdirectory contains various files and subdirectories that provide |
| information about the running kernel. |
| .TP |
| .IR /sys/kernel/cgroup/ |
| For information about the files in this directory, see |
| .BR cgroups (7). |
| .TP |
| .IR /sys/kernel/debug/tracing |
| Mount point for the |
| .I tracefs |
| filesystem used by the kernel's |
| .I ftrace |
| facility. |
| (For information on |
| .IR ftrace , |
| see the kernel source file |
| .IR Documentation/trace/ftrace.txt .) |
| .TP |
| .IR /sys/kernel/mm |
| This subdirectory contains various files and subdirectories that provide |
| information about the kernel's memory management subsystem. |
| .TP |
| .IR /sys/kernel/mm/hugepages |
| This subdirectory contains one subdirectory for each of the |
| huge page sizes that the system supports. |
| The subdirectory name indicates the huge page size (e.g., |
| .IR hugepages-2048kB ). |
| Within each of these subdirectories is a set of files |
| that can be used to view and (in some cases) change settings |
| associated with that huge page size. |
| For further information, see the kernel source file |
| .IR Documentation/vm/hugetlbpage.txt . |
| .TP |
| .IR /sys/module |
| This subdirectory contains one subdirectory |
| for each module that is loaded into the kernel. |
| The name of each directory is the name of the module. |
| In each of the subdirectories, there may be following files: |
| .RS |
| .TP |
| .I coresize |
| [to be documented] |
| .TP |
| .I initsize |
| [to be documented] |
| .TP |
| .I initstate |
| [to be documented] |
| .TP |
| .I refcnt |
| [to be documented] |
| .TP |
| .I srcversion |
| [to be documented] |
| .TP |
| .I taint |
| [to be documented] |
| .TP |
| .I uevent |
| [to be documented] |
| .TP |
| .I version |
| [to be documented] |
| .RE |
| .IP |
| In each of the subdirectories, there may be following subdirectories: |
| .RS |
| .TP |
| .I drivers |
| [To be documented] |
| .TP |
| .I holders |
| [To be documented] |
| .TP |
| .I notes |
| [To be documented] |
| .TP |
| .I parameters |
| This directory contains one file for each module parameter, |
| with each file containing the value of the corresponding parameter. |
| Some of these files are writable, allowing the |
| .TP |
| .I sections |
| This subdirectories contains files with information about module sections. |
| This information is mainly used for debugging. |
| .TP |
| .I |
| [To be documented] |
| .RE |
| .TP |
| .IR /sys/power |
| [To be documented] |
| .SH VERSIONS |
| The |
| .B sysfs |
| filesystem first appeared in Linux 2.6.0. |
| .SH CONFORMING TO |
| The |
| .B sysfs |
| filesystem is Linux-specific. |
| .SH NOTES |
| This manual page is incomplete, possibly inaccurate, and is the kind |
| of thing that needs to be updated very often. |
| .SH SEE ALSO |
| .BR proc (5), |
| .BR udev (7) |
| .PP |
| P. Mochel. (2005). |
| .IR "The sysfs filesystem" . |
| Proceedings of the 2005 Ottawa Linux Symposium. |
| .\" https://www.kernel.org/pub/linux/kernel/people/mochel/doc/papers/ols-2005/mochel.pdf |
| .PP |
| The kernel source file |
| .I Documentation/filesystems/sysfs.txt |
| and various other files in |
| .IR Documentation/ABI |
| and |
| .IR Documentation/*/sysfs.txt |