From: Rich Felker Date: Mon, 17 Sep 2012 02:26:23 +0000 (-0400) Subject: add clock_adjtime, remap_file_pages, and syncfs syscall wrappers X-Git-Tag: v0.9.7~93 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=662da62eb7cba808e98fe8ea65f6bbf55fa50f1e;p=oweals%2Fmusl.git add clock_adjtime, remap_file_pages, and syncfs syscall wrappers patch by Justin Cormack, with slight modification --- diff --git a/include/sys/mman.h b/include/sys/mman.h index 136b45b3..9a1e60ff 100644 --- a/include/sys/mman.h +++ b/include/sys/mman.h @@ -10,6 +10,10 @@ extern "C" { #define __NEED_size_t #define __NEED_off_t +#if defined(_GNU_SOURCE) +#define __NEED_ssize_t +#endif + #include #include @@ -29,6 +33,7 @@ int munlockall (void); #ifdef _GNU_SOURCE void *mremap (void *, size_t, size_t, int, ...); +int remap_file_pages (void *, size_t, int, ssize_t, int); #endif #if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) diff --git a/include/sys/timex.h b/include/sys/timex.h index 12623922..f37c13ce 100644 --- a/include/sys/timex.h +++ b/include/sys/timex.h @@ -5,6 +5,10 @@ extern "C" { #endif +#define __NEED_clockid_t + +#include + #include struct ntptimeval { @@ -83,6 +87,7 @@ struct timex { #define MAXTC 6 int adjtimex(struct timex *); +int clock_adjtime(clockid_t, struct timex *); #ifdef __cplusplus } diff --git a/include/unistd.h b/include/unistd.h index d3bb781a..985d279e 100644 --- a/include/unistd.h +++ b/include/unistd.h @@ -184,6 +184,7 @@ int getresgid(gid_t *, gid_t *, gid_t *); char *get_current_dir_name(void); int pipe2(int [2], int); int dup3(int, int, int); +void syncfs(int); #endif #if defined(_LARGEFILE64_SOURCE) || defined(_GNU_SOURCE) diff --git a/src/linux/clock_adjtime.c b/src/linux/clock_adjtime.c new file mode 100644 index 00000000..1fc9bef4 --- /dev/null +++ b/src/linux/clock_adjtime.c @@ -0,0 +1,9 @@ +#define _GNU_SOURCE +#include +#include +#include "syscall.h" + +int clock_adjtime (clockid_t clock_id, struct timex *utx) +{ + return syscall(SYS_clock_adjtime, clock_id, utx); +} diff --git a/src/linux/remap_file_pages.c b/src/linux/remap_file_pages.c new file mode 100644 index 00000000..f95c4cc3 --- /dev/null +++ b/src/linux/remap_file_pages.c @@ -0,0 +1,8 @@ +#define _GNU_SOURCE +#include +#include "syscall.h" + +int remap_file_pages(void *addr, size_t size, int prot, ssize_t pgoff, int flags) +{ + return syscall(SYS_remap_file_pages, addr, size, prot, pgoff, flags); +} diff --git a/src/linux/syncfs.c b/src/linux/syncfs.c new file mode 100644 index 00000000..fe2b8a70 --- /dev/null +++ b/src/linux/syncfs.c @@ -0,0 +1,8 @@ +#define _GNU_SOURCE +#include +#include "syscall.h" + +void syncfs(int fd) +{ + __syscall(SYS_syncfs, fd); +}