Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 23 Dec 2014 08:40:33 +0000 (UTC)
From:      Gleb Kurtsou <gleb@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject:   svn commit: r276121 - in projects/ino64/lib/libc: include sys
Message-ID:  <201412230840.sBN8eXZl092306@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
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@FreeBSD.org>
+ * Copyright (c) 2012 Gleb Kurtsou <gleb@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@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@FreeBSD.org>
+ * Copyright (c) 2012 Gleb Kurtsou <gleb@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@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@FreeBSD.org>
+ * Copyright (c) 2011 Gleb Kurtsou <gleb@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@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@FreeBSD.org>
+ * Copyright (c) 2012 Gleb Kurtsou <gleb@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@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));
+}



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201412230840.sBN8eXZl092306>