svn commit: r276121 - in projects/ino64/lib/libc: include sys
Gleb Kurtsou
gleb at FreeBSD.org
Tue Dec 23 08:40:35 UTC 2014
Author: gleb
Date: Tue Dec 23 08:40:32 2014
New Revision: 276121
URL: https://svnweb.freebsd.org/changeset/base/276121
Log:
libc: Add COMPAT10 syscalls. Add wrappers for removed stat, lstat, getdents, mknod.
Added:
projects/ino64/lib/libc/sys/getdents.c
- copied, changed from r276120, projects/ino64/lib/libc/include/compat.h
projects/ino64/lib/libc/sys/lstat.c
- copied, changed from r276120, projects/ino64/lib/libc/include/compat.h
projects/ino64/lib/libc/sys/mknod.c
- copied, changed from r276120, projects/ino64/lib/libc/include/compat.h
projects/ino64/lib/libc/sys/stat.c
- copied, changed from r276120, projects/ino64/lib/libc/include/compat.h
Modified:
projects/ino64/lib/libc/include/compat.h
projects/ino64/lib/libc/include/libc_private.h
projects/ino64/lib/libc/sys/Makefile.inc
projects/ino64/lib/libc/sys/Symbol.map
projects/ino64/lib/libc/sys/getdirentries.2
Modified: projects/ino64/lib/libc/include/compat.h
==============================================================================
--- projects/ino64/lib/libc/include/compat.h Tue Dec 23 08:40:24 2014 (r276120)
+++ projects/ino64/lib/libc/include/compat.h Tue Dec 23 08:40:32 2014 (r276121)
@@ -42,6 +42,27 @@ __sym_compat(__semctl, freebsd7___semctl
__sym_compat(msgctl, freebsd7_msgctl, FBSD_1.0);
__sym_compat(shmctl, freebsd7_shmctl, FBSD_1.0);
+__sym_compat(nfstat, freebsd10_nfstat, FBSD_1.0);
+__sym_compat(nlstat, freebsd10_nlstat, FBSD_1.0);
+__sym_compat(nstat, freebsd10_nstat, FBSD_1.0);
+
+__sym_compat(fhstat, freebsd10_fhstat, FBSD_1.0);
+__sym_compat(fstat, freebsd10_fstat, FBSD_1.0);
+__sym_compat(fstatat, freebsd10_fstatat, FBSD_1.1);
+__sym_compat(lstat, freebsd10_lstat, FBSD_1.0);
+__sym_compat(stat, freebsd10_stat, FBSD_1.0);
+
+__sym_compat(getdents, freebsd10_getdents, FBSD_1.0);
+__sym_compat(getdirentries, freebsd10_getdirentries, FBSD_1.0);
+
+__sym_compat(getfsstat, freebsd10_getfsstat, FBSD_1.0);
+__sym_compat(fhstatfs, freebsd10_fhstatfs, FBSD_1.0);
+__sym_compat(fstatfs, freebsd10_fstatfs, FBSD_1.0);
+__sym_compat(statfs, freebsd10_statfs, FBSD_1.0);
+
+__sym_compat(mknod, freebsd10_mknod, FBSD_1.0);
+__sym_compat(mknodat, freebsd10_mknodat, FBSD_1.1);
+
#undef __sym_compat
#endif /* __LIBC_COMPAT_H__ */
Modified: projects/ino64/lib/libc/include/libc_private.h
==============================================================================
--- projects/ino64/lib/libc/include/libc_private.h Tue Dec 23 08:40:24 2014 (r276120)
+++ projects/ino64/lib/libc/include/libc_private.h Tue Dec 23 08:40:32 2014 (r276121)
@@ -37,6 +37,8 @@
#include <sys/_types.h>
#include <sys/_pthreadtypes.h>
+struct stat;
+
/*
* This global flag is non-zero when a process has created one
* or more threads. It is used to avoid calling locking functions
@@ -246,6 +248,8 @@ extern void * __sys_freebsd6_mmap(void *
/* Without back-compat translation */
extern int __sys_fcntl(int, int, ...);
+extern int __sys_fstatat(int, const char *, struct stat *, int);
+
struct timespec;
struct timeval;
struct timezone;
Modified: projects/ino64/lib/libc/sys/Makefile.inc
==============================================================================
--- projects/ino64/lib/libc/sys/Makefile.inc Tue Dec 23 08:40:24 2014 (r276120)
+++ projects/ino64/lib/libc/sys/Makefile.inc Tue Dec 23 08:40:32 2014 (r276121)
@@ -20,6 +20,7 @@ NOASM+= clock_gettime.o gettimeofday.o
PSEUDO+= _clock_gettime.o _gettimeofday.o
# Sources common to both syscall interfaces:
+SRCS+= getdents.c lstat.c mknod.c stat.c
SRCS+= stack_protector.c stack_protector_compat.c __error.c
.if ${MK_SYSCALL_COMPAT} != "no"
SYSCALL_COMPAT_SRCS= fcntl.c ftruncate.c lseek.c mmap.c pread.c \
Modified: projects/ino64/lib/libc/sys/Symbol.map
==============================================================================
--- projects/ino64/lib/libc/sys/Symbol.map Tue Dec 23 08:40:24 2014 (r276120)
+++ projects/ino64/lib/libc/sys/Symbol.map Tue Dec 23 08:40:32 2014 (r276121)
@@ -88,26 +88,19 @@ FBSD_1.0 {
fchown;
fcntl;
fhopen;
- fhstat;
- fhstatfs;
flock;
fork;
fpathconf;
- fstat;
- fstatfs;
fsync;
futimes;
getaudit;
getaudit_addr;
getauid;
getcontext;
- getdents;
- getdirentries;
getdtablesize;
getegid;
geteuid;
getfh;
- getfsstat;
getgid;
getgroups;
getitimer;
@@ -166,7 +159,6 @@ FBSD_1.0 {
link;
lio_listio;
listen;
- lstat;
lutimes;
mac_syscall;
madvise;
@@ -174,7 +166,6 @@ FBSD_1.0 {
minherit;
mkdir;
mkfifo;
- mknod;
mlock;
mlockall;
modfind;
@@ -195,10 +186,7 @@ FBSD_1.0 {
netbsd_lchown;
netbsd_msync;
nfssvc;
- nfstat;
- nlstat;
nmount;
- nstat;
ntp_adjtime;
ntp_gettime;
oaio_read;
@@ -284,8 +272,6 @@ FBSD_1.0 {
socketpair;
__stack_chk_fail;
__stack_chk_guard;
- stat;
- statfs;
swapcontext;
swapoff;
swapon;
@@ -340,7 +326,6 @@ FBSD_1.1 {
fchmodat;
fchownat;
fexecve;
- fstatat;
futimesat;
jail_get;
jail_set;
@@ -349,7 +334,6 @@ FBSD_1.1 {
lpathconf;
mkdirat;
mkfifoat;
- mknodat;
msgctl;
openat;
readlinkat;
@@ -400,7 +384,20 @@ FBSD_1.3 {
};
FBSD_1.4 {
+ fhstat;
+ fhstatfs;
+ fstat;
+ fstatat;
+ fstatfs;
+ getdents;
+ getdirentries;
+ getfsstat;
+ lstat;
+ mknod;
+ mknodat;
ppoll;
+ stat;
+ statfs;
};
FBSDprivate_1.0 {
@@ -607,8 +604,6 @@ FBSDprivate_1.0 {
__sys_getauid;
_getcontext;
__sys_getcontext;
- _getdents;
- __sys_getdents;
_getdirentries;
__sys_getdirentries;
_getdtablesize;
@@ -737,8 +732,6 @@ FBSDprivate_1.0 {
__sys_lio_listio;
_listen;
__sys_listen;
- _lstat;
- __sys_lstat;
_lutimes;
__sys_lutimes;
_mac_syscall;
@@ -797,14 +790,8 @@ FBSDprivate_1.0 {
__sys_netbsd_msync;
_nfssvc;
__sys_nfssvc;
- _nfstat;
- __sys_nfstat;
- _nlstat;
- __sys_nlstat;
_nmount;
__sys_nmount;
- _nstat;
- __sys_nstat;
_ntp_adjtime;
__sys_ntp_adjtime;
_ntp_gettime;
@@ -978,8 +965,6 @@ FBSDprivate_1.0 {
__sys_socket;
_socketpair;
__sys_socketpair;
- _stat;
- __sys_stat;
_statfs;
__sys_statfs;
_swapcontext;
Copied and modified: projects/ino64/lib/libc/sys/getdents.c (from r276120, projects/ino64/lib/libc/include/compat.h)
==============================================================================
--- projects/ino64/lib/libc/include/compat.h Tue Dec 23 08:40:24 2014 (r276120, copy source)
+++ projects/ino64/lib/libc/sys/getdents.c Tue Dec 23 08:40:32 2014 (r276121)
@@ -1,6 +1,5 @@
/*-
- * Copyright (c) 2009 Advanced Computing Technologies LLC
- * Written by: John H. Baldwin <jhb at FreeBSD.org>
+ * Copyright (c) 2012 Gleb Kurtsou <gleb at FreeBSD.org>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -23,26 +22,22 @@
* 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.
- *
- * $FreeBSD$
- */
-
-/*
- * This file defines compatiblity symbol versions for old system calls. It
- * is included in all generated system call files.
*/
-#ifndef __LIBC_COMPAT_H__
-#define __LIBC_COMPAT_H__
-
-#define __sym_compat(sym,impl,verid) \
- .symver impl, sym at verid
-
-__sym_compat(__semctl, freebsd7___semctl, FBSD_1.0);
-__sym_compat(msgctl, freebsd7_msgctl, FBSD_1.0);
-__sym_compat(shmctl, freebsd7_shmctl, FBSD_1.0);
-
-#undef __sym_compat
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
-#endif /* __LIBC_COMPAT_H__ */
+#include "namespace.h"
+#include <sys/param.h>
+#include <sys/syscall.h>
+#include <dirent.h>
+#include "libc_private.h"
+
+ssize_t __sys_getdirentries(int, char *, size_t, off_t *);
+
+ssize_t
+getdents(int fd, char *buf, size_t nbytes)
+{
+ return (__sys_getdirentries(fd, buf, nbytes, NULL));
+}
Modified: projects/ino64/lib/libc/sys/getdirentries.2
==============================================================================
--- projects/ino64/lib/libc/sys/getdirentries.2 Tue Dec 23 08:40:24 2014 (r276120)
+++ projects/ino64/lib/libc/sys/getdirentries.2 Tue Dec 23 08:40:32 2014 (r276121)
@@ -40,10 +40,10 @@
.Sh SYNOPSIS
.In sys/types.h
.In dirent.h
-.Ft int
-.Fn getdirentries "int fd" "char *buf" "int nbytes" "long *basep"
-.Ft int
-.Fn getdents "int fd" "char *buf" "int nbytes"
+.Ft ssize_t
+.Fn getdirentries "int fd" "char *buf" "size_t nbytes" "off_t *basep"
+.Ft ssize_t
+.Fn getdents "int fd" "char *buf" "size_t nbytes"
.Sh DESCRIPTION
The
.Fn getdirentries
Copied and modified: projects/ino64/lib/libc/sys/lstat.c (from r276120, projects/ino64/lib/libc/include/compat.h)
==============================================================================
--- projects/ino64/lib/libc/include/compat.h Tue Dec 23 08:40:24 2014 (r276120, copy source)
+++ projects/ino64/lib/libc/sys/lstat.c Tue Dec 23 08:40:32 2014 (r276121)
@@ -1,6 +1,5 @@
/*-
- * Copyright (c) 2009 Advanced Computing Technologies LLC
- * Written by: John H. Baldwin <jhb at FreeBSD.org>
+ * Copyright (c) 2012 Gleb Kurtsou <gleb at FreeBSD.org>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -23,26 +22,22 @@
* 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.
- *
- * $FreeBSD$
- */
-
-/*
- * This file defines compatiblity symbol versions for old system calls. It
- * is included in all generated system call files.
*/
-#ifndef __LIBC_COMPAT_H__
-#define __LIBC_COMPAT_H__
-
-#define __sym_compat(sym,impl,verid) \
- .symver impl, sym at verid
-
-__sym_compat(__semctl, freebsd7___semctl, FBSD_1.0);
-__sym_compat(msgctl, freebsd7_msgctl, FBSD_1.0);
-__sym_compat(shmctl, freebsd7_shmctl, FBSD_1.0);
-
-#undef __sym_compat
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
-#endif /* __LIBC_COMPAT_H__ */
+#include "namespace.h"
+#include <sys/param.h>
+#include <sys/fcntl.h>
+#include <sys/syscall.h>
+#include <sys/stat.h>
+#include <unistd.h>
+#include "libc_private.h"
+
+int
+lstat(const char *path, struct stat *sb)
+{
+ return (__sys_fstatat(AT_FDCWD, path, sb, AT_SYMLINK_NOFOLLOW));
+}
Copied and modified: projects/ino64/lib/libc/sys/mknod.c (from r276120, projects/ino64/lib/libc/include/compat.h)
==============================================================================
--- projects/ino64/lib/libc/include/compat.h Tue Dec 23 08:40:24 2014 (r276120, copy source)
+++ projects/ino64/lib/libc/sys/mknod.c Tue Dec 23 08:40:32 2014 (r276121)
@@ -1,6 +1,5 @@
/*-
- * Copyright (c) 2009 Advanced Computing Technologies LLC
- * Written by: John H. Baldwin <jhb at FreeBSD.org>
+ * Copyright (c) 2011 Gleb Kurtsou <gleb at FreeBSD.org>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -23,26 +22,24 @@
* 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.
- *
- * $FreeBSD$
- */
-
-/*
- * This file defines compatiblity symbol versions for old system calls. It
- * is included in all generated system call files.
*/
-#ifndef __LIBC_COMPAT_H__
-#define __LIBC_COMPAT_H__
-
-#define __sym_compat(sym,impl,verid) \
- .symver impl, sym at verid
-
-__sym_compat(__semctl, freebsd7___semctl, FBSD_1.0);
-__sym_compat(msgctl, freebsd7_msgctl, FBSD_1.0);
-__sym_compat(shmctl, freebsd7_shmctl, FBSD_1.0);
-
-#undef __sym_compat
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
-#endif /* __LIBC_COMPAT_H__ */
+#include "namespace.h"
+#include <sys/param.h>
+#include <sys/fcntl.h>
+#include <sys/syscall.h>
+#include <sys/stat.h>
+#include <unistd.h>
+#include "libc_private.h"
+
+int __sys_mknodat(int, const char *, mode_t, dev_t);
+
+int
+mknod(const char *path, mode_t mode, dev_t dev)
+{
+ return (__sys_mknodat(AT_FDCWD, path, mode, dev));
+}
Copied and modified: projects/ino64/lib/libc/sys/stat.c (from r276120, projects/ino64/lib/libc/include/compat.h)
==============================================================================
--- projects/ino64/lib/libc/include/compat.h Tue Dec 23 08:40:24 2014 (r276120, copy source)
+++ projects/ino64/lib/libc/sys/stat.c Tue Dec 23 08:40:32 2014 (r276121)
@@ -1,6 +1,5 @@
/*-
- * Copyright (c) 2009 Advanced Computing Technologies LLC
- * Written by: John H. Baldwin <jhb at FreeBSD.org>
+ * Copyright (c) 2012 Gleb Kurtsou <gleb at FreeBSD.org>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -23,26 +22,22 @@
* 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.
- *
- * $FreeBSD$
- */
-
-/*
- * This file defines compatiblity symbol versions for old system calls. It
- * is included in all generated system call files.
*/
-#ifndef __LIBC_COMPAT_H__
-#define __LIBC_COMPAT_H__
-
-#define __sym_compat(sym,impl,verid) \
- .symver impl, sym at verid
-
-__sym_compat(__semctl, freebsd7___semctl, FBSD_1.0);
-__sym_compat(msgctl, freebsd7_msgctl, FBSD_1.0);
-__sym_compat(shmctl, freebsd7_shmctl, FBSD_1.0);
-
-#undef __sym_compat
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
-#endif /* __LIBC_COMPAT_H__ */
+#include "namespace.h"
+#include <sys/param.h>
+#include <sys/fcntl.h>
+#include <sys/syscall.h>
+#include <sys/stat.h>
+#include <unistd.h>
+#include "libc_private.h"
+
+int
+stat(const char *path, struct stat *sb)
+{
+ return (__sys_fstatat(AT_FDCWD, path, sb, 0));
+}
More information about the svn-src-projects
mailing list