git: 3118bdf37db6 - stable/15 - ntsync: add kinfo reporting
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Sat, 13 Jun 2026 01:03:41 UTC
The branch stable/15 has been updated by kib:
URL: https://cgit.FreeBSD.org/src/commit/?id=3118bdf37db67679a0017b7c2b0a32a142c43d95
commit 3118bdf37db67679a0017b7c2b0a32a142c43d95
Author: Konstantin Belousov <kib@FreeBSD.org>
AuthorDate: 2026-05-18 07:13:31 +0000
Commit: Konstantin Belousov <kib@FreeBSD.org>
CommitDate: 2026-06-13 00:58:32 +0000
ntsync: add kinfo reporting
(cherry picked from commit d0ea3aff90655be3cdb34d86a4a97be6fc85d919)
---
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. */