summaryrefslogtreecommitdiff
path: root/libc/sysdeps/linux
diff options
context:
space:
mode:
authorNed Ludd <solar@gentoo.org>2004-12-20 00:10:51 +0000
committerNed Ludd <solar@gentoo.org>2004-12-20 00:10:51 +0000
commitd503d1d6c62506ba6fb51c04a9703039e71d11a9 (patch)
tree1d3976101fc6bfa6aa7cb28aed91d404b03c5ee5 /libc/sysdeps/linux
parent1c8d7ee9cbe7483d06dab11b1333ea2eb23e60c6 (diff)
- Added support for 13 new syscalls to allow more things to compile when using uClibc. mincore() and the ones for Extended Attributes setxattr(), lsetxattr(), fsetxattr(), getxattr(), lgetxattr(), fgetxattr(), listxattr(), llistxattr(), flistxattr(), removexattr(), lremovexattr(), fremovexattr() which are optional.
Diffstat (limited to 'libc/sysdeps/linux')
-rw-r--r--libc/sysdeps/linux/common/Makefile9
-rw-r--r--libc/sysdeps/linux/common/mincore.c15
-rw-r--r--libc/sysdeps/linux/common/xattr.c71
3 files changed, 93 insertions, 2 deletions
diff --git a/libc/sysdeps/linux/common/Makefile b/libc/sysdeps/linux/common/Makefile
index a6be4307e..ddd015f7c 100644
--- a/libc/sysdeps/linux/common/Makefile
+++ b/libc/sysdeps/linux/common/Makefile
@@ -32,8 +32,8 @@ CSRC= __rt_sigtimedwait.c __socketcall.c __syscall_fcntl.c \
getpgid.c getpgrp.c getpid.c getppid.c getpriority.c getresgid.c \
getresuid.c getrlimit.c getrlimit64.c getrusage.c getsid.c \
gettimeofday.c getuid.c init_module.c ioctl.c ioperm.c iopl.c \
- kill.c klogctl.c lchown.c link.c llseek.c longjmp.c lseek.c \
- lstat.c lstat64.c madvise.c mkdir.c mkfifo.c mknod.c mlock.c \
+ kill.c klogctl.c lchown.c link.c llseek.c longjmp.c lseek.c lstat.c \
+ lstat64.c madvise.c mkdir.c mkfifo.c mincore.c mknod.c mlock.c \
mlockall.c mmap.c mmap64.c modify_ldt.c mount.c mprotect.c \
mremap.c msync.c munlock.c munlockall.c munmap.c nanosleep.c \
nice.c noophooks.c ntp_gettime.c open.c open64.c pause.c \
@@ -60,6 +60,11 @@ endif
ifeq ($(strip $(UCLIBC_PROPOLICE)),y)
CSRC+=ssp.c
endif
+
+ifeq ($(strip $(UCLIBC_XATTR)),y)
+CSRC+=xattr.c
+endif
+
COBJS=$(patsubst %.c,%.o, $(CSRC))
OBJ=$(COBJS) $(MOBJ)
diff --git a/libc/sysdeps/linux/common/mincore.c b/libc/sysdeps/linux/common/mincore.c
new file mode 100644
index 000000000..ecae441a5
--- /dev/null
+++ b/libc/sysdeps/linux/common/mincore.c
@@ -0,0 +1,15 @@
+/*
+ * Distributed under the terms of the GNU General Public License v2
+ * $Header: /var/cvs/uClibc/libc/sysdeps/linux/common/mincore.c,v 1.1 2004/12/20 00:10:51 solar Exp $
+ *
+ * This file provides the mincore() system call to uClibc.
+ * 20041215 - <solar@gentoo.org>
+ *
+ */
+
+#include "syscalls.h"
+#include <unistd.h>
+
+#ifdef __NR_mincore
+_syscall3(int, mincore, void *, start, size_t, length, unsigned char *, vec);
+#endif
diff --git a/libc/sysdeps/linux/common/xattr.c b/libc/sysdeps/linux/common/xattr.c
new file mode 100644
index 000000000..c5aa69be3
--- /dev/null
+++ b/libc/sysdeps/linux/common/xattr.c
@@ -0,0 +1,71 @@
+/*
+ * Distributed under the terms of the GNU General Public License v2
+ * $Header: /var/cvs/uClibc/libc/sysdeps/linux/common/xattr.c,v 1.1 2004/12/20 00:10:51 solar Exp $
+ *
+ * This file provides the following Extended Attribute system calls to uClibc.
+ *
+ * setxattr(), lsetxattr(), fsetxattr(),
+ * getxattr(), lgetxattr(), fgetxattr(),
+ * listxattr(), llistxattr(), flistxattr(),
+ * removexattr(), lremovexattr(), fremovexattr()
+ *
+ * 20041215 - <solar@gentoo.org>
+ */
+
+#include "syscalls.h"
+#include <unistd.h>
+
+#ifdef __NR_setxattr
+_syscall5(int, setxattr, const char *, path, const char *, name, const void *,
+ value, size_t, size, int, flags);
+#endif
+
+#ifdef __NR_lsetxattr
+_syscall5(int, lsetxattr, const char *, path, const char *, name, const void *,
+ value, size_t, size, int, flags);
+#endif
+
+#ifdef __NR_fsetxattr
+_syscall5(int, fsetxattr, int, filedes, const char *, name, const void *,
+ value, size_t, size, int, flags);
+#endif
+
+#ifdef __NR_getxattr
+_syscall4(ssize_t, getxattr, const char *, path, const char *, name,
+ void *, value, size_t, size);
+#endif
+
+#ifdef __NR_lgetxattr
+_syscall4(ssize_t, lgetxattr, const char *, path, const char *, name, void *,
+ value, size_t, size);
+#endif
+
+#ifdef __NR_fgetxattr
+_syscall4(ssize_t, fgetxattr, int, filedes, const char *, name, void *, value,
+ size_t, size);
+#endif
+
+#ifdef __NR_listxattr
+_syscall3(ssize_t, listxattr, const char *, path, char *, list, size_t, size);
+#endif
+
+#ifdef __NR_llistxattr
+_syscall3(ssize_t, llistxattr, const char *, path, char *, list, size_t,
+ size);
+#endif
+
+#ifdef __NR_flistxattr
+_syscall3(size_t, flistxattr, int, filedes, char *, list, size_t, size);
+#endif
+
+#ifdef __NR_removexattr
+_syscall2(int, removexattr, const char *, path, const char *, name);
+#endif
+
+#ifdef __NR_lremovexattr
+_syscall2(int, lremovexattr, const char *, path, const char *, name);
+#endif
+
+#ifdef __NR_fremovexattr
+_syscall2(int, fremovexattr, int, filedes, const char *, name);
+#endif