Mercurial > hg > CbC > CbC_gcc
comparison libiberty/getpagesize.c @ 0:a06113de4d67
first commit
author | kent <kent@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Fri, 17 Jul 2009 14:47:48 +0900 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:a06113de4d67 |
---|---|
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 */ |