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