svn commit: r195951 - in projects/libprocstat: sys/kern sys/sys
usr.bin/fstat
Stanislav Sedov
stas at FreeBSD.org
Wed Jul 29 21:09:03 UTC 2009
Author: stas
Date: Wed Jul 29 21:09:03 2009
New Revision: 195951
URL: http://svn.freebsd.org/changeset/base/195951
Log:
- Rearrange kf_un fields to eliminate possible architecture-dependent
paddings. Also name fields more consistently.
- Pad all kf_un elements explicitly to avoid confusion.
Suggested by: rwatson
Modified:
projects/libprocstat/sys/kern/kern_descrip.c
projects/libprocstat/sys/sys/user.h
projects/libprocstat/usr.bin/fstat/libprocstat.c
Modified: projects/libprocstat/sys/kern/kern_descrip.c
==============================================================================
--- projects/libprocstat/sys/kern/kern_descrip.c Wed Jul 29 20:32:28 2009 (r195950)
+++ projects/libprocstat/sys/kern/kern_descrip.c Wed Jul 29 21:09:03 2009 (r195951)
@@ -3183,11 +3183,11 @@ fill_vnode_info(struct vnode *vp, struct
VFS_UNLOCK_GIANT(vfslocked);
if (error != 0)
return (error);
- kif->kf_un.file.kf_file_fsid = va.va_fsid;
- kif->kf_un.file.kf_file_fileid = va.va_fileid;
- kif->kf_un.file.kf_file_mode = MAKEIMODE(va.va_type, va.va_mode);
- kif->kf_un.file.kf_file_size = va.va_size;
- kif->kf_un.file.kf_file_rdev = va.va_rdev;
+ kif->kf_un.kf_file.kf_file_fsid = va.va_fsid;
+ kif->kf_un.kf_file.kf_file_fileid = va.va_fileid;
+ kif->kf_un.kf_file.kf_file_mode = MAKEIMODE(va.va_type, va.va_mode);
+ kif->kf_un.kf_file.kf_file_size = va.va_size;
+ kif->kf_un.kf_file.kf_file_rdev = va.va_rdev;
return (0);
}
@@ -3204,14 +3204,14 @@ fill_socket_info(struct socket *so, stru
kif->kf_sock_domain = so->so_proto->pr_domain->dom_family;
kif->kf_sock_type = so->so_type;
kif->kf_sock_protocol = so->so_proto->pr_protocol;
- kif->kf_un.sock.kf_sock_pcb = (uintptr_t)so->so_pcb;
+ kif->kf_un.kf_sock.kf_sock_pcb = (uintptr_t)so->so_pcb;
switch(kif->kf_sock_domain) {
case AF_INET:
case AF_INET6:
if (kif->kf_sock_protocol == IPPROTO_TCP) {
if (so->so_pcb != NULL) {
inpcb = (struct inpcb *)(so->so_pcb);
- kif->kf_un.sock.kf_sock_inpcb =
+ kif->kf_un.kf_sock.kf_sock_inpcb =
(uintptr_t)inpcb->inp_ppcb;
}
}
@@ -3220,11 +3220,11 @@ fill_socket_info(struct socket *so, stru
if (so->so_pcb != NULL) {
unpcb = (struct unpcb *)(so->so_pcb);
if (unpcb->unp_conn) {
- kif->kf_un.sock.kf_sock_unpconn =
+ kif->kf_un.kf_sock.kf_sock_unpconn =
(uintptr_t)unpcb->unp_conn;
- kif->kf_un.sock.kf_sock_rcv_sb_state =
+ kif->kf_un.kf_sock.kf_sock_rcv_sb_state =
so->so_rcv.sb_state;
- kif->kf_un.sock.kf_sock_snd_sb_state =
+ kif->kf_un.kf_sock.kf_sock_snd_sb_state =
so->so_snd.sb_state;
}
}
@@ -3251,7 +3251,7 @@ fill_pts_info(struct tty *tp, struct kin
if (tp == NULL)
return (1);
- kif->kf_un.pts.pts_dev = tty_udev(tp);
+ kif->kf_un.kf_pts.kf_pts_dev = tty_udev(tp);
strlcpy(kif->kf_path, tty_devname(tp), sizeof(kif->kf_path));
return (0);
}
@@ -3262,9 +3262,9 @@ fill_pipe_info(struct pipe *pi, struct k
if (pi == NULL)
return (1);
- kif->kf_un.pipe.pipe_addr = (uintptr_t)pi;
- kif->kf_un.pipe.pipe_peer = (uintptr_t)pi->pipe_peer;
- kif->kf_un.pipe.pipe_buffer_cnt = pi->pipe_buffer.cnt;
+ kif->kf_un.kf_pipe.kf_pipe_addr = (uintptr_t)pi;
+ kif->kf_un.kf_pipe.kf_pipe_peer = (uintptr_t)pi->pipe_peer;
+ kif->kf_un.kf_pipe.kf_pipe_buffer_cnt = pi->pipe_buffer.cnt;
return (0);
}
Modified: projects/libprocstat/sys/sys/user.h
==============================================================================
--- projects/libprocstat/sys/sys/user.h Wed Jul 29 20:32:28 2009 (r195950)
+++ projects/libprocstat/sys/sys/user.h Wed Jul 29 21:09:03 2009 (r195951)
@@ -336,39 +336,46 @@ struct kinfo_file {
struct sockaddr_storage kf_sa_peer; /* Peer address. */
union {
struct {
- /* Send buffer state. */
- uint16_t kf_sock_snd_sb_state;
- /* Receive buffer state. */
- uint16_t kf_sock_rcv_sb_state;
/* Address of so_pcb. */
uint64_t kf_sock_pcb;
/* Address of inp_ppcb. */
uint64_t kf_sock_inpcb;
/* Address of unp_conn. */
uint64_t kf_sock_unpconn;
- /* Round to 64-bit alignment. */
- int kf_sock_pad;
- } sock;
+ /* Send buffer state. */
+ uint16_t kf_sock_snd_sb_state;
+ /* Receive buffer state. */
+ uint16_t kf_sock_rcv_sb_state;
+ /* Round to 64 bit alignment. */
+ uint32_t kf_sock_pad0;
+ } kf_sock;
struct {
- /* Vnode filesystem id. */
- dev_t kf_file_fsid;
- /* File device. */
- dev_t kf_file_rdev;
/* Global file id. */
uint64_t kf_file_fileid;
/* File size. */
off_t kf_file_size;
+ /* Vnode filesystem id. */
+ dev_t kf_file_fsid;
+ /* File device. */
+ dev_t kf_file_rdev;
/* File mode. */
mode_t kf_file_mode;
- } file;
+ /* Round to 64 bit alignment. */
+ uint16_t kf_file_pad0;
+ uint32_t kf_file_pad1;
+ } kf_file;
struct {
- uint32_t pipe_buffer_cnt;
- uint64_t pipe_addr;
- uint64_t pipe_peer;
- } pipe;
+ uint64_t kf_pipe_addr;
+ uint64_t kf_pipe_peer;
+ uint32_t kf_pipe_buffer_cnt;
+ /* Round to 64 bit alignment. */
+ uint32_t kf_pipe_pad0[3];
+ } kf_pipe;
struct {
- dev_t pts_dev;
- } pts;
+ dev_t kf_pts_dev;
+ /* Round to 64 bit alignment. */
+ uint32_t kf_pts_pad0[7];
+ } kf_pts;
} kf_un;
uint16_t kf_status; /* Status flags. */
uint16_t kf_pad1; /* Round to 32 bit alignment. */
Modified: projects/libprocstat/usr.bin/fstat/libprocstat.c
==============================================================================
--- projects/libprocstat/usr.bin/fstat/libprocstat.c Wed Jul 29 20:32:28 2009 (r195950)
+++ projects/libprocstat/usr.bin/fstat/libprocstat.c Wed Jul 29 21:09:03 2009 (r195951)
@@ -650,9 +650,9 @@ procstat_get_pipe_info_sysctl(struct fil
kif = fst->fs_typedep;
if (kif == NULL)
return (1);
- ps->addr = kif->kf_un.pipe.pipe_addr;
- ps->peer = kif->kf_un.pipe.pipe_peer;
- ps->buffer_cnt = kif->kf_un.pipe.pipe_buffer_cnt;
+ ps->addr = kif->kf_un.kf_pipe.kf_pipe_addr;
+ ps->peer = kif->kf_un.kf_pipe.kf_pipe_peer;
+ ps->buffer_cnt = kif->kf_un.kf_pipe.kf_pipe_buffer_cnt;
return (0);
}
@@ -713,7 +713,7 @@ procstat_get_pts_info_sysctl(struct file
kif = fst->fs_typedep;
if (kif == NULL)
return (0);
- pts->dev = kif->kf_un.pts.pts_dev;
+ pts->dev = kif->kf_un.kf_pts.kf_pts_dev;
strlcpy(pts->devname, kif->kf_path, sizeof(pts->devname));
return (0);
}
@@ -883,12 +883,12 @@ procstat_get_vnode_info_sysctl(struct fi
status = kve->kve_status;
} else {
kif = fst->fs_typedep;
- fileid = kif->kf_un.file.kf_file_fileid;
- fsid = kif->kf_un.file.kf_file_fsid;
- mode = kif->kf_un.file.kf_file_mode;
+ fileid = kif->kf_un.kf_file.kf_file_fileid;
+ fsid = kif->kf_un.kf_file.kf_file_fsid;
+ mode = kif->kf_un.kf_file.kf_file_mode;
path = kif->kf_path;
- rdev = kif->kf_un.file.kf_file_rdev;
- size = kif->kf_un.file.kf_file_size;
+ rdev = kif->kf_un.kf_file.kf_file_rdev;
+ size = kif->kf_un.kf_file.kf_file_size;
vntype = kinfo_vtype2fst(kif->kf_vnode_type);
status = kif->kf_status;
}
@@ -1053,7 +1053,7 @@ procstat_get_socket_info_sysctl(struct f
sock->type = kif->kf_sock_type;
sock->proto = kif->kf_sock_protocol;
sock->dom_family = kif->kf_sock_domain;
- sock->so_pcb = kif->kf_un.sock.kf_sock_pcb;
+ sock->so_pcb = kif->kf_un.kf_sock.kf_sock_pcb;
strlcpy(sock->dname, kif->kf_path, sizeof(sock->dname));
/*
@@ -1063,16 +1063,16 @@ procstat_get_socket_info_sysctl(struct f
case AF_INET:
case AF_INET6:
if (sock->proto == IPPROTO_TCP)
- sock->inp_ppcb = kif->kf_un.sock.kf_sock_inpcb;
+ sock->inp_ppcb = kif->kf_un.kf_sock.kf_sock_inpcb;
break;
case AF_UNIX:
- if (kif->kf_un.sock.kf_sock_unpconn != 0) {
+ if (kif->kf_un.kf_sock.kf_sock_unpconn != 0) {
sock->so_rcv_sb_state =
- kif->kf_un.sock.kf_sock_rcv_sb_state;
+ kif->kf_un.kf_sock.kf_sock_rcv_sb_state;
sock->so_snd_sb_state =
- kif->kf_un.sock.kf_sock_snd_sb_state;
+ kif->kf_un.kf_sock.kf_sock_snd_sb_state;
sock->unp_conn =
- kif->kf_un.sock.kf_sock_unpconn;
+ kif->kf_un.kf_sock.kf_sock_unpconn;
}
break;
default:
More information about the svn-src-projects
mailing list