From owner-svn-src-projects@FreeBSD.ORG Wed Jun 24 12:07:25 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 A42F210656F4; Wed, 24 Jun 2009 12:07:25 +0000 (UTC) (envelope-from lulf@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 6E3EE8FC2D; Wed, 24 Jun 2009 12:07:25 +0000 (UTC) (envelope-from lulf@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 n5OC7PpJ013708; Wed, 24 Jun 2009 12:07:25 GMT (envelope-from lulf@svn.freebsd.org) Received: (from lulf@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n5OC7PZx013705; Wed, 24 Jun 2009 12:07:25 GMT (envelope-from lulf@svn.freebsd.org) Message-Id: <200906241207.n5OC7PZx013705@svn.freebsd.org> From: Ulf Lilleengen Date: Wed, 24 Jun 2009 12:07:25 +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: r194829 - in projects/libprocstat/sys: kern sys 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: Wed, 24 Jun 2009 12:07:41 -0000 Author: lulf Date: Wed Jun 24 12:07:25 2009 New Revision: 194829 URL: http://svn.freebsd.org/changeset/base/194829 Log: - Add extra fields to kinfo_file that is needed by fstat, and export it in the kern.proc.filedesc sysctl. Modified: projects/libprocstat/sys/kern/kern_descrip.c projects/libprocstat/sys/sys/user.h Modified: projects/libprocstat/sys/kern/kern_descrip.c ============================================================================== --- projects/libprocstat/sys/kern/kern_descrip.c Wed Jun 24 12:06:15 2009 (r194828) +++ projects/libprocstat/sys/kern/kern_descrip.c Wed Jun 24 12:07:25 2009 (r194829) @@ -2887,6 +2887,7 @@ static int export_vnode_for_sysctl(struct vnode *vp, int type, struct kinfo_file *kif, struct filedesc *fdp, struct sysctl_req *req) { + struct vattr va; int error; char *fullpath, *freepath; int vfslocked; @@ -2913,7 +2914,14 @@ export_vnode_for_sysctl(struct vnode *vp freepath = NULL; fullpath = "-"; FILEDESC_SUNLOCK(fdp); + VOP_GETATTR(vp, &va, NULL); + kif->kf_fsid = va.va_fsid; + kif->kf_fileid = va.va_fileid; + kif->kf_mode = MAKEIMODE(va.va_type, va.va_mode); + kif->kf_size = va.va_size; + kif->kf_rdev = va.va_rdev; vn_fullpath(curthread, vp, &fullpath, &freepath); + vfslocked = VFS_LOCK_GIANT(vp->v_mount); vrele(vp); VFS_UNLOCK_GIANT(vfslocked); @@ -2940,6 +2948,7 @@ sysctl_kern_proc_filedesc(SYSCTL_HANDLER struct filedesc *fdp; int error, i, *name; struct socket *so; + struct vattr va; struct vnode *vp; struct file *fp; struct proc *p; @@ -3087,6 +3096,12 @@ sysctl_kern_proc_filedesc(SYSCTL_HANDLER freepath = NULL; fullpath = "-"; FILEDESC_SUNLOCK(fdp); + VOP_GETATTR(vp, &va, NULL); + kif->kf_fsid = va.va_fsid; + kif->kf_fileid = va.va_fileid; + kif->kf_mode = MAKEIMODE(va.va_type, va.va_mode); + kif->kf_size = va.va_size; + kif->kf_rdev = va.va_rdev; vn_fullpath(curthread, vp, &fullpath, &freepath); vfslocked = VFS_LOCK_GIANT(vp->v_mount); vrele(vp); Modified: projects/libprocstat/sys/sys/user.h ============================================================================== --- projects/libprocstat/sys/sys/user.h Wed Jun 24 12:06:15 2009 (r194828) +++ projects/libprocstat/sys/sys/user.h Wed Jun 24 12:07:25 2009 (r194829) @@ -307,7 +307,7 @@ struct kinfo_ofile { }; #if defined(__amd64__) || defined(__i386__) -#define KINFO_FILE_SIZE 1392 +#define KINFO_FILE_SIZE 1412 #endif struct kinfo_file { @@ -324,6 +324,11 @@ struct kinfo_file { int kf_sock_protocol; /* Socket protocol. */ struct sockaddr_storage kf_sa_local; /* Socket address. */ struct sockaddr_storage kf_sa_peer; /* Peer address. */ + long kf_fsid; /* Vnode filesystem id. */ + long kf_fileid; /* Global file id. */ + mode_t kf_mode; /* File mode. */ + u_long kf_size; /* File size. */ + dev_t kf_rdev; /* File device. */ int _kf_ispare[16]; /* Space for more stuff. */ /* Truncated before copyout in sysctl */ char kf_path[PATH_MAX]; /* Path to file, if any. */