git: d0ea3aff9065 - main - ntsync: add kinfo reporting
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Sun, 31 May 2026 17:19:56 UTC
The branch main has been updated by kib:
URL: https://cgit.FreeBSD.org/src/commit/?id=d0ea3aff90655be3cdb34d86a4a97be6fc85d919
commit d0ea3aff90655be3cdb34d86a4a97be6fc85d919
Author: Konstantin Belousov <kib@FreeBSD.org>
AuthorDate: 2026-05-18 07:13:31 +0000
Commit: Konstantin Belousov <kib@FreeBSD.org>
CommitDate: 2026-05-31 17:14:47 +0000
ntsync: add kinfo reporting
Sponsored by: The FreeBSD Foundation
MFC after: 1 week
Differential revision: https://reviews.freebsd.org/D57038
---
sys/dev/ntsync/ntsync.c | 47 ++++++++++++++++++++++++++++++++++++++++++++---
sys/sys/user.h | 24 ++++++++++++++++++++++++
2 files changed, 68 insertions(+), 3 deletions(-)
diff --git a/sys/dev/ntsync/ntsync.c b/sys/dev/ntsync/ntsync.c
index 8b0984d12c75..a7b002de7cb6 100644
--- a/sys/dev/ntsync/ntsync.c
+++ b/sys/dev/ntsync/ntsync.c
@@ -19,6 +19,7 @@
#include <sys/proc.h>
#include <sys/stat.h>
#include <sys/sysent.h>
+#include <sys/user.h>
#include <dev/ntsync/ntsyncvar.h>
static struct cdev *ntsync_cdev;
@@ -484,7 +485,19 @@ static int
ntsync_sem_fill_kinfo(struct file *fp, struct kinfo_file *kif,
struct filedesc *fdp)
{
- // XXXKIB
+ struct ntsync_obj *obj;
+ struct ntsync_obj_sem *sem;
+
+ MPASS(fp->f_type == DTYPE_NTSYNC);
+ obj = fp->f_data;
+ MPASS(obj->type == NTSYNC_OBJ_SEM);
+ sem = OBJ_TO_SEM(obj);
+
+ kif->kf_type = KF_TYPE_NTSYNC;
+ kif->kf_un.kf_ntsync.kf_ntsync_type = KF_NTSYNC_TYPE_SEM;
+ kif->kf_un.kf_ntsync.kf_ntsync_dev = (uintptr_t)obj->owner;
+ kif->kf_un.kf_ntsync.kf_ntsync_un.kf_ntsync_sem.count = sem->a.count;
+ kif->kf_un.kf_ntsync.kf_ntsync_un.kf_ntsync_sem.max = sem->a.max;
return (0);
}
@@ -778,7 +791,21 @@ static int
ntsync_mutex_fill_kinfo(struct file *fp, struct kinfo_file *kif,
struct filedesc *fdp)
{
- // XXXKIB
+ struct ntsync_obj *obj;
+ struct ntsync_obj_mutex *mutex;
+
+ MPASS(fp->f_type == DTYPE_NTSYNC);
+ obj = fp->f_data;
+ MPASS(obj->type == NTSYNC_OBJ_MUTEX);
+ mutex = OBJ_TO_MUTEX(obj);
+
+ kif->kf_type = KF_TYPE_NTSYNC;
+ kif->kf_un.kf_ntsync.kf_ntsync_type = KF_NTSYNC_TYPE_MUTEX;
+ kif->kf_un.kf_ntsync.kf_ntsync_dev = (uintptr_t)obj->owner;
+ kif->kf_un.kf_ntsync.kf_ntsync_un.kf_ntsync_mutex.owner =
+ mutex->a.owner;
+ kif->kf_un.kf_ntsync.kf_ntsync_un.kf_ntsync_mutex.count =
+ mutex->a.count;
return (0);
}
@@ -1053,7 +1080,21 @@ static int
ntsync_event_fill_kinfo(struct file *fp, struct kinfo_file *kif,
struct filedesc *fdp)
{
- // XXXKIB
+ struct ntsync_obj *obj;
+ struct ntsync_obj_event *event;
+
+ MPASS(fp->f_type == DTYPE_NTSYNC);
+ obj = fp->f_data;
+ MPASS(obj->type == NTSYNC_OBJ_EVENT);
+ event = OBJ_TO_EVENT(obj);
+
+ kif->kf_type = KF_TYPE_NTSYNC;
+ kif->kf_un.kf_ntsync.kf_ntsync_type = KF_NTSYNC_TYPE_EVENT;
+ kif->kf_un.kf_ntsync.kf_ntsync_dev = (uintptr_t)obj->owner;
+ kif->kf_un.kf_ntsync.kf_ntsync_un.kf_ntsync_event.signaled =
+ event->a.signaled;
+ kif->kf_un.kf_ntsync.kf_ntsync_un.kf_ntsync_event.manual =
+ event->a.manual;
return (0);
}
diff --git a/sys/sys/user.h b/sys/sys/user.h
index e1a3897cd319..75e76f622c0d 100644
--- a/sys/sys/user.h
+++ b/sys/sys/user.h
@@ -269,6 +269,7 @@ struct user {
#define KF_TYPE_TIMERFD 14
#define KF_TYPE_INOTIFY 15
#define KF_TYPE_JAILDESC 16
+#define KF_TYPE_NTSYNC 17
#define KF_TYPE_UNKNOWN 255
#define KF_VTYPE_VNON 0
@@ -289,6 +290,11 @@ struct user {
#define KF_FD_TYPE_TEXT -5 /* Text vnode */
#define KF_FD_TYPE_CTTY -6 /* Controlling terminal */
+#define KF_NTSYNC_TYPE_DEV 1 /* Not reported, reserved */
+#define KF_NTSYNC_TYPE_SEM 2
+#define KF_NTSYNC_TYPE_MUTEX 3
+#define KF_NTSYNC_TYPE_EVENT 4
+
#define KF_FLAG_READ 0x00000001
#define KF_FLAG_WRITE 0x00000002
#define KF_FLAG_APPEND 0x00000004
@@ -467,6 +473,24 @@ struct kinfo_file {
uint64_t kf_inotify_npending;
uint64_t kf_inotify_nbpending;
} kf_inotify;
+ struct {
+ uint32_t kf_ntsync_type;
+ uint64_t kf_ntsync_dev;
+ union {
+ struct {
+ uint32_t count;
+ uint32_t max;
+ } kf_ntsync_sem;
+ struct{
+ uint32_t owner;
+ uint32_t count;
+ } kf_ntsync_mutex;
+ struct {
+ uint32_t signaled;
+ uint32_t manual;
+ } kf_ntsync_event;
+ } kf_ntsync_un;
+ } kf_ntsync;
} kf_un;
};
uint16_t kf_status; /* Status flags. */