Coverage Report

Created: 2025-08-28 06:13

/src/nspr/pr/src/md/prosdep.c
Line
Count
Source (jump to first uncovered line)
1
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
2
/* This Source Code Form is subject to the terms of the Mozilla Public
3
 * License, v. 2.0. If a copy of the MPL was not distributed with this
4
 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
5
6
#include "prbit.h"
7
#include "prsystem.h"
8
9
#ifdef XP_UNIX
10
#  include <unistd.h>
11
#endif
12
#ifdef _WIN32
13
#  include <windows.h>
14
#endif
15
16
PRInt32 _pr_pageShift;
17
PRInt32 _pr_pageSize;
18
19
/*
20
** Get system page size
21
*/
22
14
static void GetPageSize(void) {
23
14
  PRInt32 pageSize;
24
25
  /* Get page size */
26
14
#ifdef XP_UNIX
27
14
#  if defined AIX || defined LINUX || defined __GNU__ || defined __GLIBC__ || \
28
14
      defined FREEBSD || defined NETBSD || defined OPENBSD || defined DARWIN
29
14
  _pr_pageSize = getpagesize();
30
#  else
31
  _pr_pageSize = sysconf(_SC_PAGESIZE);
32
#  endif
33
14
#endif /* XP_UNIX */
34
35
#ifdef XP_PC
36
#  ifdef _WIN32
37
  SYSTEM_INFO info;
38
  GetSystemInfo(&info);
39
  _pr_pageSize = info.dwPageSize;
40
#  else
41
  _pr_pageSize = 4096;
42
#  endif
43
#endif /* XP_PC */
44
45
14
  pageSize = _pr_pageSize;
46
14
  PR_CEILING_LOG2(_pr_pageShift, pageSize);
47
14
}
48
49
0
PR_IMPLEMENT(PRInt32) PR_GetPageShift(void) {
50
0
  if (!_pr_pageSize) {
51
0
    GetPageSize();
52
0
  }
53
0
  return _pr_pageShift;
54
0
}
55
56
14
PR_IMPLEMENT(PRInt32) PR_GetPageSize(void) {
57
14
  if (!_pr_pageSize) {
58
14
    GetPageSize();
59
14
  }
60
14
  return _pr_pageSize;
61
14
}