uclibc: Implement syncfs and AT_EMPTY_PATH for all and O_PATH for arm

needed for systemd 225 to compile with uclibc

Change-Id: Id5f990edf4a773de49742f9f9ea5139e55e21f69
(From OE-Core rev: 5c515a1c7a86c510b6ae4f99c5b2e20d52622543)

Signed-off-by: Khem Raj <raj.khem@gmail.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Khem Raj
2015-10-16 00:50:20 -07:00
committed by Richard Purdie
parent 2e4575d2e8
commit 73e1d33cf1
3 changed files with 93 additions and 0 deletions

View File

@@ -17,5 +17,7 @@ SRC_URI = "git://uclibc.org/uClibc.git;branch=master \
file://0006-ldso-limited-support-for-ORIGIN-in-rpath.patch \
file://0007-nptl-atfork-Hide-pthread_atfork-in-shared-versions.patch \
file://0001-gcc5-optimizes-away-the-write-only-static-functions-.patch \
file://0001-fcntl-Add-AT_EMPTY_PATH-for-all-and-O_PATH-for-arm.patch \
file://0001-wire-in-syncfs.patch \
"
S = "${WORKDIR}/git"

View File

@@ -0,0 +1,42 @@
From 4c8f5fe7d41493e8e181941ae5a01713155f44d1 Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Thu, 15 Oct 2015 15:34:39 +0000
Subject: [PATCH] fcntl: Add AT_EMPTY_PATH for all and O_PATH for arm
Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
Upstream-Status: Pending
include/fcntl.h | 3 +++
libc/sysdeps/linux/arm/bits/fcntl.h | 1 +
2 files changed, 4 insertions(+)
diff --git a/include/fcntl.h b/include/fcntl.h
index 11000dd..8a7ad9b 100644
--- a/include/fcntl.h
+++ b/include/fcntl.h
@@ -65,6 +65,9 @@ __BEGIN_DECLS
# define AT_SYMLINK_FOLLOW 0x400 /* Follow symbolic links. */
# define AT_EACCESS 0x200 /* Test access permitted for
effective IDs, not real IDs. */
+# ifdef __USE_GNU
+# define AT_EMPTY_PATH 0x1000 /* Allow empty relative pathname. */
+# endif
#endif
/* Do the file control operation described by CMD on FD.
diff --git a/libc/sysdeps/linux/arm/bits/fcntl.h b/libc/sysdeps/linux/arm/bits/fcntl.h
index aedc154..c6ba958 100644
--- a/libc/sysdeps/linux/arm/bits/fcntl.h
+++ b/libc/sysdeps/linux/arm/bits/fcntl.h
@@ -50,6 +50,7 @@
# define O_DIRECT 0200000 /* Direct disk access. */
# define O_NOATIME 01000000 /* Do not set atime. */
# define O_CLOEXEC 02000000 /* Set close_on_exec. */
+# define O_PATH 010000000 /* Resolve pathname but do not open file. */
#endif
/* For now Linux has synchronisity options for data and read operations.
--
2.6.1

View File

@@ -0,0 +1,49 @@
From 4f2db1b46bda5e376245ec36198b137709f069e8 Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Thu, 15 Oct 2015 17:03:37 +0000
Subject: [PATCH] wire in syncfs
Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
Upstream-Status: Pending
include/unistd.h | 2 +-
libc/sysdeps/linux/common/syncfs.c | 13 +++++++++++++
2 files changed, 14 insertions(+), 1 deletion(-)
create mode 100644 libc/sysdeps/linux/common/syncfs.c
diff --git a/include/unistd.h b/include/unistd.h
index 3793d2d..d01bb08 100644
--- a/include/unistd.h
+++ b/include/unistd.h
@@ -1073,7 +1073,7 @@ extern char *getpass (const char *__prompt) __nonnull ((1));
extern int fsync (int __fd);
#endif /* Use BSD || X/Open || Unix98. */
-#if 0 /*def __USE_GNU */
+#ifdef __USE_GNU
/* Make all changes done to all files on the file system associated
* with FD actually appear on disk. */
extern int syncfs (int __fd) __THROW;
diff --git a/libc/sysdeps/linux/common/syncfs.c b/libc/sysdeps/linux/common/syncfs.c
new file mode 100644
index 0000000..d2eed05
--- /dev/null
+++ b/libc/sysdeps/linux/common/syncfs.c
@@ -0,0 +1,13 @@
+/* vi: set sw=4 ts=4: */
+/*
+ * fsync() for uClibc
+ *
+ * Copyright (C) 2000-2006 Erik Andersen <andersen@uclibc.org>
+ *
+ * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
+ */
+
+#include <sys/syscall.h>
+#include <unistd.h>
+
+_syscall1(int, syncfs, int, fd)
--
2.6.1