svn commit: r276116 - projects/ino64/lib/libprocstat

Gleb Kurtsou gleb at FreeBSD.org
Tue Dec 23 08:10:26 UTC 2014


Author: gleb
Date: Tue Dec 23 08:10:23 2014
New Revision: 276116
URL: https://svnweb.freebsd.org/changeset/base/276116

Log:
  libprocstat: Add compat shims.
  
  While there bump 16-bit mode_t to 32-bit.

Added:
  projects/ino64/lib/libprocstat/libprocstat_compat.c   (contents, props changed)
Modified:
  projects/ino64/lib/libprocstat/Makefile
  projects/ino64/lib/libprocstat/Symbol.map
  projects/ino64/lib/libprocstat/Versions.def
  projects/ino64/lib/libprocstat/libprocstat.c
  projects/ino64/lib/libprocstat/libprocstat.h

Modified: projects/ino64/lib/libprocstat/Makefile
==============================================================================
--- projects/ino64/lib/libprocstat/Makefile	Tue Dec 23 08:10:20 2014	(r276115)
+++ projects/ino64/lib/libprocstat/Makefile	Tue Dec 23 08:10:23 2014	(r276116)
@@ -8,7 +8,8 @@ SRCS=	cd9660.c	\
 	common_kvm.c	\
 	core.c		\
 	libprocstat.c	\
-        msdosfs.c	\
+	libprocstat_compat.c	\
+	msdosfs.c	\
 	smbfs.c		\
 	udf.c
 

Modified: projects/ino64/lib/libprocstat/Symbol.map
==============================================================================
--- projects/ino64/lib/libprocstat/Symbol.map	Tue Dec 23 08:10:20 2014	(r276115)
+++ projects/ino64/lib/libprocstat/Symbol.map	Tue Dec 23 08:10:23 2014	(r276116)
@@ -6,9 +6,7 @@ FBSD_1.2 {
 	procstat_freefiles;
 	procstat_freeprocs;
 	procstat_get_pipe_info;
-	procstat_get_pts_info;
 	procstat_get_socket_info;
-	procstat_get_vnode_info;
 	procstat_getfiles;
 	procstat_getprocs;
 	procstat_open_kvm;
@@ -22,8 +20,6 @@ FBSD_1.3 {
 	procstat_freegroups;
 	procstat_freekstack;
 	procstat_freevmmap;
-	procstat_get_sem_info;
-	procstat_get_shm_info;
 	procstat_getargv;
 	procstat_getauxv;
 	procstat_getenvv;
@@ -36,3 +32,10 @@ FBSD_1.3 {
 	procstat_getvmmap;
 	procstat_open_core;
 };
+
+FBSD_1.4 {
+	procstat_get_pts_info;
+	procstat_get_sem_info;
+	procstat_get_shm_info;
+	procstat_get_vnode_info;
+};

Modified: projects/ino64/lib/libprocstat/Versions.def
==============================================================================
--- projects/ino64/lib/libprocstat/Versions.def	Tue Dec 23 08:10:20 2014	(r276115)
+++ projects/ino64/lib/libprocstat/Versions.def	Tue Dec 23 08:10:23 2014	(r276116)
@@ -8,3 +8,6 @@ FBSD_1.2 {
 FBSD_1.3 {
 } FBSD_1.2;
 
+# This version was first added to 11.0-current.
+FBSD_1.4 {
+} FBSD_1.3;

Modified: projects/ino64/lib/libprocstat/libprocstat.c
==============================================================================
--- projects/ino64/lib/libprocstat/libprocstat.c	Tue Dec 23 08:10:20 2014	(r276115)
+++ projects/ino64/lib/libprocstat/libprocstat.c	Tue Dec 23 08:10:23 2014	(r276116)
@@ -1330,12 +1330,12 @@ procstat_get_vnode_info_sysctl(struct fi
 	struct statfs stbuf;
 	struct kinfo_file *kif;
 	struct kinfo_vmentry *kve;
+	char *name, *path;
 	uint64_t fileid;
 	uint64_t size;
-	char *name, *path;
-	uint32_t fsid;
+	uint64_t fsid;
+	uint64_t rdev;
 	uint16_t mode;
-	uint32_t rdev;
 	int vntype;
 	int status;
 
@@ -1538,8 +1538,10 @@ procstat_get_socket_info_sysctl(struct f
 	sock->dom_family = kif->kf_sock_domain;
 	sock->so_pcb = kif->kf_un.kf_sock.kf_sock_pcb;
 	strlcpy(sock->dname, kif->kf_path, sizeof(sock->dname));
-	bcopy(&kif->kf_sa_local, &sock->sa_local, kif->kf_sa_local.ss_len);
-	bcopy(&kif->kf_sa_peer, &sock->sa_peer, kif->kf_sa_peer.ss_len);
+	bcopy(&kif->kf_un.kf_sock.kf_sa_local, &sock->sa_local,
+	    kif->kf_un.kf_sock.kf_sa_local.ss_len);
+	bcopy(&kif->kf_un.kf_sock.kf_sa_peer, &sock->sa_peer,
+	    kif->kf_un.kf_sock.kf_sa_peer.ss_len);
 
 	/*
 	 * Protocol specific data.

Modified: projects/ino64/lib/libprocstat/libprocstat.h
==============================================================================
--- projects/ino64/lib/libprocstat/libprocstat.h	Tue Dec 23 08:10:20 2014	(r276115)
+++ projects/ino64/lib/libprocstat/libprocstat.h	Tue Dec 23 08:10:23 2014	(r276116)
@@ -118,15 +118,15 @@ struct filestat {
 struct vnstat {
 	uint64_t	vn_fileid;
 	uint64_t	vn_size;
+	uint64_t	vn_dev;
+	uint64_t	vn_fsid;
 	char		*vn_mntdir;
-	uint32_t	vn_dev;
-	uint32_t	vn_fsid;
 	int		vn_type;
-	uint16_t	vn_mode;
+	uint32_t	vn_mode;
 	char		vn_devname[SPECNAMELEN + 1];
 };
 struct ptsstat {
-	uint32_t	dev;
+	uint64_t	dev;
 	char		devname[SPECNAMELEN + 1];
 };
 struct pipestat {
@@ -136,11 +136,11 @@ struct pipestat {
 };
 struct semstat {
 	uint32_t	value;
-	uint16_t	mode;
+	uint32_t	mode;
 };
 struct shmstat {
 	uint64_t	size;
-	uint16_t	mode;
+	uint32_t	mode;
 };
 struct sockstat {
 	uint64_t	inp_ppcb;

Added: projects/ino64/lib/libprocstat/libprocstat_compat.c
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ projects/ino64/lib/libprocstat/libprocstat_compat.c	Tue Dec 23 08:10:23 2014	(r276116)
@@ -0,0 +1,144 @@
+/*-
+ * Copyright (c) 2014 Gleb Kurtsou <gleb at FreeBSD.org>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. 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 REGENTS 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 REGENTS 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.
+ *
+ * $FreeBSD$
+ */
+
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
+#include <sys/param.h>
+#include <sys/user.h>
+#include <sys/socket.h>
+#include <string.h>
+
+#include "libprocstat.h"
+
+struct freebsd10_ptsstat {
+	uint32_t	dev;
+	char		devname[SPECNAMELEN + 1];
+};
+
+struct freebsd10_vnstat {
+	uint64_t	vn_fileid;
+	uint64_t	vn_size;
+	char		*vn_mntdir;
+	uint32_t	vn_dev;
+	uint32_t	vn_fsid;
+	int		vn_type;
+	uint16_t	vn_mode;
+	char		vn_devname[SPECNAMELEN + 1];
+};
+struct freebsd10_semstat {
+	uint32_t	value;
+	uint16_t	mode;
+};
+struct freebsd10_shmstat {
+	uint64_t	size;
+	uint16_t	mode;
+};
+
+int	freebsd10_procstat_get_pts_info(struct procstat *procstat,
+    struct filestat *fst, struct freebsd10_ptsstat *pts, char *errbuf);
+int	freebsd10_procstat_get_sem_info(struct procstat *procstat,
+    struct filestat *fst, struct freebsd10_semstat *sem, char *errbuf);
+int	freebsd10_procstat_get_shm_info(struct procstat *procstat,
+    struct filestat *fst, struct freebsd10_shmstat *shm, char *errbuf);
+int	freebsd10_procstat_get_vnode_info(struct procstat *procstat,
+    struct filestat *fst, struct freebsd10_vnstat *vn, char *errbuf);
+
+int
+freebsd10_procstat_get_pts_info(struct procstat *procstat,
+    struct filestat *fst, struct freebsd10_ptsstat *pts_compat, char *errbuf)
+{
+	struct ptsstat pts;
+	int r;
+
+	r = procstat_get_pts_info(procstat, fst, &pts, errbuf);
+	if (r != 0)
+		return (r);
+	pts_compat->dev = pts.dev;
+	memcpy(pts_compat->devname, pts.devname,
+	    sizeof(pts_compat->devname));
+	return (0);
+}
+
+int
+freebsd10_procstat_get_sem_info(struct procstat *procstat,
+    struct filestat *fst, struct freebsd10_semstat *sem_compat, char *errbuf)
+{
+	struct semstat sem;
+	int r;
+
+	r = procstat_get_sem_info(procstat, fst, &sem, errbuf);
+	if (r != 0)
+		return (r);
+	sem_compat->value = sem.value;
+	sem_compat->mode = sem.mode;
+	return (0);
+}
+
+int
+freebsd10_procstat_get_shm_info(struct procstat *procstat,
+    struct filestat *fst, struct freebsd10_shmstat *shm_compat, char *errbuf)
+{
+	struct shmstat shm;
+	int r;
+
+	r = procstat_get_shm_info(procstat, fst, &shm, errbuf);
+	if (r != 0)
+		return (r);
+	shm_compat->size = shm.size;
+	shm_compat->mode = shm.mode;
+	return (0);
+}
+
+int
+freebsd10_procstat_get_vnode_info(struct procstat *procstat,
+    struct filestat *fst, struct freebsd10_vnstat *vn_compat, char *errbuf)
+{
+	struct vnstat vn;
+	int r;
+
+	r = procstat_get_vnode_info(procstat, fst, &vn, errbuf);
+	if (r != 0)
+		return (r);
+	vn_compat->vn_fileid = vn.vn_fileid;
+	vn_compat->vn_size = vn.vn_size;
+	vn_compat->vn_mntdir = vn.vn_mntdir;
+	vn_compat->vn_dev = vn.vn_dev;
+	vn_compat->vn_fsid = vn.vn_fsid;
+	vn_compat->vn_type = vn.vn_type;
+	vn_compat->vn_mode = vn.vn_mode;
+	memcpy(vn_compat->vn_devname, vn.vn_devname,
+	    sizeof(vn_compat->vn_devname));
+	return (0);
+}
+
+__sym_compat(procstat_get_pts_info, freebsd10_procstat_get_pts_info, FBSD_1.2);
+__sym_compat(procstat_get_vnode_info, freebsd10_procstat_get_vnode_info,
+    FBSD_1.2);
+__sym_compat(procstat_get_sem_info, freebsd10_procstat_get_sem_info, FBSD_1.3);
+__sym_compat(procstat_get_shm_info, freebsd10_procstat_get_shm_info, FBSD_1.3);


More information about the svn-src-projects mailing list