git: system - Add wait6(), waitid(), and si_pid/si_uid siginfo support

Matthew Dillon dillon at crater.dragonflybsd.org
Sun Sep 30 13:23:38 PDT 2018


commit 33b81dc9633739f35a61170c31e64dd522fec577
Author: Matthew Dillon <dillon at apollo.backplane.com>
Date:   Sun Sep 30 12:45:14 2018 -0700

    system - Add wait6(), waitid(), and si_pid/si_uid siginfo support
    
    * Add the wait6() system call (header definitions taken from FreeBSD).
      This required rearranging kern_wait() a bit.  In particular, we now
      maintain a hold count of 1 on the process during processing instead
      of releasing the hold count early.
    
    * Add waitid() to libc (waitid.c taken from FreeBSD).
    
    * Adjust manual pages (taken from FreeBSD).
    
    * Add siginfo si_pid and si_uid support.  This basically allows a process
      taking a signal to determine where the signal came from.  The fields
      already existed in siginfo but were not implemented.
    
      Implemented using a non-queued per-process array of signal numbers.
      The last originator sending any given signal is recorded and passed
      through to userland in the siginfo.
    
    * Fixes the 'lightdm' X display manager.  lightdm relies on si_pid
      support.  In addition, note that avoiding long lightdm related
      latencies and timeouts require a softlink from libmozjs-52.so to
      libmozjs-52.so.0 (must be addressed in dports, not addressed in this
      commit).
    
    Loosely-taken-from: FreeBSD (wait6, waitid support only)
    Reviewed-by: swildner

Summary of changes:
 lib/libc/gen/Makefile.inc                  |   2 +-
 lib/libc/gen/Symbol.map                    |   3 +
 sbin/newfs/defs.h => lib/libc/gen/waitid.c |  62 ++--
 lib/libc/include/namespace.h               |   2 +
 lib/libc/include/un-namespace.h            |   2 +
 lib/libc/sys/Makefile.inc                  |   2 +
 lib/libc/sys/Symbol.map                    |   6 +
 lib/libc/sys/wait.2                        | 510 +++++++++++++++++++++++++----
 sys/kern/init_sysent.c                     |   1 +
 sys/kern/kern_exit.c                       | 267 ++++++++++++---
 sys/kern/kern_proc.c                       |  18 +-
 sys/kern/kern_sig.c                        |  29 ++
 sys/kern/syscalls.c                        |   1 +
 sys/kern/syscalls.master                   |   2 +
 sys/platform/pc64/x86_64/machdep.c         |   2 +
 sys/platform/vkernel64/x86_64/cpu_regs.c   |   2 +
 sys/sys/kern_syscall.h                     |   7 +-
 sys/sys/procctl.h                          |   6 +
 sys/sys/resource.h                         |   7 +
 sys/sys/signalvar.h                        |   4 +
 sys/sys/syscall.h                          |   3 +-
 sys/sys/syscall.mk                         |   3 +-
 sys/sys/sysproto.h                         |  12 +
 sys/sys/sysunion.h                         |   1 +
 sys/sys/wait.h                             |  61 +++-
 25 files changed, 853 insertions(+), 162 deletions(-)
 copy sbin/newfs/defs.h => lib/libc/gen/waitid.c (59%)

http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff/33b81dc9633739f35a61170c31e64dd522fec577


-- 
DragonFly BSD source repository


More information about the Commits mailing list