summaryrefslogtreecommitdiff
path: root/Base/usr/share/man/man7/proc.md
blob: 0a724554da154a11776c027513e06239a1023e5b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
## Name

proc - SerenityOS ProcFS

## Description

The kernel can expose process related information in /proc.
This functionality is used by various userland programs.
Most of the output layout in the ProcFS nodes is JSON.

### Global entries

* **`all`** - this node exports a list of all processes that currently exist.
* **`cmdline`** - this node exports the kernel boot commandline that was passed to
from the bootloader.
* **`cpuinfo`** - this node exports information on the CPU.
* **`devices`** - this node exports information on all devices that might be represented
by a device file.
* **`df`** - this node exports information on mounted filesystems and basic statistics on
them.
* **`dmesg`** - this node exports information from the kernel log.
* **`interrupts`** - this node exports information on all IRQ handlers and basic statistics on
them. 
* **`kernel_base`** - this node reveals the loading address of the kernel.
* **`keymap`** - this node exports information on current used keymap.
* **`memstat`** - this node exports statistics on memory allocation in the kernel.
* **`pci`** - this node exports information on all currently-discovered PCI devices in the system.

### `net` directory

* **`adapters`** - this node exports information on all currently-discovered network adapters.
* **`arp`** - this node exports information on the kernel ARP table.
* **`local`** - this node exports information on local (unix) sockets.
* **`tcp`** - this node exports information on tcp sockets.
* **`udp`** - this node exports information on udp sockets.

### `sys` directory

This subdirectory includes global settings of the kernel.

* **`caps_lock_to_ctrl`** - this node controls remapping of of caps lock to the Ctrl key.
* **`kmalloc_stacks`** - this node controls whether to send information about kmalloc to debug log.
* **`ubsan_is_deadly`** - this node controls the deadliness of the kernel undefined behavior
sanitizer errors.

### Per process entries

* **`cwd`** - a symbolic link to current work directory of a process.
* **`exe`** - a symbolic link to the executable binary of the process.
* **`fds`** - this node exports information on all currently open file descriptors.
* **`fd`** - this directory lists all currently open file descriptors.
* **`perf_events`** - this node exports information being gathered during a profile on a process.
* **`pledge`** - this node exports information on all the pledge requests and promises of a process.
* **`stacks`** - this directory lists all stack traces of process threads.
* **`unveil`** - this node exports information on all the unveil requests of a process.
* **`vm`** - this node exports information on virtual memory mappings of a process.

### Consistency and stability of data across multiple read operations

When opening a data node, the kernel generates the required data so it's prepared
for read operation when requested to. However, in order to ensure that multiple reads
will not create a corrupted data from that data node, a read operation alone will
not inquire the kernel to refresh the data.
To keep data output being refreshed, the userland has to re-open the data node with a 
new file descriptor, or to perform the `lseek` syscall on the open file descriptor to
reset the the offset to 0.

## See also

* [`mount`(2))](../man2/mount.md).
* [`boot_parameters`(7))](boot_parameters.md).
* [`pledge`(2))](../man2/pledge.md).
* [`unveil`(2))](../man2/unveil.md).