OS.c revision 7a84e134
17a84e134Smrg/* $XFree86: xc/lib/Xaw/OS.c,v 1.1 1998/12/06 10:44:34 dawes Exp $ */ 27a84e134Smrg 37a84e134Smrg/* Some OS-dependent utility code */ 47a84e134Smrg 57a84e134Smrg#ifdef HAVE_CONFIG_H 67a84e134Smrg#include <config.h> 77a84e134Smrg#endif 87a84e134Smrg#include <X11/Xosdefs.h> 97a84e134Smrg#include <X11/IntrinsicP.h> 107a84e134Smrg#include "Private.h" 117a84e134Smrg 127a84e134Smrg#ifndef X_NOT_POSIX 137a84e134Smrg#include <unistd.h> /* for sysconf(), and getpagesize() */ 147a84e134Smrg#endif 157a84e134Smrg 167a84e134Smrg#if defined(linux) 177a84e134Smrg/* kernel header doesn't work with -ansi */ 187a84e134Smrg/* #include <asm/page.h> *//* for PAGE_SIZE */ 197a84e134Smrg#define HAS_GETPAGESIZE 207a84e134Smrg#define HAS_SC_PAGESIZE /* _SC_PAGESIZE may be an enum for Linux */ 217a84e134Smrg#endif 227a84e134Smrg 237a84e134Smrg#if defined(CSRG_BASED) 247a84e134Smrg#define HAS_GETPAGESIZE 257a84e134Smrg#endif 267a84e134Smrg 277a84e134Smrg#if defined(sun) 287a84e134Smrg#define HAS_GETPAGESIZE 297a84e134Smrg#endif 307a84e134Smrg 317a84e134Smrgint 327a84e134Smrg_XawGetPageSize() 337a84e134Smrg{ 347a84e134Smrg static int pagesize = -1; 357a84e134Smrg 367a84e134Smrg if (pagesize != -1) 377a84e134Smrg return pagesize; 387a84e134Smrg 397a84e134Smrg /* Try each supported method in the preferred order */ 407a84e134Smrg 417a84e134Smrg#if defined(_SC_PAGESIZE) || defined(HAS_SC_PAGESIZE) 427a84e134Smrg pagesize = sysconf(_SC_PAGESIZE); 437a84e134Smrg#endif 447a84e134Smrg 457a84e134Smrg#ifdef _SC_PAGE_SIZE 467a84e134Smrg if (pagesize == -1) 477a84e134Smrg pagesize = sysconf(_SC_PAGE_SIZE); 487a84e134Smrg#endif 497a84e134Smrg 507a84e134Smrg#ifdef HAS_GETPAGESIZE 517a84e134Smrg if (pagesize == -1) 527a84e134Smrg pagesize = getpagesize(); 537a84e134Smrg#endif 547a84e134Smrg 557a84e134Smrg#ifdef PAGE_SIZE 567a84e134Smrg if (pagesize == -1) 577a84e134Smrg pagesize = PAGE_SIZE; 587a84e134Smrg#endif 597a84e134Smrg 607a84e134Smrg if (pagesize == -1) 617a84e134Smrg pagesize = 0; 627a84e134Smrg 637a84e134Smrg return pagesize; 647a84e134Smrg} 65