tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

prosdep.c (1327B)


      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 static void GetPageSize(void) {
     23  PRInt32 pageSize;
     24 
     25  /* Get page size */
     26 #ifdef XP_UNIX
     27 #  if defined AIX || defined LINUX || defined __GNU__ || defined __GLIBC__ || \
     28      defined FREEBSD || defined NETBSD || defined OPENBSD || defined DARWIN
     29  _pr_pageSize = getpagesize();
     30 #  else
     31  _pr_pageSize = sysconf(_SC_PAGESIZE);
     32 #  endif
     33 #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  pageSize = _pr_pageSize;
     46  PR_CEILING_LOG2(_pr_pageShift, pageSize);
     47 }
     48 
     49 PR_IMPLEMENT(PRInt32) PR_GetPageShift(void) {
     50  if (!_pr_pageSize) {
     51    GetPageSize();
     52  }
     53  return _pr_pageShift;
     54 }
     55 
     56 PR_IMPLEMENT(PRInt32) PR_GetPageSize(void) {
     57  if (!_pr_pageSize) {
     58    GetPageSize();
     59  }
     60  return _pr_pageSize;
     61 }