OS.c revision 5ec34c4c
1/* Some OS-dependent utility code */ 2 3#ifdef HAVE_CONFIG_H 4#include <config.h> 5#endif 6#include <X11/Xosdefs.h> 7#include <X11/IntrinsicP.h> 8#include "Private.h" 9 10#ifdef HAVE_UNISTD_H 11#include <unistd.h> /* for sysconf(), and getpagesize() */ 12#endif 13 14#if defined(_WIN32) && !defined(__CYGWIN__) 15/* AC_CHECK_FUNCS([getpagesize]) may report a false positive for 16 getpagesize() when using MinGW gcc, since it's present in libgcc.a */ 17#undef HAVE_GETPAGESIZE 18#endif 19 20#if defined(linux) 21/* kernel header doesn't work with -ansi */ 22/* #include <asm/page.h> *//* for PAGE_SIZE */ 23#define HAS_SC_PAGESIZE /* _SC_PAGESIZE may be an enum for Linux */ 24#endif 25 26int 27_XawGetPageSize(void) 28{ 29 static int pagesize = -1; 30 31 if (pagesize != -1) 32 return pagesize; 33 34 /* Try each supported method in the preferred order */ 35 36#if defined(_SC_PAGESIZE) || defined(HAS_SC_PAGESIZE) 37 pagesize = (int) sysconf(_SC_PAGESIZE); 38#endif 39 40#ifdef _SC_PAGE_SIZE 41 if (pagesize == -1) 42 pagesize = (int) sysconf(_SC_PAGE_SIZE); 43#endif 44 45#ifdef HAVE_GETPAGESIZE 46 if (pagesize == -1) 47 pagesize = getpagesize(); 48#endif 49 50#ifdef PAGE_SIZE 51 if (pagesize == -1) 52 pagesize = PAGE_SIZE; 53#endif 54 55 if (pagesize == -1) 56 pagesize = 0; 57 58 return pagesize; 59} 60