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