… | |
… | |
325 | /* used for readlink etc. */ |
325 | /* used for readlink etc. */ |
326 | #ifndef PATH_MAX |
326 | #ifndef PATH_MAX |
327 | # define PATH_MAX 0 |
327 | # define PATH_MAX 0 |
328 | #endif |
328 | #endif |
329 | |
329 | |
|
|
330 | #ifndef O_CLOEXEC |
|
|
331 | #define O_CLOEXEC 0 |
|
|
332 | #endif |
|
|
333 | |
330 | #ifndef EIO_PATH_MIN |
334 | #ifndef EIO_PATH_MIN |
331 | # define EIO_PATH_MIN 8160 |
335 | # define EIO_PATH_MIN 8160 |
332 | #endif |
336 | #endif |
333 | |
337 | |
334 | #define EIO_PATH_MAX (PATH_MAX <= EIO_PATH_MIN ? EIO_PATH_MIN : PATH_MAX) |
338 | #define EIO_PATH_MAX (PATH_MAX <= EIO_PATH_MIN ? EIO_PATH_MIN : PATH_MAX) |
… | |
… | |
955 | intptr_t end = addr + len; |
959 | intptr_t end = addr + len; |
956 | intptr_t page = eio_pagesize (); |
960 | intptr_t page = eio_pagesize (); |
957 | |
961 | |
958 | if (addr < end) |
962 | if (addr < end) |
959 | if (flags & EIO_MT_MODIFY) /* modify */ |
963 | if (flags & EIO_MT_MODIFY) /* modify */ |
960 | do { *((volatile sig_atomic_t *)addr) |= 0; } while ((addr += page) < len && !EIO_CANCELLED (req)); |
964 | do { *((volatile sig_atomic_t *)addr) |= 0; } while ((addr += page) < end && !EIO_CANCELLED (req)); |
961 | else |
965 | else |
962 | do { *((volatile sig_atomic_t *)addr) ; } while ((addr += page) < len && !EIO_CANCELLED (req)); |
966 | do { *((volatile sig_atomic_t *)addr) ; } while ((addr += page) < end && !EIO_CANCELLED (req)); |
963 | } |
967 | } |
964 | |
968 | |
965 | return 0; |
969 | return 0; |
966 | } |
970 | } |
967 | |
971 | |
… | |
… | |
2334 | eio_req *eio_rename (const char *path, const char *new_path, int pri, eio_cb cb, void *data) |
2338 | eio_req *eio_rename (const char *path, const char *new_path, int pri, eio_cb cb, void *data) |
2335 | { |
2339 | { |
2336 | return eio__2path (EIO_RENAME, path, new_path, pri, cb, data); |
2340 | return eio__2path (EIO_RENAME, path, new_path, pri, cb, data); |
2337 | } |
2341 | } |
2338 | |
2342 | |
2339 | eio_req *eio_slurp (const char *path, void *buf, ssize_t length, off_t offset, int pri, eio_cb cb, void *data) |
2343 | eio_req *eio_slurp (const char *path, void *buf, size_t length, off_t offset, int pri, eio_cb cb, void *data) |
2340 | { |
2344 | { |
2341 | REQ (EIO_SLURP); PATH; req->offs = offset; req->size = length; req->ptr2 = buf; SEND; |
2345 | REQ (EIO_SLURP); PATH; req->offs = offset; req->size = length; req->ptr2 = buf; SEND; |
2342 | } |
2346 | } |
2343 | |
2347 | |
2344 | eio_req *eio_custom (void (*execute)(eio_req *), int pri, eio_cb cb, void *data) |
2348 | eio_req *eio_custom (void (*execute)(eio_req *), int pri, eio_cb cb, void *data) |