From 4abab5ad6c8465a7528ccdd5f49367da05f78bbd Mon Sep 17 00:00:00 2001 From: Vladimir Azarov Date: Tue, 1 Oct 2024 15:47:05 +0200 Subject: Initial version --- src/time/__map_file.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 src/time/__map_file.c (limited to 'src/time/__map_file.c') diff --git a/src/time/__map_file.c b/src/time/__map_file.c new file mode 100644 index 0000000..c2b29fe --- /dev/null +++ b/src/time/__map_file.c @@ -0,0 +1,18 @@ +#include +#include +#include +#include "syscall.h" + +const char unsigned *__map_file(const char *pathname, size_t *size) +{ + struct stat st; + const unsigned char *map = MAP_FAILED; + int fd = sys_open(pathname, O_RDONLY|O_CLOEXEC|O_NONBLOCK); + if (fd < 0) return 0; + if (!__fstat(fd, &st)) { + map = __mmap(0, st.st_size, PROT_READ, MAP_SHARED, fd, 0); + *size = st.st_size; + } + __syscall(SYS_close, fd); + return map == MAP_FAILED ? 0 : map; +} -- cgit v1.2.3