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