[LTP] [PATCH v2] lib: Introduce tst_path.h to consolidate system paths
Li Wang
li.wang@linux.dev
Tue May 5 05:04:38 CEST 2026
Cyril Hrubis wrote:
> > @@ -25,8 +25,8 @@ static struct tst_test test = {
> > .setup = setup,
> > .save_restore = (const struct tst_path_val[]) {
> > {"/proc/nonexistent", NULL, TST_SR_SKIP},
> > - {"/proc/sys/kernel/numa_balancing", NULL, TST_SR_TBROK},
> > - {"/proc/sys/kernel/core_pattern", NULL, TST_SR_TCONF},
> > + {PROC_SYS_KERNEL "numa_balancing", NULL, TST_SR_TBROK},
> > + {PROC_SYS_KERNEL "core_pattern", NULL, TST_SR_TCONF},
>
> This is exactly what I'm unsure about, it's not shorter, nor more
> readable.
>
> Maybe if this was PATH_NUMA_BALANCING and PATH_CORE_PATTERN it would be
> shorter and would make much more sense.
v3-A version:
Yes, that ways would be simpler. Then we will finally get v3-A as below:
/* KERNEL */
#define PATH_HOSTNAME "/proc/sys/kernel/hostname"
#define PATH_OSRELEASE "/proc/sys/kernel/osrelease"
#define PATH_VERSION "/proc/sys/kernel/version"
#define PATH_DOMAINNAME "/proc/sys/kernel/domainname"
#define PATH_PRINTK "/proc/sys/kernel/printk"
#define PATH_PID_MAX "/proc/sys/kernel/pid_max"
#define PATH_SHMMAX "/proc/sys/kernel/shmmax"
#define PATH_SHMMNI "/proc/sys/kernel/shmmni"
#define PATH_SHMALL "/proc/sys/kernel/shmall"
#define PATH_MSGMNI "/proc/sys/kernel/msgmni"
#define PATH_SHM_NEXT_ID "/proc/sys/kernel/shm_next_id"
#define PATH_MSG_NEXT_ID "/proc/sys/kernel/msg_next_id"
#define PATH_SEM "/proc/sys/kernel/sem"
#define PATH_CORE_PATTERN "/proc/sys/kernel/core_pattern"
#define PATH_CAP_LAST_CAP "/proc/sys/kernel/cap_last_cap"
#define PATH_NUMA_BALANCING "/proc/sys/kernel/numa_balancing"
#define PATH_IO_URING_DISABLED "/proc/sys/kernel/io_uring_disabled"
#define PATH_OVERFLOWUID "/proc/sys/kernel/overflowuid"
#define PATH_OVERFLOWGID "/proc/sys/kernel/overflowgid"
#define PATH_PERF_EVENT_PARANOID "/proc/sys/kernel/perf_event_paranoid"
#define PATH_PERF_EVENT_MLOCK_KB "/proc/sys/kernel/perf_event_mlock_kb"
#define PATH_PERF_EVENT_MAX_SAMPLE_RATE "/proc/sys/kernel/perf_event_max_sample_rate"
#define PATH_SCHED_RT_PERIOD_US "/proc/sys/kernel/sched_rt_period_us"
#define PATH_SCHED_RT_RUNTIME_US "/proc/sys/kernel/sched_rt_runtime_us"
#define PATH_SCHED_RR_TIMESLICE_MS "/proc/sys/kernel/sched_rr_timeslice_ms"
#define PATH_UNPRIVILEGED_USERNS_CLONE "/proc/sys/kernel/unprivileged_userns_clone"
/* USER */
#define PATH_MAX_USER_NAMESPACES "/proc/sys/user/max_user_namespaces"
/* FS */
#define PATH_FS_PIPE_MAX_SIZE "/proc/sys/fs/pipe-max-size"
#define PATH_FS_PIPE_MAX_PAGES "/proc/sys/fs/pipe-max-pages"
/* VM */
#define PATH_VM_NR_HPAGES "/proc/sys/vm/nr_hugepages"
#define PATH_VM_OVERCOMMIT_HPAGES "/proc/sys/vm/nr_overcommit_hugepages"
#define PATH_VM_DROP_CACHES "/proc/sys/vm/drop_caches"
#define PATH_VM_COMPACT_MEMORY "/proc/sys/vm/compact_memory"
#define PATH_VM_VFS_CACHE_PRESSURE "/proc/sys/vm/vfs_cache_pressure"
#define PATH_VM_OVERCOMMIT_MEMORY "/proc/sys/vm/overcommit_memory"
/* HUGETLB */
#define PATH_MM_HUGEPAGES "/sys/kernel/mm/hugepages/"
#define PATH_MM_THP "/sys/kernel/mm/transparent_hugepage/"
/* KSM */
#define PATH_MM_KSM "/sys/kernel/mm/ksm/"
#define MM_KSM_FP(s) (PATH_MM_KSM s)
/* NETWORK */
#define PATH_NET_IPV4 "/proc/sys/net/ipv4/"
#define NET_IPV4_FP(s) (PATH_NET_IPV4 s)
/* MEMINFO */
#define MEMINFO_HPAGE_TOTAL "HugePages_Total:"
#define MEMINFO_HPAGE_FREE "HugePages_Free:"
#define MEMINFO_HPAGE_RSVD "HugePages_Rsvd:"
#define MEMINFO_HPAGE_SURP "HugePages_Surp:"
#define MEMINFO_HPAGE_SIZE "Hugepagesize:"
> Shortening this to SYS_KERNEL("numa_balancing") would be confusing since
> we have both /proc/sys/ and /sys/
v3-B version:
After looking through all the LTP frequently used knobs (shown above),
I found that '/sys/kernel/' is not quite often used like '/proc/sys/kernel',
so basically we only need to handle the /proc one.
thus, maybe define PROC_KER_FP() or PROC_SYS_KERNEL_FP() instead of
list many KERNEL files in tst_path.h:
/* KERNEL */
#define PROC_KER_FP(s) ("/proc/sys/kernel/" s)
/* USER */
#define PROC_USER_FP(s) ("/proc/sys/user/" s)
...
In testcase used like:
PROC_KER_FP("pid_max");
PROC_KER_FP("shmmni");
PROC_KER_FP("perf_event_mlock_kb");
PROC_USER_FP("max_user_namespaces");
Which version (v3-A or v3-B) do you think is better?
Or any other suggestion?
--
Regards,
Li Wang
More information about the ltp
mailing list