… | |
… | |
3 | #include <errno.h> |
3 | #include <errno.h> |
4 | |
4 | |
5 | #include "EXTERN.h" |
5 | #include "EXTERN.h" |
6 | #include "perl.h" |
6 | #include "perl.h" |
7 | #include "XSUB.h" |
7 | #include "XSUB.h" |
|
|
8 | |
|
|
9 | #if !defined mg_findext |
|
|
10 | # define mg_findext(sv,type,vtbl) mg_find (sv, type) |
|
|
11 | #endif |
8 | |
12 | |
9 | #include <stddef.h> |
13 | #include <stddef.h> |
10 | #include <stdlib.h> |
14 | #include <stdlib.h> |
11 | #include <errno.h> |
15 | #include <errno.h> |
12 | #include <sys/types.h> |
16 | #include <sys/types.h> |
|
|
17 | #include <sys/socket.h> |
13 | #include <sys/stat.h> |
18 | #include <sys/stat.h> |
14 | #include <limits.h> |
19 | #include <limits.h> |
15 | #include <fcntl.h> |
20 | #include <fcntl.h> |
16 | #include <sched.h> |
21 | #include <sched.h> |
17 | |
22 | |
… | |
… | |
159 | # else |
164 | # else |
160 | # define MAP_ANONYMOUS MAP_FIXED /* and hope this fails */ |
165 | # define MAP_ANONYMOUS MAP_FIXED /* and hope this fails */ |
161 | # endif |
166 | # endif |
162 | #endif |
167 | #endif |
163 | |
168 | |
164 | /* defines all sorts of constants to 0 unless they are already defined */ |
|
|
165 | /* also provides const_iv_ and const_niv_ macros for them */ |
|
|
166 | #include "def0.h" |
|
|
167 | |
|
|
168 | #ifndef makedev |
169 | #ifndef makedev |
169 | # define makedev(maj,min) (((maj) << 8) | (min)) |
170 | # define makedev(maj,min) (((maj) << 8) | (min)) |
170 | #endif |
171 | #endif |
171 | #ifndef major |
172 | #ifndef major |
172 | # define major(dev) ((dev) >> 8) |
173 | # define major(dev) ((dev) >> 8) |
… | |
… | |
180 | #endif |
181 | #endif |
181 | |
182 | |
182 | /*****************************************************************************/ |
183 | /*****************************************************************************/ |
183 | |
184 | |
184 | #if !_POSIX_MAPPED_FILES |
185 | #if !_POSIX_MAPPED_FILES |
185 | # define mmap(addr,length,prot,flags,fd,offs) EIO_ENOSYS () |
186 | # define mmap(addr,length,prot,flags,fd,offs) (errno = ENOSYS, (void *)-1) |
186 | # define munmap(addr,length) EIO_ENOSYS () |
187 | # define munmap(addr,length) EIO_ENOSYS () |
187 | #endif |
188 | #endif |
188 | |
189 | |
189 | #if !_POSIX_MEMORY_PROTECTION |
190 | #if !_POSIX_MEMORY_PROTECTION |
190 | # define mprotect(addr,len,prot) EIO_ENOSYS () |
191 | # define mprotect(addr,len,prot) EIO_ENOSYS () |
… | |
… | |
271 | { |
272 | { |
272 | /* todo: iterate over magic and only free ours, but of course */ |
273 | /* todo: iterate over magic and only free ours, but of course */ |
273 | /* the perl5porters will call that (correct) behaviour buggy */ |
274 | /* the perl5porters will call that (correct) behaviour buggy */ |
274 | sv_unmagic (sv, FOREIGN_MAGIC); |
275 | sv_unmagic (sv, FOREIGN_MAGIC); |
275 | } |
276 | } |
|
|
277 | |
|
|
278 | /*****************************************************************************/ |
|
|
279 | |
|
|
280 | /* defines all sorts of constants to 0 unless they are already defined */ |
|
|
281 | /* also provides const_iv_ and const_niv_ macros for them */ |
|
|
282 | #include "def0.h" |
276 | |
283 | |
277 | /*****************************************************************************/ |
284 | /*****************************************************************************/ |
278 | |
285 | |
279 | static void |
286 | static void |
280 | fiemap (eio_req *req) |
287 | fiemap (eio_req *req) |
… | |
… | |
1038 | const_niv (MADV_RANDOM , POSIX_MADV_RANDOM) |
1045 | const_niv (MADV_RANDOM , POSIX_MADV_RANDOM) |
1039 | const_niv (MADV_WILLNEED , POSIX_MADV_WILLNEED) |
1046 | const_niv (MADV_WILLNEED , POSIX_MADV_WILLNEED) |
1040 | const_niv (MADV_DONTNEED , POSIX_MADV_DONTNEED) |
1047 | const_niv (MADV_DONTNEED , POSIX_MADV_DONTNEED) |
1041 | |
1048 | |
1042 | /* the second block will be 0 when missing */ |
1049 | /* the second block will be 0 when missing */ |
|
|
1050 | const_iv (O_ACCMODE) |
|
|
1051 | |
1043 | const_iv (O_RDONLY) |
1052 | const_iv (O_RDONLY) |
1044 | const_iv (O_WRONLY) |
1053 | const_iv (O_WRONLY) |
1045 | const_iv (O_RDWR) |
1054 | const_iv (O_RDWR) |
1046 | const_iv (O_CREAT) |
1055 | const_iv (O_CREAT) |
1047 | const_iv (O_TRUNC) |
1056 | const_iv (O_TRUNC) |
… | |
… | |
1111 | |
1120 | |
1112 | const_iv (MREMAP_MAYMOVE) |
1121 | const_iv (MREMAP_MAYMOVE) |
1113 | const_iv (MREMAP_FIXED) |
1122 | const_iv (MREMAP_FIXED) |
1114 | |
1123 | |
1115 | const_iv (F_DUPFD_CLOEXEC) |
1124 | const_iv (F_DUPFD_CLOEXEC) |
|
|
1125 | |
|
|
1126 | const_iv (MSG_CMSG_CLOEXEC) |
|
|
1127 | const_iv (SOCK_CLOEXEC) |
1116 | |
1128 | |
1117 | const_iv (F_OFD_GETLK) |
1129 | const_iv (F_OFD_GETLK) |
1118 | const_iv (F_OFD_SETLK) |
1130 | const_iv (F_OFD_SETLK) |
1119 | const_iv (F_OFD_GETLKW) |
1131 | const_iv (F_OFD_GETLKW) |
1120 | |
1132 | |
… | |
… | |
2065 | munmap (SV *scalar) |
2077 | munmap (SV *scalar) |
2066 | CODE: |
2078 | CODE: |
2067 | sv_clear_foreign (scalar); |
2079 | sv_clear_foreign (scalar); |
2068 | |
2080 | |
2069 | SV * |
2081 | SV * |
2070 | mremap (SV *scalar, STRLEN new_length, int flags = 0, IV new_address = 0) |
2082 | mremap (SV *scalar, STRLEN new_length, int flags = MREMAP_MAYMOVE, IV new_address = 0) |
2071 | CODE: |
2083 | CODE: |
2072 | { |
2084 | { |
2073 | MAGIC *mg = mg_findext (scalar, FOREIGN_MAGIC, &mmap_vtbl); |
2085 | MAGIC *mg = mg_findext (scalar, FOREIGN_MAGIC, &mmap_vtbl); |
2074 | void *new; |
2086 | void *new; |
2075 | |
2087 | |