diff --git a/sys/Makefile b/sys/Makefile index c04f15db..d970ed58 100644 --- a/sys/Makefile +++ b/sys/Makefile @@ -4,4 +4,5 @@ # Copyright 2018, 2020 Phoenix Systems # -OBJS += $(addprefix $(PREFIX_O)sys/, events.o ioctl.o list.o mount.o rb.o resource.o select.o semaphore.o socket.o stat.o statvfs.o threads.o time.o times.o wait.o uio.o proto.o) +OBJS += $(addprefix $(PREFIX_O)sys/, events.o ioctl.o list.o mount.o rb.o resource.o select.o \ +semaphore.o socket.o stat.o statvfs.o threads.o time.o times.o wait.o uio.o proto.o mman.o) diff --git a/sys/mman.c b/sys/mman.c new file mode 100644 index 00000000..f4210f6e --- /dev/null +++ b/sys/mman.c @@ -0,0 +1,37 @@ +/* + * Phoenix-RTOS + * + * libphoenix + * + * mmap/munmap + * + * Copyright 2024 Phoenix Systems + * Author: Aleksander Kaminski + * + * This file is part of Phoenix-RTOS. + * + * %LICENSE% + */ + +#include +#include +#include +#include + + +WRAP_ERRNO_DEF(int, munmap, (void *vadddr, size_t size), (vadddr, size)) + + +extern int sys_mmap(void **vaddr, size_t size, int prot, int flags, int fildes, off_t offs); + + +void *mmap(void *vaddr, size_t size, int prot, int flags, int fildes, off_t offs) +{ + int err = sys_mmap(&vaddr, size, prot, flags, fildes, offs); + if (err < 0) { + vaddr = MAP_FAILED; + SET_ERRNO(err); + } + + return vaddr; +}