Author: kib
Date: Mon Dec  3 23:39:45 2018
New Revision: 341447
URL: https://svnweb.freebsd.org/changeset/base/341447

Log:
  Improve procstat reporting for the linux cdev file descriptors.
  
  If there is a vnode attached to the linux file, use it to fill
  kinfo_file.  Otherwise, report a new KF_TYPE_DEV file type, without
  supplying any type-specific information.
  
  KF_TYPE_DEV is supposed to be used by most devfs-specific file types.
  
  Sponsored by: Mellanox Technologies
  MFC after:    1 week

Modified:
  head/sys/compat/linuxkpi/common/src/linux_compat.c
  head/sys/sys/user.h

Modified: head/sys/compat/linuxkpi/common/src/linux_compat.c
==============================================================================
--- head/sys/compat/linuxkpi/common/src/linux_compat.c  Mon Dec  3 22:31:57 
2018        (r341446)
+++ head/sys/compat/linuxkpi/common/src/linux_compat.c  Mon Dec  3 23:39:45 
2018        (r341447)
@@ -49,6 +49,7 @@ __FBSDID("$FreeBSD$");
 #include <sys/rwlock.h>
 #include <sys/mman.h>
 #include <sys/stack.h>
+#include <sys/user.h>
 
 #include <vm/vm.h>
 #include <vm/pmap.h>
@@ -1546,8 +1547,24 @@ static int
 linux_file_fill_kinfo(struct file *fp, struct kinfo_file *kif,
     struct filedesc *fdp)
 {
+       struct linux_file *filp;
+       struct vnode *vp;
+       int error;
 
-       return (0);
+       filp = fp->f_data;
+       vp = filp->f_vnode;
+       if (vp == NULL) {
+               error = 0;
+               kif->kf_type = KF_TYPE_DEV;
+       } else {
+               vref(vp);
+               FILEDESC_SUNLOCK(fdp);
+               error = vn_fill_kinfo_vnode(vp, kif);
+               vrele(vp);
+               kif->kf_type = KF_TYPE_VNODE;
+               FILEDESC_SLOCK(fdp);
+       }
+       return (error);
 }
 
 unsigned int

Modified: head/sys/sys/user.h
==============================================================================
--- head/sys/sys/user.h Mon Dec  3 22:31:57 2018        (r341446)
+++ head/sys/sys/user.h Mon Dec  3 23:39:45 2018        (r341447)
@@ -262,6 +262,7 @@ struct user {
 #define        KF_TYPE_SEM     9
 #define        KF_TYPE_PTS     10
 #define        KF_TYPE_PROCDESC        11
+#define        KF_TYPE_DEV     12
 #define        KF_TYPE_UNKNOWN 255
 
 #define        KF_VTYPE_VNON   0
_______________________________________________
svn-src-all@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to