diff --git a/lib/libprocstat/libprocstat.h b/lib/libprocstat/libprocstat.h --- a/lib/libprocstat/libprocstat.h +++ b/lib/libprocstat/libprocstat.h @@ -73,6 +73,7 @@ #define PS_FST_TYPE_PROCDESC 13 #define PS_FST_TYPE_DEV 14 #define PS_FST_TYPE_EVENTFD 15 +#define PS_FST_TYPE_DMABUF 16 /* * Special descriptor numbers. diff --git a/lib/libprocstat/libprocstat.c b/lib/libprocstat/libprocstat.c --- a/lib/libprocstat/libprocstat.c +++ b/lib/libprocstat/libprocstat.c @@ -632,6 +632,10 @@ type = PS_FST_TYPE_EVENTFD; data = file.f_data; break; + case DTYPE_DMABUF: + type = PS_FST_TYPE_DMABUF; + data = file.f_data; + break; default: continue; } @@ -724,6 +728,7 @@ { KF_TYPE_SOCKET, PS_FST_TYPE_SOCKET }, { KF_TYPE_VNODE, PS_FST_TYPE_VNODE }, { KF_TYPE_EVENTFD, PS_FST_TYPE_EVENTFD }, + { KF_TYPE_DMABUF, PS_FST_TYPE_DMABUF }, { KF_TYPE_UNKNOWN, PS_FST_TYPE_UNKNOWN } }; #define NKFTYPES (sizeof(kftypes2fst) / sizeof(*kftypes2fst)) diff --git a/sys/kern/kern_descrip.c b/sys/kern/kern_descrip.c --- a/sys/kern/kern_descrip.c +++ b/sys/kern/kern_descrip.c @@ -4613,6 +4613,8 @@ return ("eventfd"); case DTYPE_LINUXTFD: return ("ltimer"); + case DTYPE_DMABUF: + return ("dmabuf"); default: return ("unkn"); } diff --git a/sys/sys/file.h b/sys/sys/file.h --- a/sys/sys/file.h +++ b/sys/sys/file.h @@ -71,6 +71,7 @@ #define DTYPE_PROCDESC 12 /* process descriptor */ #define DTYPE_EVENTFD 13 /* eventfd */ #define DTYPE_LINUXTFD 14 /* emulation timerfd type */ +#define DTYPE_DMABUF 15 /* DMA buffer */ #ifdef _KERNEL diff --git a/sys/sys/user.h b/sys/sys/user.h --- a/sys/sys/user.h +++ b/sys/sys/user.h @@ -265,6 +265,7 @@ #define KF_TYPE_PROCDESC 11 #define KF_TYPE_DEV 12 #define KF_TYPE_EVENTFD 13 +#define KF_TYPE_DMABUF 14 #define KF_TYPE_UNKNOWN 255 #define KF_VTYPE_VNON 0 @@ -441,6 +442,10 @@ uint64_t kf_eventfd_value; uint32_t kf_eventfd_flags; } kf_eventfd; + struct { + char kf_dmabuf_exp_name[16]; + uint64_t kf_dmabuf_size; + } kf_dmabuf; } kf_un; }; uint16_t kf_status; /* Status flags. */ diff --git a/usr.bin/procstat/procstat_files.c b/usr.bin/procstat/procstat_files.c --- a/usr.bin/procstat/procstat_files.c +++ b/usr.bin/procstat/procstat_files.c @@ -419,6 +419,11 @@ xo_emit("{eq:fd_type/eventfd}"); break; + case PS_FST_TYPE_DMABUF: + str = "B"; + xo_emit("{eq:fd_type/dmabuf}"); + break; + case PS_FST_TYPE_NONE: str = "?"; xo_emit("{eq:fd_type/none}");