COVERAGE SUMMARY
FILE SUMMARY
NameExecutedRoutines%ExecutedLines%Unexecuted
/home/matt/eu/rds/include/std/unix/mmap.e080.00%0340.00%34
ROUTINE SUMMARY
RoutineExecutedLinesUnexecuted
mmap()060.00%6
get_page_size()020.00%2
is_page_aligned_address()020.00%2
is_valid_memory_protection_constant()020.00%2
mlock()020.00%2
mprotect()020.00%2
munlock()020.00%2
munmap()020.00%2
LINE COVERAGE DETAIL
#Executed
1
-- (c) Copyright - See License.txt
2
--
3
4
namespace mmap
5
60
ifdef not UNIX then
7
include std/error.e
8
crash("Only supported on Unix systems!")
9
end ifdef
10
11
include std/dll.e
12
include std/machine.e
13
14
public constant
150
PROT_EXEC = 4,
160
PROT_READ = 1,
170
PROT_WRITE = 2,
180
PROT_NONE = 0
19
200
public constant MAP_ANONYMOUS = #20, MAP_PRIVATE = #2
210
,MAP_SHARED = #1, MAP_TYPE = #F, MAP_FIXED = #10,
220
MAP_FILE = 0
23
24
atom getpagesize_rid, mmap_rid, mprotect_rid, munmap_rid,
25
mlock_rid, munlock_rid
26
270
getpagesize_rid = define_c_func( -1, "getpagesize", { }, C_UINT )
280
mmap_rid = define_c_func( -1, "mmap", { C_POINTER, C_UINT, C_INT, C_INT, C_INT, C_INT }, C_POINTER )
290
mprotect_rid = define_c_func( -1, "mprotect", { C_POINTER, C_UINT, C_INT }, C_INT )
300
munmap_rid = define_c_func( -1, "munmap", { C_POINTER, C_UINT }, C_INT )
310
mlock_rid = define_c_func( -1, "mlock", { C_POINTER, C_UINT }, C_INT )
320
munlock_rid = define_c_func( -1, "munlock", { C_POINTER, C_UINT }, C_INT )
33
340
350
return PAGE_SIZE
36
end function
37
380
39
valid_memory_protection_constant protection,
40
integer flags, integer fd, integer offset )
41
atom pc
420
if atom( start ) then
430
return c_func( mmap_rid, { start, length, protection, flags, fd, offset } )
44
else
450
pc = mmap( 0, length, protection, flags, fd, offset )
460
poke( pc, start )
470
return pc
48
end if
49
end function
50
510
520
return c_func( munmap_rid, { addr, length } )
53
end function
54
550
560
return c_func( mlock_rid, { addr, length } )
57
end function
58
590
600
return c_func( munlock_rid, { addr, length } )
61
end function
62
630
640
return c_func( mprotect_rid, { addr, length, protection } )
65
end function
66
670
680
return 0 != valid_memory_protection_constant(x)
69
end function
70
710
720
return 0 != page_aligned_address(a)
73
end function
74