| /* Emulation of getpagesize() for systems that need it. */ | 
 |  | 
 | /* | 
 |  | 
 | @deftypefn Supplemental int getpagesize (void) | 
 |  | 
 | Returns the number of bytes in a page of memory.  This is the | 
 | granularity of many of the system memory management routines.  No | 
 | guarantee is made as to whether or not it is the same as the basic | 
 | memory management hardware page size. | 
 |  | 
 | @end deftypefn | 
 |  | 
 | BUGS | 
 |  | 
 | 	Is intended as a reasonable replacement for systems where this | 
 | 	is not provided as a system call.  The value of 4096 may or may | 
 | 	not be correct for the systems where it is returned as the default | 
 | 	value. | 
 |  | 
 | */ | 
 |  | 
 | #ifndef VMS | 
 |  | 
 | #include "config.h" | 
 |  | 
 | #include <sys/types.h> | 
 | #ifdef HAVE_SYS_PARAM_H | 
 | #include <sys/param.h> | 
 | #endif | 
 |  | 
 | #undef GNU_OUR_PAGESIZE | 
 | #if defined (HAVE_SYSCONF) && defined (HAVE_UNISTD_H) | 
 | #include <unistd.h> | 
 | #ifdef _SC_PAGESIZE | 
 | #define GNU_OUR_PAGESIZE sysconf(_SC_PAGESIZE) | 
 | #endif | 
 | #endif | 
 |  | 
 | #ifndef GNU_OUR_PAGESIZE | 
 | # ifdef	PAGESIZE | 
 | #  define	GNU_OUR_PAGESIZE PAGESIZE | 
 | # else	/* no PAGESIZE */ | 
 | #  ifdef	EXEC_PAGESIZE | 
 | #   define	GNU_OUR_PAGESIZE EXEC_PAGESIZE | 
 | #  else	/* no EXEC_PAGESIZE */ | 
 | #   ifdef	NBPG | 
 | #    define	GNU_OUR_PAGESIZE (NBPG * CLSIZE) | 
 | #    ifndef	CLSIZE | 
 | #     define	CLSIZE 1 | 
 | #    endif	/* CLSIZE */ | 
 | #   else	/* no NBPG */ | 
 | #    ifdef	NBPC | 
 | #     define	GNU_OUR_PAGESIZE NBPC | 
 | #    else	/* no NBPC */ | 
 | #     define	GNU_OUR_PAGESIZE 4096	/* Just punt and use reasonable value */ | 
 | #    endif /* NBPC */ | 
 | #   endif /* NBPG */ | 
 | #  endif /* EXEC_PAGESIZE */ | 
 | # endif /* PAGESIZE */ | 
 | #endif /* GNU_OUR_PAGESIZE */ | 
 |  | 
 | int | 
 | getpagesize (void) | 
 | { | 
 |   return (GNU_OUR_PAGESIZE); | 
 | } | 
 |  | 
 | #else /* VMS */ | 
 |  | 
 | #if 0	/* older distributions of gcc-vms are missing <syidef.h> */ | 
 | #include <syidef.h> | 
 | #endif | 
 | #ifndef SYI$_PAGE_SIZE	/* VMS V5.4 and earlier didn't have this yet */ | 
 | #define SYI$_PAGE_SIZE 4452 | 
 | #endif | 
 | extern unsigned long lib$getsyi(const unsigned short *,...); | 
 |  | 
 | int getpagesize (void) | 
 | { | 
 |   long pagsiz = 0L; | 
 |   unsigned short itmcod = SYI$_PAGE_SIZE; | 
 |  | 
 |   (void) lib$getsyi (&itmcod, (void *) &pagsiz); | 
 |   if (pagsiz == 0L) | 
 |     pagsiz = 512L;	/* VAX default */ | 
 |   return (int) pagsiz; | 
 | } | 
 |  | 
 | #endif /* VMS */ |