1
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
3
* The contents of this file are subject to the Mozilla Public
4
* License Version 1.1 (the "License"); you may not use this file
5
* except in compliance with the License. You may obtain a copy of
6
* the License at http://www.mozilla.org/MPL/
8
* Software distributed under the License is distributed on an "AS
9
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
10
* implied. See the License for the specific language governing
11
* rights and limitations under the License.
13
* The Original Code is the Netscape Portable Runtime (NSPR).
15
* The Initial Developer of the Original Code is Netscape
16
* Communications Corporation. Portions created by Netscape are
17
* Copyright (C) 1998-2000 Netscape Communications Corporation. All
22
* Alternatively, the contents of this file may be used under the
23
* terms of the GNU General Public License Version 2 or later (the
24
* "GPL"), in which case the provisions of the GPL are applicable
25
* instead of those above. If you wish to allow use of your
26
* version of this file only under the terms of the GPL and not to
27
* allow others to use your version of this file under the MPL,
28
* indicate your decision by deleting the provisions above and
29
* replace them with the notice and other provisions required by
30
* the GPL. If you do not delete the provisions above, a recipient
31
* may use your version of this file under either the MPL or the
37
#if defined(_PR_PTHREADS)
40
** The pthreads version doesn't use these functions.
42
void _PR_InitSegs(void)
46
#else /* _PR_PTHREADS */
48
void _PR_InitSegs(void)
54
** Allocate a memory segment. The size value is rounded up to the native
55
** system page size and a page aligned portion of memory is returned.
56
** This memory is not part of the malloc heap. If "vaddr" is not NULL
57
** then PR tries to allocate the segment at the desired virtual address.
59
PRSegment* _PR_NewSegment(PRUint32 size, void *vaddr)
63
/* calloc the data structure for the segment */
64
seg = PR_NEWZAP(PRSegment);
67
size = ((size + _pr_pageSize - 1) >> _pr_pageShift) << _pr_pageShift;
69
** Now, allocate the actual segment memory (or map under some OS)
70
** The OS specific code decides from where or how to allocate memory.
72
if (_PR_MD_ALLOC_SEGMENT(seg, size, vaddr) != PR_SUCCESS) {
82
** Free a memory segment.
84
void _PR_DestroySegment(PRSegment *seg)
86
_PR_MD_FREE_SEGMENT(seg);
90
#endif /* _PR_PTHREADS */