php-internal-docs
8.4.8
Unofficial docs for php/php-src
Loading...
Searching...
No Matches
sljitExecAllocatorPosix.c
Go to the documentation of this file.
1
/*
2
* Stack-less Just-In-Time compiler
3
*
4
* Copyright Zoltan Herczeg (hzmester@freemail.hu). All rights reserved.
5
*
6
* Redistribution and use in source and binary forms, with or without modification, are
7
* permitted provided that the following conditions are met:
8
*
9
* 1. Redistributions of source code must retain the above copyright notice, this list of
10
* conditions and the following disclaimer.
11
*
12
* 2. Redistributions in binary form must reproduce the above copyright notice, this list
13
* of conditions and the following disclaimer in the documentation and/or other materials
14
* provided with the distribution.
15
*
16
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER(S) AND CONTRIBUTORS ``AS IS'' AND ANY
17
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
18
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
19
* SHALL THE COPYRIGHT HOLDER(S) OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
20
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
21
* TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
22
* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
23
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
24
* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
25
*/
26
27
#include <sys/types.h>
28
#include <sys/mman.h>
29
30
static
SLJIT_INLINE
void
* alloc_chunk(
sljit_uw
size
)
31
{
32
void
*
retval
;
33
int
prot =
PROT_READ
|
PROT_WRITE
| PROT_EXEC;
34
int
flags
= MAP_PRIVATE;
35
int
fd
= -1;
36
37
#ifdef PROT_MAX
38
prot |= PROT_MAX(prot);
39
#endif
40
41
#ifdef MAP_ANON
42
flags
|= MAP_ANON;
43
#else
/* !MAP_ANON */
44
if
(
SLJIT_UNLIKELY
((dev_zero < 0) && open_dev_zero()))
45
return
NULL
;
46
47
fd
= dev_zero;
48
#endif
/* MAP_ANON */
49
50
retval
= mmap(
NULL
,
size
, prot,
flags
,
fd
, 0);
51
if
(
retval
==
MAP_FAILED
)
52
return
NULL
;
53
54
return
retval
;
55
}
56
57
static
SLJIT_INLINE
void
free_chunk(
void
*chunk,
sljit_uw
size
)
58
{
59
munmap(chunk,
size
);
60
}
61
62
#include "
sljitExecAllocatorCore.c
"
size
new_type size
Definition
ffi.c:4365
NULL
#define NULL
Definition
gdcache.h:45
flags
flags
Definition
php_http_parser.c:229
fd
int fd
Definition
phpdbg.h:282
PROT_READ
#define PROT_READ
Definition
phpdbg_win.h:26
PROT_WRITE
#define PROT_WRITE
Definition
phpdbg_win.h:27
SLJIT_UNLIKELY
#define SLJIT_UNLIKELY(x)
Definition
sljitConfigInternal.h:169
sljit_uw
unsigned int sljit_uw
Definition
sljitConfigInternal.h:345
SLJIT_INLINE
#define SLJIT_INLINE
Definition
sljitConfigInternal.h:183
sljitExecAllocatorCore.c
MAP_FAILED
#define MAP_FAILED
Definition
zend_alloc.c:98
retval
zval retval
Definition
zend_vm_def.h:4055
ext
pcre
pcre2lib
sljit
allocator_src
sljitExecAllocatorPosix.c
Generated on Sat Aug 23 2025 01:46:10 for php-internal-docs by
1.13.2