Line data Source code
1 : /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
2 : /* vim: set ts=8 sts=2 et sw=2 tw=80: */
3 : /* This Source Code Form is subject to the terms of the Mozilla Public
4 : * License, v. 2.0. If a copy of the MPL was not distributed with this
5 : * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
6 :
7 : #include <sys/mman.h> // mprotect
8 : #include <unistd.h> // sysconf
9 :
10 : #include "mozilla/ipc/SharedMemory.h"
11 :
12 : namespace mozilla {
13 : namespace ipc {
14 :
15 : void
16 30 : SharedMemory::SystemProtect(char* aAddr, size_t aSize, int aRights)
17 : {
18 30 : int flags = 0;
19 30 : if (aRights & RightsRead)
20 11 : flags |= PROT_READ;
21 30 : if (aRights & RightsWrite)
22 8 : flags |= PROT_WRITE;
23 30 : if (RightsNone == aRights)
24 19 : flags = PROT_NONE;
25 :
26 30 : if (0 < mprotect(aAddr, aSize, flags))
27 0 : MOZ_CRASH("can't mprotect()");
28 30 : }
29 :
30 : size_t
31 41 : SharedMemory::SystemPageSize()
32 : {
33 41 : return sysconf(_SC_PAGESIZE);
34 : }
35 :
36 : } // namespace ipc
37 : } // namespace mozilla
|