* ylwrap: Revert to previous version.
[external/binutils.git] / 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 ()
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 ()
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 */