Welcome to mirror list, hosted at ThFree Co, Russian Federation.

hugetlb.c « criu - github.com/checkpoint-restore/criu.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: aa98662d810eb012a847ba25b92296f6515c9c4b (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
#include "hugetlb.h"
#include "kerndat.h"
#include "sizes.h"

// clang-format off
struct htlb_info hugetlb_info[HUGETLB_MAX] = {
	[HUGETLB_16KB] = { SZ_16K, MAP_HUGETLB_16KB },
	[HUGETLB_64KB] = { SZ_64K, MAP_HUGETLB_64KB },
	[HUGETLB_512KB] = { SZ_512K, MAP_HUGETLB_512KB },
	[HUGETLB_1MB] = { SZ_1M, MAP_HUGETLB_1MB },
	[HUGETLB_2MB] = { SZ_2M, MAP_HUGETLB_2MB },
	[HUGETLB_8MB] = { SZ_8M, MAP_HUGETLB_8MB },
	[HUGETLB_16MB] = { SZ_16M, MAP_HUGETLB_16MB },
	[HUGETLB_32MB] = { SZ_32M, MAP_HUGETLB_32MB },
	[HUGETLB_256MB] = { SZ_256M, MAP_HUGETLB_256MB },
	[HUGETLB_512MB] = { SZ_512M, MAP_HUGETLB_512MB },
	[HUGETLB_1GB] = { SZ_1G, MAP_HUGETLB_1GB },
	[HUGETLB_2GB] = { SZ_2G, MAP_HUGETLB_2GB },
	[HUGETLB_16GB] = { SZ_16G, MAP_HUGETLB_16GB },
};
// clang-format on

int is_hugetlb_dev(dev_t dev, int *hugetlb_size_flag)
{
	int i;

	for (i = 0; i < HUGETLB_MAX; i++) {
		if (kdat.hugetlb_dev[i] == dev) {
			if (hugetlb_size_flag)
				*hugetlb_size_flag = hugetlb_info[i].flag;
			return 1;
		}
	}

	return 0;
}

unsigned long get_size_from_hugetlb_flag(int flag)
{
	int i;

	for (i = 0; i < HUGETLB_MAX; i++)
		if (flag == hugetlb_info[i].flag)
			return hugetlb_info[i].size;

	return -1;
}