#include <sys/mman.h>
#include "vm_util.h"
+#include "hugepage_settings.h"
#define LENGTH (256UL*1024*1024)
+static void prepare(void)
+{
+ unsigned long length, hugepage_size, nr;
+
+ hugepage_size = default_huge_page_size();
+ if (!hugepage_size)
+ ksft_exit_skip("Unable to determine huge page size\n");
+
+ length = (LENGTH + hugepage_size - 1) & ~(hugepage_size - 1);
+ nr = length / hugepage_size;
+
+ if (!hugetlb_setup_default(nr))
+ ksft_exit_skip("Not enough free huge pages\n");
+
+ shm_limits_prepare(length);
+}
+
int main(void)
{
int shmid;
ksft_print_header();
ksft_set_plan(1);
+ prepare();
+
shmid = shmget(2, LENGTH, SHM_HUGETLB | IPC_CREAT | SHM_R | SHM_W);
if (shmid < 0)
ksft_exit_fail_perror("shmget");
ksft_test_result_pass("hugepage using SysV shmget/shmat\n");
ksft_finished();
}
+
+SHM_LIMITS_RESTORE()