0
0
Fork 0
mirror of https://github.com/matrix-construct/construct synced 2024-06-02 10:08:56 +02:00

ircd::fs::map: Add hugepage related to interface opts.

This commit is contained in:
Jason Volk 2021-03-11 13:37:33 -08:00
parent fdd052da87
commit 59106f9456
2 changed files with 28 additions and 0 deletions

View file

@ -49,6 +49,8 @@ struct ircd::fs::map::opts
bool reserve {false};
bool populate {false};
bool locked {false};
bool huge2mb {false};
bool huge1gb {false};
opts(const fd::opts &opts = {std::ios::in})
:fd::opts(opts)

View file

@ -2186,6 +2186,32 @@ ircd::fs::flags(const map::opts &opts)
ret |= MAP_LOCKED;
#endif
#if defined(MAP_HUGE_TLB) && defined(MAP_HUGE_2MB)
if(opts.huge2mb)
ret |= MAP_HUGETLB | MAP_HUGE_2MB;
#elif defined(MAP_HUGE_SHIFT)
if(opts.huge2mb)
ret |= (21 << MAP_HUGE_SHIFT);
#elif defined(MAP_HUGETLB)
if(opts.huge2mb)
ret |= MAP_HUGE_TLB
#else
#warning "MAP_HUGETLB (2MB) not supported"
#endif
#if defined(MAP_HUGE_TLB) && defined(MAP_HUGE_1GB)
if(opts.huge1gb)
ret |= MAP_HUGE_1GB;
#elif defined(MAP_HUGE_SHIFT)
if(opts.huge1gb)
ret |= (30 << MAP_HUGE_SHIFT);
#elif defined(MAP_HUGE_TLB)
if(opts.huge1gb)
ret |= MAP_HUGE_TLB
#else
#warning "MAP_HUGETLB (1GB) not supported"
#endif
return ret;
}