OS.c revision 7a84e134
1/* $XFree86: xc/lib/Xaw/OS.c,v 1.1 1998/12/06 10:44:34 dawes Exp $ */
2
3/* Some OS-dependent utility code */
4
5#ifdef HAVE_CONFIG_H
6#include <config.h>
7#endif
8#include <X11/Xosdefs.h>
9#include <X11/IntrinsicP.h>
10#include "Private.h"
11
12#ifndef X_NOT_POSIX
13#include <unistd.h>	/* for sysconf(), and getpagesize() */
14#endif
15
16#if defined(linux)
17/* kernel header doesn't work with -ansi */
18/* #include <asm/page.h> *//* for PAGE_SIZE */
19#define HAS_GETPAGESIZE
20#define HAS_SC_PAGESIZE	/* _SC_PAGESIZE may be an enum for Linux */
21#endif
22
23#if defined(CSRG_BASED)
24#define HAS_GETPAGESIZE
25#endif
26
27#if defined(sun)
28#define HAS_GETPAGESIZE
29#endif
30
31int
32_XawGetPageSize()
33{
34    static int pagesize = -1;
35
36    if (pagesize != -1)
37	return pagesize;
38
39    /* Try each supported method in the preferred order */
40
41#if defined(_SC_PAGESIZE) || defined(HAS_SC_PAGESIZE)
42    pagesize = sysconf(_SC_PAGESIZE);
43#endif
44
45#ifdef _SC_PAGE_SIZE
46    if (pagesize == -1)
47	pagesize = sysconf(_SC_PAGE_SIZE);
48#endif
49
50#ifdef HAS_GETPAGESIZE
51    if (pagesize == -1)
52	pagesize = getpagesize();
53#endif
54
55#ifdef PAGE_SIZE
56    if (pagesize == -1)
57	pagesize = PAGE_SIZE;
58#endif
59
60    if (pagesize == -1)
61	pagesize = 0;
62
63    return pagesize;
64}
65