Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 31 May 2026 17:19:56 +0000
From:      Konstantin Belousov <kib@FreeBSD.org>
To:        src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org
Subject:   git: d0ea3aff9065 - main - ntsync: add kinfo reporting
Message-ID:  <6a1c6dbc.3e231.8af7108@gitrepo.freebsd.org>

index | next in thread | raw e-mail

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. */


home | help

Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?6a1c6dbc.3e231.8af7108>