1 /* Emulation of getpagesize() for systems that need it. */ 2 3 /* 4 5 NAME 6 7 getpagesize -- return the number of bytes in page of memory 8 9 SYNOPSIS 10 11 int getpagesize (void) 12 13 DESCRIPTION 14 15 Returns the number of bytes in a page of memory. This is the 16 granularity of many of the system memory management routines. 17 No guarantee is made as to whether or not it is the same as the 18 basic memory management hardware page size. 19 20 BUGS 21 22 Is intended as a reasonable replacement for systems where this 23 is not provided as a system call. The value of 4096 may or may 24 not be correct for the systems where it is returned as the default 25 value. 26 27 */ 28 29 #ifndef VMS 30 31 #include "config.h" 32 33 #include <sys/types.h> 34 #ifdef HAVE_SYS_PARAM_H 35 #include <sys/param.h> 36 #endif 37 38 #undef GNU_OUR_PAGESIZE 39 #if defined (HAVE_SYSCONF) && defined (HAVE_UNISTD_H) 40 #include <unistd.h> 41 #ifdef _SC_PAGESIZE 42 #define GNU_OUR_PAGESIZE sysconf(_SC_PAGESIZE) 43 #endif 44 #endif 45 46 #ifndef GNU_OUR_PAGESIZE 47 # ifdef PAGESIZE 48 # define GNU_OUR_PAGESIZE PAGESIZE 49 # else /* no PAGESIZE */ 50 # ifdef EXEC_PAGESIZE 51 # define GNU_OUR_PAGESIZE EXEC_PAGESIZE 52 # else /* no EXEC_PAGESIZE */ 53 # ifdef NBPG 54 # define GNU_OUR_PAGESIZE (NBPG * CLSIZE) 55 # ifndef CLSIZE 56 # define CLSIZE 1 57 # endif /* CLSIZE */ 58 # else /* no NBPG */ 59 # ifdef NBPC 60 # define GNU_OUR_PAGESIZE NBPC 61 # else /* no NBPC */ 62 # define GNU_OUR_PAGESIZE 4096 /* Just punt and use reasonable value */ 63 # endif /* NBPC */ 64 # endif /* NBPG */ 65 # endif /* EXEC_PAGESIZE */ 66 # endif /* PAGESIZE */ 67 #endif /* GNU_OUR_PAGESIZE */ 68 69 int getpagesize()70getpagesize () 71 { 72 return (GNU_OUR_PAGESIZE); 73 } 74 75 #else /* VMS */ 76 77 #if 0 /* older distributions of gcc-vms are missing <syidef.h> */ 78 #include <syidef.h> 79 #endif 80 #ifndef SYI$_PAGE_SIZE /* VMS V5.4 and earlier didn't have this yet */ 81 #define SYI$_PAGE_SIZE 4452 82 #endif 83 extern unsigned long lib$getsyi(const unsigned short *,...); 84 getpagesize()85int getpagesize () 86 { 87 long pagsiz = 0L; 88 unsigned short itmcod = SYI$_PAGE_SIZE; 89 90 (void) lib$getsyi (&itmcod, (void *) &pagsiz); 91 if (pagsiz == 0L) 92 pagsiz = 512L; /* VAX default */ 93 return (int) pagsiz; 94 } 95 96 #endif /* VMS */ 97