On Sat, 2020-11-28 at 16:23 -0800, Philip Guenther wrote:
> On Thu, Nov 26, 2020 at 1:08 PM Martijn van Duren
> <[email protected]> wrote:
> > I'm currently playing around a bit with kvm_getfiles and found that I
> > couldn't use KERN_FILE_BYFILE with DTYPE_SOCKET.
> > According to kvm_getfiles(3):
> > For KERN_FILE_BYFILE the recognized file types are defined in
> > <sys/file.h>:
> >
> > DTYPE_VNODE files and devices
> > DTYPE_SOCKET sockets, regardless of domain
> > DTYPE_PIPE pipes and FIFOs
> > DTYPE_KQUEUE kqueues
> >
> > But these defines are under ifdef _KERNEL.
> >
> > So is the manpage lying here, or should the defines be hoisted out
> > of the ifdef?
> >
>
>
> Let's go ahead and hoist them: FreeBSD and NetBSD already have. If possible,
> the diff to do that should also simplify the #include bits in these files:
> usr.bin/netstat/inet.c
> usr.bin/fstat/fstat.c
> usr.bin/fstat/fuser.c
> usr.bin/systat/netstat.c
>
>
> Philip Guenther
>
The others have the #endif/#ifdef break rather low in the file.
Personally I reckon it's better reading if the common code is more
towards the top.
OK?
martijn@
Index: file.h
===================================================================
RCS file: /cvs/src/sys/sys/file.h,v
retrieving revision 1.61
diff -u -p -r1.61 file.h
--- file.h 13 Mar 2020 10:07:01 -0000 1.61
+++ file.h 29 Nov 2020 20:12:30 -0000
@@ -38,7 +38,15 @@
#else /* _KERNEL */
#include <sys/queue.h>
#include <sys/mutex.h>
+#endif /* _KERNEL */
+#define DTYPE_VNODE 1 /* file */
+#define DTYPE_SOCKET 2 /* communications endpoint */
+#define DTYPE_PIPE 3 /* pipe */
+#define DTYPE_KQUEUE 4 /* event queue */
+#define DTYPE_DMABUF 5 /* DMA buffer (for DRM) */
+
+#ifdef _KERNEL
struct proc;
struct uio;
struct knote;
@@ -80,11 +88,6 @@ struct file {
LIST_ENTRY(file) f_list;/* [F] list of active files */
struct mutex f_mtx;
u_int f_flag; /* [a] see fcntl.h */
-#define DTYPE_VNODE 1 /* file */
-#define DTYPE_SOCKET 2 /* communications endpoint */
-#define DTYPE_PIPE 3 /* pipe */
-#define DTYPE_KQUEUE 4 /* event queue */
-#define DTYPE_DMABUF 5 /* DMA buffer (for DRM) */
u_int f_iflags; /* [a] internal flags */
int f_type; /* [I] descriptor type */
u_int f_count; /* [a] reference count */