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