The branch main has been updated by kevans:

URL: 
https://cgit.FreeBSD.org/src/commit/?id=746c374aa94b46712e6defb3ab56dd2d6ad8db64

commit 746c374aa94b46712e6defb3ab56dd2d6ad8db64
Author:     Quentin Thébault <[email protected]>
AuthorDate: 2026-06-14 16:34:51 +0000
Commit:     Kyle Evans <[email protected]>
CommitDate: 2026-06-14 16:34:51 +0000

    evdev: add devnum sysctl
    
    Add a sysctl entry for the evdev device number (devnum) to allow
    libudev-devd to populate the corresponding device information
    fields (MAJOR and MINOR) when running in a jail with no input devices
    exposed through devfs.
    
    Signed-off-by: Quentin Thébault <[email protected]>
    
    Reviewed by:    wulf
    Sponsored by:   Defenso
    MFC after:      3 days
    Differential Revision:  https://reviews.freebsd.org/D56968
---
 sys/dev/evdev/evdev.c         | 6 ++++++
 sys/dev/evdev/evdev_private.h | 1 +
 2 files changed, 7 insertions(+)

diff --git a/sys/dev/evdev/evdev.c b/sys/dev/evdev/evdev.c
index 4dcd6f23d338..b8628d570a3c 100644
--- a/sys/dev/evdev/evdev.c
+++ b/sys/dev/evdev/evdev.c
@@ -283,6 +283,11 @@ evdev_sysctl_create(struct evdev_dev *evdev)
            SYSCTL_CHILDREN(ev_sysctl_tree), OID_AUTO, "sw_bits", CTLFLAG_RD,
            evdev->ev_sw_flags, sizeof(evdev->ev_sw_flags), "",
            "Input device supported switch events");
+
+       SYSCTL_ADD_U64(&evdev->ev_sysctl_ctx,
+           SYSCTL_CHILDREN(ev_sysctl_tree), OID_AUTO, "devnum", CTLFLAG_RD,
+           &evdev->ev_devnum, 0,
+           "Input device number");
 }
 
 static int
@@ -328,6 +333,7 @@ evdev_register_common(struct evdev_dev *evdev)
        ret = evdev_cdev_create(evdev);
        if (ret != 0)
                goto bail_out;
+       evdev->ev_devnum = dev2udev(evdev->ev_cdev);
 
        /* Create sysctls (for device enumeration without /dev/input access 
rights) */
        evdev_sysctl_create(evdev);
diff --git a/sys/dev/evdev/evdev_private.h b/sys/dev/evdev/evdev_private.h
index 4c371e538598..65da48745dc9 100644
--- a/sys/dev/evdev/evdev_private.h
+++ b/sys/dev/evdev/evdev_private.h
@@ -114,6 +114,7 @@ struct evdev_dev
        uid_t                   ev_cdev_uid;
        gid_t                   ev_cdev_gid;
        int                     ev_cdev_mode;
+       dev_t                   ev_devnum;
        int                     ev_unit;
        enum evdev_lock_type    ev_lock_type;
        struct mtx *            ev_state_lock;  /* State lock */

Reply via email to