git: kernel - Make numerous proc accesses use p->p_token instead

看板DFBSD_commit作者時間15年前 (2011/02/14 13:32), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/1
commit 58c2553a79a1ecfcbfd3ab0cb8e383052af37406 Author: Matthew Dillon <dillon@apollo.backplane.com> Date: Sun Feb 13 20:57:32 2011 -0800 kernel - Make numerous proc accesses use p->p_token instead of proc_token. * pfind() zpfind() now returns a referenced proc structure, callers must release the proc with PRELE(). Callers no longer need to hold proc_token for stable access. * Enhance pgrp, adding pgrp->pg_token and pgrp->pg_refs in addition to pgrp->pg_lock. The lock is used to interlock races between fork() and signals while the token and refs are used to control access. * Add pfindn(), a version of pfind() which does not ref the returned proc. Some code still uses it (linux emulation) ---> needs work. * Add pgref() and pgrel() to mess with the pgrp's pg_refs. pgrel() automatically destroys the pgrp when the last reference goes away. * Most process group operations now use the per-process token instead of proc_token, though pgfind() still needs it temporarily. * pgfind() now returns a referenced pgrp or NULL. * Interlock signal handling with p->p_token instead of proc_token. * Adjust most nice/priority functions to use the per-process token. * Add protective PHOLD()s in various places in the signal code, the ptrace code, and procfs. * Change funsetown() to take the address of the sigio pointer to match fsetown(), add sanity assertions. * pgrp's in tty sessions are now ref-counted. Summary of changes: sys/dev/drm/drm_drv.c | 2 +- sys/dev/misc/syscons/scmouse.c | 21 ++- sys/dev/misc/syscons/syscons.c | 6 +- sys/emulation/linux/i386/linprocfs/linprocfs.h | 2 +- .../linux/i386/linprocfs/linprocfs_vnops.c | 36 +++-- sys/emulation/linux/i386/linux_machdep.c | 6 +- sys/emulation/linux/i386/linux_ptrace.c | 6 + sys/emulation/linux/linux_futex.c | 4 +- sys/emulation/linux/linux_misc.c | 4 + sys/emulation/linux/linux_signal.c | 1 - sys/kern/init_main.c | 8 +- sys/kern/kern_descrip.c | 73 ++++++--- sys/kern/kern_event.c | 11 +- sys/kern/kern_exit.c | 24 ++- sys/kern/kern_fork.c | 20 ++- sys/kern/kern_ktrace.c | 9 +- sys/kern/kern_p1003_1b.c | 16 ++- sys/kern/kern_proc.c | 129 ++++++++++++---- sys/kern/kern_prot.c | 42 ++++-- sys/kern/kern_resource.c | 163 ++++++++++++-------- sys/kern/kern_sig.c | 38 ++++- sys/kern/subr_log.c | 2 +- sys/kern/sys_pipe.c | 2 +- sys/kern/sys_process.c | 28 ++++ sys/kern/tty.c | 30 +++- sys/kern/uipc_socket.c | 2 +- sys/kern/uipc_syscalls.c | 3 +- sys/net/bpf.c | 2 +- sys/net/tap/if_tap.c | 4 +- sys/net/tun/if_tun.c | 2 +- sys/platform/pc32/i386/db_trace.c | 2 +- sys/sys/filedesc.h | 5 +- sys/sys/proc.h | 17 ++- sys/vfs/procfs/procfs.h | 2 - sys/vfs/procfs/procfs_ctl.c | 4 +- sys/vfs/procfs/procfs_subr.c | 4 +- sys/vfs/procfs/procfs_vnops.c | 130 +++++++++++----- 37 files changed, 607 insertions(+), 253 deletions(-) http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff/58c2553a79a1ecfcbfd3ab0cb8e383052af37406 -- DragonFly BSD source repository
文章代碼(AID): #1DMBvN_A (DFBSD_commit)