12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 |
- /* 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 */
|