summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRich Felker <dalias@aerifal.cx>2012-09-16 22:26:23 -0400
committerRich Felker <dalias@aerifal.cx>2012-09-16 22:26:23 -0400
commit662da62eb7cba808e98fe8ea65f6bbf55fa50f1e (patch)
tree95e2e2b286336f5cde1c75e86689236c0e5a2ccf
parentbd261bf25e000a1b754616db0b2ee1e14835a75d (diff)
downloadmusl-662da62eb7cba808e98fe8ea65f6bbf55fa50f1e.tar.gz
add clock_adjtime, remap_file_pages, and syncfs syscall wrappers
patch by Justin Cormack, with slight modification
-rw-r--r--include/sys/mman.h5
-rw-r--r--include/sys/timex.h5
-rw-r--r--include/unistd.h1
-rw-r--r--src/linux/clock_adjtime.c9
-rw-r--r--src/linux/remap_file_pages.c8
-rw-r--r--src/linux/syncfs.c8
6 files changed, 36 insertions, 0 deletions
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 <bits/alltypes.h>
#include <bits/mman.h>
@@ -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 <bits/alltypes.h>
+
#include <sys/time.h>
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 <time.h>
+#include <sys/timex.h>
+#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 <sys/mman.h>
+#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 <unistd.h>
+#include "syscall.h"
+
+void syncfs(int fd)
+{
+ __syscall(SYS_syncfs, fd);
+}