2 * Copyright (c) 2014 Gleb Kurtsou <gleb@FreeBSD.org>
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
8 * 1. Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer.
10 * 2. Redistributions in binary form must reproduce the above copyright
11 * notice, this list of conditions and the following disclaimer in the
12 * documentation and/or other materials provided with the distribution.
14 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
15 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
16 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
17 * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
18 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
19 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
20 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
21 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
22 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
23 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
29 #include <sys/cdefs.h>
30 __FBSDID("$FreeBSD$");
32 #include <sys/param.h>
34 #include <sys/socket.h>
37 #include "libprocstat.h"
39 struct freebsd11_ptsstat {
41 char devname[SPECNAMELEN + 1];
44 struct freebsd11_vnstat {
52 char vn_devname[SPECNAMELEN + 1];
54 struct freebsd11_semstat {
58 struct freebsd11_shmstat {
63 int freebsd11_procstat_get_pts_info(struct procstat *procstat,
64 struct filestat *fst, struct freebsd11_ptsstat *pts, char *errbuf);
65 int freebsd11_procstat_get_sem_info(struct procstat *procstat,
66 struct filestat *fst, struct freebsd11_semstat *sem, char *errbuf);
67 int freebsd11_procstat_get_shm_info(struct procstat *procstat,
68 struct filestat *fst, struct freebsd11_shmstat *shm, char *errbuf);
69 int freebsd11_procstat_get_vnode_info(struct procstat *procstat,
70 struct filestat *fst, struct freebsd11_vnstat *vn, char *errbuf);
73 freebsd11_procstat_get_pts_info(struct procstat *procstat,
74 struct filestat *fst, struct freebsd11_ptsstat *pts_compat, char *errbuf)
79 r = procstat_get_pts_info(procstat, fst, &pts, errbuf);
82 pts_compat->dev = pts.dev;
83 memcpy(pts_compat->devname, pts.devname,
84 sizeof(pts_compat->devname));
89 freebsd11_procstat_get_sem_info(struct procstat *procstat,
90 struct filestat *fst, struct freebsd11_semstat *sem_compat, char *errbuf)
95 r = procstat_get_sem_info(procstat, fst, &sem, errbuf);
98 sem_compat->value = sem.value;
99 sem_compat->mode = sem.mode;
104 freebsd11_procstat_get_shm_info(struct procstat *procstat,
105 struct filestat *fst, struct freebsd11_shmstat *shm_compat, char *errbuf)
110 r = procstat_get_shm_info(procstat, fst, &shm, errbuf);
113 shm_compat->size = shm.size;
114 shm_compat->mode = shm.mode;
119 freebsd11_procstat_get_vnode_info(struct procstat *procstat,
120 struct filestat *fst, struct freebsd11_vnstat *vn_compat, char *errbuf)
125 r = procstat_get_vnode_info(procstat, fst, &vn, errbuf);
128 vn_compat->vn_fileid = vn.vn_fileid;
129 vn_compat->vn_size = vn.vn_size;
130 vn_compat->vn_mntdir = vn.vn_mntdir;
131 vn_compat->vn_dev = vn.vn_dev;
132 vn_compat->vn_fsid = vn.vn_fsid;
133 vn_compat->vn_type = vn.vn_type;
134 vn_compat->vn_mode = vn.vn_mode;
135 memcpy(vn_compat->vn_devname, vn.vn_devname,
136 sizeof(vn_compat->vn_devname));
140 __sym_compat(procstat_get_pts_info, freebsd11_procstat_get_pts_info, FBSD_1.2);
141 __sym_compat(procstat_get_vnode_info, freebsd11_procstat_get_vnode_info,
143 __sym_compat(procstat_get_sem_info, freebsd11_procstat_get_sem_info, FBSD_1.3);
144 __sym_compat(procstat_get_shm_info, freebsd11_procstat_get_shm_info, FBSD_1.3);