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