From owner-svn-src-projects@FreeBSD.ORG Thu Jul 16 13:26:05 2009 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id A45621065710; Thu, 16 Jul 2009 13:26:05 +0000 (UTC) (envelope-from stas@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 484088FC27; Thu, 16 Jul 2009 13:26:04 +0000 (UTC) (envelope-from stas@FreeBSD.org) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id n6GDQ4qJ030401; Thu, 16 Jul 2009 13:26:04 GMT (envelope-from stas@svn.freebsd.org) Received: (from stas@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n6GDQ4VT030396; Thu, 16 Jul 2009 13:26:04 GMT (envelope-from stas@svn.freebsd.org) Message-Id: <200907161326.n6GDQ4VT030396@svn.freebsd.org> From: Stanislav Sedov Date: Thu, 16 Jul 2009 13:26:04 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r195718 - projects/libprocstat/usr.bin/fstat X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 16 Jul 2009 13:26:06 -0000 Author: stas Date: Thu Jul 16 13:26:03 2009 New Revision: 195718 URL: http://svn.freebsd.org/changeset/base/195718 Log: - Add device name extraction. Modified: projects/libprocstat/usr.bin/fstat/common.c projects/libprocstat/usr.bin/fstat/common.h projects/libprocstat/usr.bin/fstat/fstat.c projects/libprocstat/usr.bin/fstat/libprocstat.c Modified: projects/libprocstat/usr.bin/fstat/common.c ============================================================================== --- projects/libprocstat/usr.bin/fstat/common.c Thu Jul 16 13:03:05 2009 (r195717) +++ projects/libprocstat/usr.bin/fstat/common.c Thu Jul 16 13:26:03 2009 (r195718) @@ -76,6 +76,7 @@ __FBSDID("$FreeBSD$"); #include #include +#include #include #include #include @@ -118,14 +119,16 @@ kvm_read_all(kvm_t *kd, unsigned long ad return (error == (ssize_t)(nbytes)); } -char * -kdevtoname(kvm_t *kd, struct cdev *dev) +int +kdevtoname(kvm_t *kd, struct cdev *dev, char *buf) { struct cdev si; + assert(buf); if (!kvm_read_all(kd, (unsigned long)dev, &si, sizeof(si))) - return (NULL); - return (strdup(si.__si_namebuf)); + return (1); + strlcpy(buf, si.__si_namebuf, SPECNAMELEN + 1); + return (0); } int @@ -228,6 +231,7 @@ dev2udev(kvm_t *kd, struct cdev *dev) { struct cdev_priv priv; + assert(kd); if (kvm_read_all(kd, (unsigned long)cdev2priv(dev), &priv, sizeof(priv))) { return ((dev_t)priv.cdp_inode); Modified: projects/libprocstat/usr.bin/fstat/common.h ============================================================================== --- projects/libprocstat/usr.bin/fstat/common.h Thu Jul 16 13:03:05 2009 (r195717) +++ projects/libprocstat/usr.bin/fstat/common.h Thu Jul 16 13:26:03 2009 (r195718) @@ -47,6 +47,7 @@ struct filestat { struct vnstat { dev_t vn_dev; + char vn_devname[SPECNAMELEN + 1]; int vn_type; long vn_fsid; long vn_fileid; @@ -57,6 +58,7 @@ struct vnstat { struct ptsstat { dev_t dev; + char devname[SPECNAMELEN + 1]; }; struct pipestat { @@ -84,7 +86,7 @@ extern int vflg; dev_t dev2udev(kvm_t *kd, struct cdev *dev); void dprintf(FILE *file, const char *fmt, ...); -char *kdevtoname(kvm_t *kd, struct cdev *dev); +int kdevtoname(kvm_t *kd, struct cdev *dev, char *); int kvm_read_all(kvm_t *kd, unsigned long addr, void *buf, size_t nbytes); Modified: projects/libprocstat/usr.bin/fstat/fstat.c ============================================================================== --- projects/libprocstat/usr.bin/fstat/fstat.c Thu Jul 16 13:03:05 2009 (r195717) +++ projects/libprocstat/usr.bin/fstat/fstat.c Thu Jul 16 13:26:03 2009 (r195718) @@ -485,11 +485,11 @@ print_pts_info(struct procstat *procstat return; } printf("* pseudo-terminal master "); - if (nflg) { + if (nflg || !*pts.devname) { printf("%10d,%-2d", major(pts.dev), minor(pts.dev)); - } /* else { - printf("%10s", pts.name); - } */ + } else { + printf("%10s", pts.devname); + } print_access_flags(fst->fs_fflags); } @@ -497,7 +497,6 @@ static void print_vnode_info(struct procstat *procstat, struct filestat *fst) { struct vnstat vn; - char *name; const char *badtype; char errbuf[_POSIX2_LINE_MAX]; char mode[15]; @@ -532,12 +531,10 @@ print_vnode_info(struct procstat *procst (void)printf(" %6ld %10s", vn.vn_fileid, mode); if (vn.vn_type == PS_FST_VTYPE_VBLK || vn.vn_type == PS_FST_VTYPE_VCHR) { - name = NULL; -// name = fst->vnode.dev.name; - if (nflg || !name) + if (nflg || !*vn.vn_devname) printf(" %2d,%-2d", major(vn.vn_dev), minor(vn.vn_dev)); else { - printf(" %6s", name); + printf(" %6s", vn.vn_devname); } } else printf(" %6lu", vn.vn_size); Modified: projects/libprocstat/usr.bin/fstat/libprocstat.c ============================================================================== --- projects/libprocstat/usr.bin/fstat/libprocstat.c Thu Jul 16 13:03:05 2009 (r195717) +++ projects/libprocstat/usr.bin/fstat/libprocstat.c Thu Jul 16 13:26:03 2009 (r195718) @@ -558,7 +558,10 @@ procstat_get_pts_info_kvm(kvm_t *kd, str warnx("can't read tty at %p", (void *)ttyp); goto fail; } - pts->dev = dev2udev(kd, tty.t_dev); + if (tty.t_dev != NULL) { + pts->dev = dev2udev(kd, tty.t_dev); + (void)kdevtoname(kd, tty.t_dev, pts->devname); + } return (0); fail: @@ -642,8 +645,10 @@ procstat_get_vnode_info_kvm(kvm_t *kd, s return (1); } vn->mntdir = getmnton(kd, vnode.v_mount); - if (vnode.v_rdev != NULL) + if (vnode.v_rdev != NULL) { vn->vn_dev = dev2udev(kd, vnode.v_rdev); + (void)kdevtoname(kd, vnode.v_rdev, vn->vn_devname); + } return (0); fail: