1 // SPDX-License-Identifier: GPL-2.0-or-later 2 /* 3 * 4 * Copyright (c) International Business Machines Corp., 2001 5 */ 6 7 /* 8 * hugetlb.h - common definitions for the hugepage tests 9 */ 10 11 #ifndef __HUGETLB_H 12 #define __HUGETLB_H 13 14 #include <stdlib.h> 15 #include <sys/ipc.h> 16 #include <sys/shm.h> 17 #include <errno.h> 18 #include <sys/wait.h> 19 #include "tst_test.h" 20 #include "mem.h" 21 22 #define PALIGN(p, a) ((void *)LTP_ALIGN((unsigned long)(p), (a))) 23 24 #define SHM_RD 0400 25 #define SHM_WR 0200 26 #define SHM_RW (SHM_RD|SHM_WR) 27 28 #ifndef SHM_HUGETLB 29 #define SHM_HUGETLB 04000 /* segment is mapped via hugetlb */ 30 #endif 31 32 #ifndef barrier 33 # ifdef mb 34 /* Redefining the mb() */ 35 # define barrier() mb() 36 # else 37 # define barrier() __asm__ __volatile__ ("" : : : "memory") 38 # endif 39 #endif 40 41 /* Check if hugetlb page is gigantic */ is_hugetlb_gigantic(unsigned long hpage_size)42static inline int is_hugetlb_gigantic(unsigned long hpage_size) 43 { 44 return (hpage_size / getpagesize()) >> 11; 45 } 46 47 /* 48 * to get the lower nine permission bits 49 * from shmid_ds.ipc_perm.mode 50 */ 51 #define MODE_MASK 0x01FF 52 53 extern key_t shmkey; /* an IPC key generated by ftok() */ 54 55 int getipckey(void); 56 int getuserid(char *user); 57 void rm_shm(int shm_id); 58 int do_readback(void *p, size_t size, char *desc); 59 #endif /* hugetlb.h */ 60