xref: /aosp_15_r20/external/ltp/include/tst_hugepage.h (revision 49cdfc7efb34551c7342be41a7384b9c40d7cab7)
1*49cdfc7eSAndroid Build Coastguard Worker // SPDX-License-Identifier: GPL-2.0-or-later
2*49cdfc7eSAndroid Build Coastguard Worker /*
3*49cdfc7eSAndroid Build Coastguard Worker  * Copyright (c) 2019 Red Hat, Inc.
4*49cdfc7eSAndroid Build Coastguard Worker  */
5*49cdfc7eSAndroid Build Coastguard Worker 
6*49cdfc7eSAndroid Build Coastguard Worker #ifndef TST_HUGEPAGE__
7*49cdfc7eSAndroid Build Coastguard Worker #define TST_HUGEPAGE__
8*49cdfc7eSAndroid Build Coastguard Worker 
9*49cdfc7eSAndroid Build Coastguard Worker #define PATH_HUGEPAGES	"/sys/kernel/mm/hugepages/"
10*49cdfc7eSAndroid Build Coastguard Worker #define PATH_NR_HPAGES	"/proc/sys/vm/nr_hugepages"
11*49cdfc7eSAndroid Build Coastguard Worker #define PATH_OC_HPAGES "/proc/sys/vm/nr_overcommit_hugepages"
12*49cdfc7eSAndroid Build Coastguard Worker 
13*49cdfc7eSAndroid Build Coastguard Worker #define MEMINFO_HPAGE_TOTAL  "HugePages_Total:"
14*49cdfc7eSAndroid Build Coastguard Worker #define MEMINFO_HPAGE_FREE   "HugePages_Free:"
15*49cdfc7eSAndroid Build Coastguard Worker #define MEMINFO_HPAGE_RSVD   "HugePages_Rsvd:"
16*49cdfc7eSAndroid Build Coastguard Worker #define MEMINFO_HPAGE_SURP   "HugePages_Surp:"
17*49cdfc7eSAndroid Build Coastguard Worker #define MEMINFO_HPAGE_SIZE   "Hugepagesize:"
18*49cdfc7eSAndroid Build Coastguard Worker 
19*49cdfc7eSAndroid Build Coastguard Worker extern char *nr_opt; /* -s num   Set the number of the been allocated hugepages */
20*49cdfc7eSAndroid Build Coastguard Worker extern char *Hopt;   /* -H /..   Location of hugetlbfs, i.e.  -H /var/hugetlbfs */
21*49cdfc7eSAndroid Build Coastguard Worker 
22*49cdfc7eSAndroid Build Coastguard Worker enum tst_hp_policy {
23*49cdfc7eSAndroid Build Coastguard Worker 	TST_REQUEST,
24*49cdfc7eSAndroid Build Coastguard Worker 	TST_NEEDS,
25*49cdfc7eSAndroid Build Coastguard Worker };
26*49cdfc7eSAndroid Build Coastguard Worker 
27*49cdfc7eSAndroid Build Coastguard Worker #define TST_NO_HUGEPAGES ((unsigned long)-1)
28*49cdfc7eSAndroid Build Coastguard Worker 
29*49cdfc7eSAndroid Build Coastguard Worker struct tst_hugepage {
30*49cdfc7eSAndroid Build Coastguard Worker 	const unsigned long number;
31*49cdfc7eSAndroid Build Coastguard Worker 	enum  tst_hp_policy policy;
32*49cdfc7eSAndroid Build Coastguard Worker };
33*49cdfc7eSAndroid Build Coastguard Worker 
34*49cdfc7eSAndroid Build Coastguard Worker /*
35*49cdfc7eSAndroid Build Coastguard Worker  * Get the default hugepage size. Returns 0 if hugepages are not supported.
36*49cdfc7eSAndroid Build Coastguard Worker  */
37*49cdfc7eSAndroid Build Coastguard Worker size_t tst_get_hugepage_size(void);
38*49cdfc7eSAndroid Build Coastguard Worker 
39*49cdfc7eSAndroid Build Coastguard Worker /*
40*49cdfc7eSAndroid Build Coastguard Worker  * Try the best to request a specified number of huge pages from system,
41*49cdfc7eSAndroid Build Coastguard Worker  * it will store the reserved hpage number in tst_hugepages.
42*49cdfc7eSAndroid Build Coastguard Worker  *
43*49cdfc7eSAndroid Build Coastguard Worker  * Note: this depend on the status of system memory fragmentation.
44*49cdfc7eSAndroid Build Coastguard Worker  */
45*49cdfc7eSAndroid Build Coastguard Worker unsigned long tst_reserve_hugepages(struct tst_hugepage *hp);
46*49cdfc7eSAndroid Build Coastguard Worker 
47*49cdfc7eSAndroid Build Coastguard Worker /*
48*49cdfc7eSAndroid Build Coastguard Worker  * This variable is used for recording the number of hugepages which system can
49*49cdfc7eSAndroid Build Coastguard Worker  * provides. It will be equal to 'hpages' if tst_reserve_hugepages on success,
50*49cdfc7eSAndroid Build Coastguard Worker  * otherwise set it to a number of hugepages that we were able to reserve.
51*49cdfc7eSAndroid Build Coastguard Worker  *
52*49cdfc7eSAndroid Build Coastguard Worker  * If system does not support hugetlb, then it will be set to 0.
53*49cdfc7eSAndroid Build Coastguard Worker  */
54*49cdfc7eSAndroid Build Coastguard Worker extern unsigned long tst_hugepages;
55*49cdfc7eSAndroid Build Coastguard Worker 
56*49cdfc7eSAndroid Build Coastguard Worker #endif /* TST_HUGEPAGE_H */
57