diff --git a/libc/include/sys/linux-syscalls.h b/libc/include/sys/linux-syscalls.h
index 2fa5d3a..54f86f8 100644
--- a/libc/include/sys/linux-syscalls.h
+++ b/libc/include/sys/linux-syscalls.h
@@ -79,6 +79,10 @@
 #define __NR_sync                         (__NR_SYSCALL_BASE + 36)
 #define __NR_fcntl64                      (__NR_SYSCALL_BASE + 221)
 #define __NR_sendfile                     (__NR_SYSCALL_BASE + 187)
+#define __NR_fsetxattr                    (__NR_SYSCALL_BASE + 228)
+#define __NR_fgetxattr                    (__NR_SYSCALL_BASE + 231)
+#define __NR_flistxattr                   (__NR_SYSCALL_BASE + 234)
+#define __NR_fremovexattr                 (__NR_SYSCALL_BASE + 237)
 #define __NR_link                         (__NR_SYSCALL_BASE + 9)
 #define __NR_unlink                       (__NR_SYSCALL_BASE + 10)
 #define __NR_chdir                        (__NR_SYSCALL_BASE + 12)
@@ -100,6 +104,14 @@
 #define __NR_symlink                      (__NR_SYSCALL_BASE + 83)
 #define __NR_fchdir                       (__NR_SYSCALL_BASE + 133)
 #define __NR_truncate                     (__NR_SYSCALL_BASE + 92)
+#define __NR_setxattr                     (__NR_SYSCALL_BASE + 226)
+#define __NR_lsetxattr                    (__NR_SYSCALL_BASE + 227)
+#define __NR_getxattr                     (__NR_SYSCALL_BASE + 229)
+#define __NR_lgetxattr                    (__NR_SYSCALL_BASE + 230)
+#define __NR_listxattr                    (__NR_SYSCALL_BASE + 232)
+#define __NR_llistxattr                   (__NR_SYSCALL_BASE + 233)
+#define __NR_removexattr                  (__NR_SYSCALL_BASE + 235)
+#define __NR_lremovexattr                 (__NR_SYSCALL_BASE + 236)
 #define __NR_pause                        (__NR_SYSCALL_BASE + 29)
 #define __NR_gettimeofday                 (__NR_SYSCALL_BASE + 78)
 #define __NR_settimeofday                 (__NR_SYSCALL_BASE + 79)
diff --git a/libc/include/sys/linux-unistd.h b/libc/include/sys/linux-unistd.h
index f060374..693302d 100644
--- a/libc/include/sys/linux-unistd.h
+++ b/libc/include/sys/linux-unistd.h
@@ -98,6 +98,10 @@
 int              fchownat (int dirfd, const char *path, uid_t owner, gid_t group, int flags);
 int              fchmodat (int dirfd, const char *path, mode_t mode, int flags);
 int              renameat (int olddirfd, const char *oldpath, int newdirfd, const char *newpath);
+int              fsetxattr (int, const char *, const void *, size_t, int);
+ssize_t          fgetxattr (int, const char *, void *, size_t);
+ssize_t          flistxattr (int, char *, size_t);
+int              fremovexattr (int, const char *);
 int              link (const char*, const char*);
 int              unlink (const char*);
 int              unlinkat (int, const char *, int);
@@ -121,6 +125,14 @@
 int              symlink (const char *, const char *);
 int              fchdir (int);
 int              truncate (const char*, off_t);
+int              setxattr (const char *, const char *, const void *, size_t, int);
+int              lsetxattr (const char *, const char *, const void *, size_t, int);
+ssize_t          getxattr (const char *, const char *, void *, size_t);
+ssize_t          lgetxattr (const char *, const char *, void *, size_t);
+ssize_t          listxattr (const char *, char *, size_t);
+ssize_t          llistxattr (const char *, char *, size_t);
+int              removexattr (const char *, const char *);
+int              lremovexattr (const char *, const char *);
 int              __statfs64 (const char *, size_t, struct statfs *);
 int              pause (void);
 int              gettimeofday (struct timeval*, struct timezone*);
diff --git a/libc/include/sys/xattr.h b/libc/include/sys/xattr.h
new file mode 100644
index 0000000..39b25b1
--- /dev/null
+++ b/libc/include/sys/xattr.h
@@ -0,0 +1,56 @@
+/*
+ * Copyright (C) 2012 The Android Open Source Project
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *  * Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *  * Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+#ifndef _SYS_XATTR_H_
+#define _SYS_XATTR_H_
+
+#include <sys/types.h>
+
+__BEGIN_DECLS
+
+#define XATTR_CREATE 1
+#define XATTR_REPLACE 2
+
+extern int fsetxattr(int fd, const char *name, const void *value, size_t size, int flags);
+extern int setxattr(const char *path, const char *name, const void *value, size_t size, int flags);
+extern int lsetxattr(const char *path, const char *name, const void *value, size_t size, int flags);
+
+extern ssize_t fgetxattr(int fd, const char *name, void *value, size_t size);
+extern ssize_t getxattr(const char *path, const char *name, void *value, size_t size);
+extern ssize_t lgetxattr(const char *path, const char *name, void *value, size_t size);
+
+extern ssize_t listxattr(const char *path, char *list, size_t size);
+extern ssize_t llistxattr(const char *path, char *list, size_t size);
+extern ssize_t flistxattr(int fd, char *list, size_t size);
+
+extern int removexattr(const char *path, const char *name);
+extern int lremovexattr(const char *path, const char *name);
+extern int fremovexattr(int fd, const char *name);
+
+__END_DECLS
+
+#endif /* _SYS_XATTR_H_ */
