18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */ 28c2ecf20Sopenharmony_ci#ifndef __API_FS__ 38c2ecf20Sopenharmony_ci#define __API_FS__ 48c2ecf20Sopenharmony_ci 58c2ecf20Sopenharmony_ci#include <stdbool.h> 68c2ecf20Sopenharmony_ci#include <unistd.h> 78c2ecf20Sopenharmony_ci 88c2ecf20Sopenharmony_ci/* 98c2ecf20Sopenharmony_ci * On most systems <limits.h> would have given us this, but not on some systems 108c2ecf20Sopenharmony_ci * (e.g. GNU/Hurd). 118c2ecf20Sopenharmony_ci */ 128c2ecf20Sopenharmony_ci#ifndef PATH_MAX 138c2ecf20Sopenharmony_ci#define PATH_MAX 4096 148c2ecf20Sopenharmony_ci#endif 158c2ecf20Sopenharmony_ci 168c2ecf20Sopenharmony_ci#define FS(name) \ 178c2ecf20Sopenharmony_ci const char *name##__mountpoint(void); \ 188c2ecf20Sopenharmony_ci const char *name##__mount(void); \ 198c2ecf20Sopenharmony_ci bool name##__configured(void); \ 208c2ecf20Sopenharmony_ci 218c2ecf20Sopenharmony_ci/* 228c2ecf20Sopenharmony_ci * The xxxx__mountpoint() entry points find the first match mount point for each 238c2ecf20Sopenharmony_ci * filesystems listed below, where xxxx is the filesystem type. 248c2ecf20Sopenharmony_ci * 258c2ecf20Sopenharmony_ci * The interface is as follows: 268c2ecf20Sopenharmony_ci * 278c2ecf20Sopenharmony_ci * - If a mount point is found on first call, it is cached and used for all 288c2ecf20Sopenharmony_ci * subsequent calls. 298c2ecf20Sopenharmony_ci * 308c2ecf20Sopenharmony_ci * - If a mount point is not found, NULL is returned on first call and all 318c2ecf20Sopenharmony_ci * subsequent calls. 328c2ecf20Sopenharmony_ci */ 338c2ecf20Sopenharmony_ciFS(sysfs) 348c2ecf20Sopenharmony_ciFS(procfs) 358c2ecf20Sopenharmony_ciFS(debugfs) 368c2ecf20Sopenharmony_ciFS(tracefs) 378c2ecf20Sopenharmony_ciFS(hugetlbfs) 388c2ecf20Sopenharmony_ciFS(bpf_fs) 398c2ecf20Sopenharmony_ci 408c2ecf20Sopenharmony_ci#undef FS 418c2ecf20Sopenharmony_ci 428c2ecf20Sopenharmony_ci 438c2ecf20Sopenharmony_ciint cgroupfs_find_mountpoint(char *buf, size_t maxlen, const char *subsys); 448c2ecf20Sopenharmony_ci 458c2ecf20Sopenharmony_ciint filename__read_int(const char *filename, int *value); 468c2ecf20Sopenharmony_ciint filename__read_ull(const char *filename, unsigned long long *value); 478c2ecf20Sopenharmony_ciint filename__read_xll(const char *filename, unsigned long long *value); 488c2ecf20Sopenharmony_ciint filename__read_str(const char *filename, char **buf, size_t *sizep); 498c2ecf20Sopenharmony_ci 508c2ecf20Sopenharmony_ciint filename__write_int(const char *filename, int value); 518c2ecf20Sopenharmony_ci 528c2ecf20Sopenharmony_ciint procfs__read_str(const char *entry, char **buf, size_t *sizep); 538c2ecf20Sopenharmony_ci 548c2ecf20Sopenharmony_ciint sysctl__read_int(const char *sysctl, int *value); 558c2ecf20Sopenharmony_ciint sysfs__read_int(const char *entry, int *value); 568c2ecf20Sopenharmony_ciint sysfs__read_ull(const char *entry, unsigned long long *value); 578c2ecf20Sopenharmony_ciint sysfs__read_xll(const char *entry, unsigned long long *value); 588c2ecf20Sopenharmony_ciint sysfs__read_str(const char *entry, char **buf, size_t *sizep); 598c2ecf20Sopenharmony_ciint sysfs__read_bool(const char *entry, bool *value); 608c2ecf20Sopenharmony_ci 618c2ecf20Sopenharmony_ciint sysfs__write_int(const char *entry, int value); 628c2ecf20Sopenharmony_ci#endif /* __API_FS__ */ 63