OS.c revision f353fbad
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#ifndef X_NOT_POSIX 11#include <unistd.h> /* for sysconf(), and getpagesize() */ 12#endif 13 14#if defined(linux) 15/* kernel header doesn't work with -ansi */ 16/* #include <asm/page.h> *//* for PAGE_SIZE */ 17#define HAS_SC_PAGESIZE /* _SC_PAGESIZE may be an enum for Linux */ 18#endif 19 20int 21_XawGetPageSize(void) 22{ 23 static int pagesize = -1; 24 25 if (pagesize != -1) 26 return pagesize; 27 28 /* Try each supported method in the preferred order */ 29 30#if defined(_SC_PAGESIZE) || defined(HAS_SC_PAGESIZE) 31 pagesize = sysconf(_SC_PAGESIZE); 32#endif 33 34#ifdef _SC_PAGE_SIZE 35 if (pagesize == -1) 36 pagesize = sysconf(_SC_PAGE_SIZE); 37#endif 38 39#ifdef HAVE_GETPAGESIZE 40 if (pagesize == -1) 41 pagesize = getpagesize(); 42#endif 43 44#ifdef PAGE_SIZE 45 if (pagesize == -1) 46 pagesize = PAGE_SIZE; 47#endif 48 49 if (pagesize == -1) 50 pagesize = 0; 51 52 return pagesize; 53} 54