The branch main has been updated by kib:

URL: 
https://cgit.FreeBSD.org/src/commit/?id=10626f7384f9e39a8c02dfd475b1fd14fd7395dd

commit 10626f7384f9e39a8c02dfd475b1fd14fd7395dd
Author:     Konstantin Belousov <k...@freebsd.org>
AuthorDate: 2025-03-15 01:56:09 +0000
Commit:     Konstantin Belousov <k...@freebsd.org>
CommitDate: 2025-03-24 02:24:14 +0000

    gcore(1): dump NT_PROCSTAT_KQUEUES section
    
    Reviewed by:    markj
    Sponsored by:   The FreeBSD Foundation
    MFC after:      1 week
    Differential revision:  https://reviews.freebsd.org/D49372
---
 usr.bin/gcore/elfcore.c | 12 +++++++++++-
 1 file changed, 11 insertions(+), 1 deletion(-)

diff --git a/usr.bin/gcore/elfcore.c b/usr.bin/gcore/elfcore.c
index 2bffd409bb11..86613a91ca73 100644
--- a/usr.bin/gcore/elfcore.c
+++ b/usr.bin/gcore/elfcore.c
@@ -105,6 +105,7 @@ static void *elf_note_powerpc_vsx(void *, size_t *);
 static void *elf_note_procstat_auxv(void *, size_t *);
 static void *elf_note_procstat_files(void *, size_t *);
 static void *elf_note_procstat_groups(void *, size_t *);
+static void *elf_note_procstat_kqueues(void *, size_t *);
 static void *elf_note_procstat_osrel(void *, size_t *);
 static void *elf_note_procstat_proc(void *, size_t *);
 static void *elf_note_procstat_psstrings(void *, size_t *);
@@ -388,6 +389,7 @@ elf_putnotes(pid_t pid, struct sbuf *sb, size_t *sizep)
        elf_putnote(NT_PROCSTAT_PSSTRINGS, elf_note_procstat_psstrings, &pid,
            sb);
        elf_putnote(NT_PROCSTAT_AUXV, elf_note_procstat_auxv, &pid, sb);
+       elf_putnote(NT_PROCSTAT_KQUEUES, elf_note_procstat_kqueues, &pid, sb);
 #endif
 
        size = sbuf_end_section(sb, old_len, 1, 0);
@@ -756,7 +758,7 @@ procstat_sysctl(void *arg, int what, size_t structsz, 
size_t *sizep)
 {
        size_t len;
        pid_t pid;
-       int name[4], structsize;
+       int name[5], structsize;
        void *buf, *p;
 
        pid = *(pid_t *)arg;
@@ -841,6 +843,14 @@ elf_note_procstat_auxv(void *arg, size_t *sizep)
            sizeof(Elf_Auxinfo), sizep));
 }
 
+static void *
+elf_note_procstat_kqueues(void *arg, size_t *sizep)
+{
+
+       return (procstat_sysctl(arg, KERN_PROC_KQUEUE,
+           sizeof(struct kinfo_knote), sizep));
+}
+
 static void *
 elf_note_procstat_rlimit(void *arg, size_t *sizep)
 {

Reply via email to