My Project
Toggle main menu visibility
Loading...
Searching...
No Matches
omalloc
omMmap.c
Go to the documentation of this file.
1
/*******************************************************************
2
* File: omMmap.c
3
* Purpose: implementing valloc via mmap
4
* Author: obachman (Olaf Bachmann)
5
* Created: 11/99
6
*******************************************************************/
7
#include <unistd.h>
8
#include <fcntl.h>
9
#include <sys/mman.h>
10
11
#if !defined(MAP_ANONYMOUS) && defined(MAP_ANON)
12
#define MAP_ANONYMOUS MAP_ANON
13
#endif
14
15
static
inline
void
*
omVallocMmap
(
size_t
size
)
16
{
17
void
* addr;
18
#ifndef MAP_ANONYMOUS
19
static
int
fd
= -1;
20
#endif
21
22
#ifdef MAP_ANONYMOUS
23
#ifndef __CYGWIN__
24
/* under cygwin, MAP_PRIVATE|MAP_ANONYMOUS fails */
25
addr = mmap(0,
size
, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0);
26
#else
27
/* however, the following works */
28
addr = mmap(0,
size
, PROT_READ|PROT_WRITE, MAP_PRIVATE, -1, 0);
29
#endif
30
#else
/* !MAP_ANONYMOUS */
31
if
(
fd
< 0)
32
{
33
fd
=
open
(
"/dev/zero"
, O_RDWR);
34
if
(
fd
< 0)
return
NULL
;
35
}
36
addr = mmap(0,
size
, PROT_READ|PROT_WRITE, MAP_PRIVATE,
fd
, 0);
37
#endif
38
39
if
(addr == (
void
*) -1)
return
NULL
;
40
return
addr;
41
}
42
43
static
inline
int
omVfreeMmap
(
void
* addr,
size_t
size
)
44
{
45
return
munmap(addr,
size
);
46
}
size
int size(const CanonicalForm &f, const Variable &v)
int size ( const CanonicalForm & f, const Variable & v )
Definition
cf_ops.cc:600
NULL
#define NULL
Definition
omList.c:12
omVfreeMmap
static int omVfreeMmap(void *addr, size_t size)
Definition
omMmap.c:43
omVallocMmap
static void * omVallocMmap(size_t size)
Definition
omMmap.c:15
fd
int status int fd
Definition
si_signals.h:69
open
int status int void size_t count open
Definition
si_signals.h:83
Generated on
for My Project by
doxygen 1.17.0
for
Singular