1 | /* SPDX-License-Identifier: GPL-2.0 */ |
2 | #ifndef __API_FS__ |
3 | #define __API_FS__ |
4 | |
5 | #include <stdbool.h> |
6 | #include <unistd.h> |
7 | |
8 | /* |
9 | * On most systems <limits.h> would have given us this, but not on some systems |
10 | * (e.g. GNU/Hurd). |
11 | */ |
12 | #ifndef PATH_MAX |
13 | #define PATH_MAX 4096 |
14 | #endif |
15 | |
16 | #define FS(name) \ |
17 | const char *name##__mountpoint(void); \ |
18 | const char *name##__mount(void); \ |
19 | bool name##__configured(void); \ |
20 | |
21 | /* |
22 | * The xxxx__mountpoint() entry points find the first match mount point for each |
23 | * filesystems listed below, where xxxx is the filesystem type. |
24 | * |
25 | * The interface is as follows: |
26 | * |
27 | * - If a mount point is found on first call, it is cached and used for all |
28 | * subsequent calls. |
29 | * |
30 | * - If a mount point is not found, NULL is returned on first call and all |
31 | * subsequent calls. |
32 | */ |
33 | FS(sysfs) |
34 | FS(procfs) |
35 | FS(debugfs) |
36 | FS(tracefs) |
37 | FS(hugetlbfs) |
38 | FS(bpf_fs) |
39 | |
40 | #undef FS |
41 | |
42 | |
43 | int cgroupfs_find_mountpoint(char *buf, size_t maxlen, const char *subsys); |
44 | |
45 | int filename__read_int(const char *filename, int *value); |
46 | int filename__read_ull(const char *filename, unsigned long long *value); |
47 | int filename__read_xll(const char *filename, unsigned long long *value); |
48 | int filename__read_str(const char *filename, char **buf, size_t *sizep); |
49 | |
50 | int filename__write_int(const char *filename, int value); |
51 | |
52 | int procfs__read_str(const char *entry, char **buf, size_t *sizep); |
53 | |
54 | int sysctl__read_int(const char *sysctl, int *value); |
55 | int sysfs__read_int(const char *entry, int *value); |
56 | int sysfs__read_ull(const char *entry, unsigned long long *value); |
57 | int sysfs__read_xll(const char *entry, unsigned long long *value); |
58 | int sysfs__read_str(const char *entry, char **buf, size_t *sizep); |
59 | int sysfs__read_bool(const char *entry, bool *value); |
60 | |
61 | int sysfs__write_int(const char *entry, int value); |
62 | #endif /* __API_FS__ */ |
63 | |