freebsd-skq/sys/kern
Attilio Rao 34ed040030 Actually, upcalls cannot be freed while destroying the thread because we
should call uma_zfree() with various spinlock helds.  Rearranging the
code would not help here because we cannot break atomicity respect
prcess spinlock, so the only one choice we have is to defer the operation.
In order to do this use a global queue synchronized through the kse_lock
spinlock which is freed at any thread_alloc() / thread_wait() through a
call to thread_reap().
Note that this approach is not ideal as we should want a per-process
list of zombie upcalls, but it follows initial guidelines of KSE authors.

Tested by: jkim, pav
Approved by: jeff, julian
Approved by: re
2007-07-27 09:21:18 +00:00
..
bus_if.m o break newbus api: add a new argument of type driver_filter_t to 2007-02-23 12:19:07 +00:00
clock_if.m
cpufreq_if.m
device_if.m
genassym.sh
imgact_aout.c
imgact_elf32.c
imgact_elf64.c
imgact_elf.c Rework the support for ABIs to override resource limits (used by 32-bit 2007-05-14 22:40:04 +00:00
imgact_gzip.c
imgact_shell.c
inflate.c
init_main.c Fix a bug caming from the committing a pre-merge version of the patch 2007-06-10 00:28:41 +00:00
init_sysent.c Regenerate after mmap/lseek/etc syscall changes. 2007-07-04 22:49:55 +00:00
kern_acct.c rufetch and calcru sometimes should be called atomically together. 2007-06-09 21:48:44 +00:00
kern_alq.c Change the VOP_OPEN(), vn_open() vnode operation and d_fdopen() cdev operation 2007-06-01 14:33:11 +00:00
kern_clock.c Since locking in kern/subr_prof.c is changed a bit, we need nomore of 2007-06-09 19:41:14 +00:00
kern_condvar.c Commit 2/14 of sched_lock decomposition. 2007-06-04 23:50:56 +00:00
kern_conf.c Revert destroy_dev() to the state before destroy_dev_sched() was introduced. 2007-07-05 13:04:59 +00:00
kern_context.c Further system call comment cleanup: 2007-03-05 13:10:58 +00:00
kern_cpu.c Commit 14/14 of sched_lock decomposition. 2007-06-05 00:00:57 +00:00
kern_descrip.c - Use explicit locking in the various fcntl case statements so that we 2007-07-03 21:26:06 +00:00
kern_environment.c Further system call comment cleanup: 2007-03-05 13:10:58 +00:00
kern_event.c Revert previous commits which I committed by mistake. 2007-07-14 21:23:31 +00:00
kern_exec.c Fix a couple of issues with the stack limit for 32-bit processes on 64-bit 2007-07-12 18:01:31 +00:00
kern_exit.c Improve the ktrace locking somewhat to reduce overhead: 2007-06-13 20:01:42 +00:00
kern_fork.c Rather than passing SUSER_RUID into priv_check_cred() to specify when 2007-06-16 23:41:43 +00:00
kern_idle.c Commit 14/14 of sched_lock decomposition. 2007-06-05 00:00:57 +00:00
kern_intr.c Commit 14/14 of sched_lock decomposition. 2007-06-05 00:00:57 +00:00
kern_jail.c Fix jails and jail-friendly file systems handling: 2007-04-13 23:54:22 +00:00
kern_kse.c Actually, upcalls cannot be freed while destroying the thread because we 2007-07-27 09:21:18 +00:00
kern_kthread.c Commit 14/14 of sched_lock decomposition. 2007-06-05 00:00:57 +00:00
kern_ktr.c
kern_ktrace.c Improve the ktrace locking somewhat to reduce overhead: 2007-06-13 20:01:42 +00:00
kern_linker.c Revert UF_OPENING workaround for CURRENT. 2007-05-31 11:51:53 +00:00
kern_lock.c Move lock_profile_object_{init,destroy}() into lock_{init,destroy}(). 2007-05-18 15:04:59 +00:00
kern_lockf.c - Remove explicit Giant protection from lockf. Use the vnode interlock 2007-07-03 21:22:58 +00:00
kern_malloc.c Use vm_offset_t for kmembase and kmemlimit rather than char *, avoiding 2007-06-27 13:39:38 +00:00
kern_mbuf.c Despite several examples in the kernel, the third argument of 2007-06-04 18:25:08 +00:00
kern_mib.c Revert VMCNT_* operations introduction. 2007-05-31 22:52:15 +00:00
kern_module.c Remove 'MPSAFE' annotations from the comments above most system calls: all 2007-03-04 22:36:48 +00:00
kern_mtxpool.c Universally adopt most conventional spelling of acquire. 2007-05-27 20:50:23 +00:00
kern_mutex.c - Remove the global definition of sched_lock in mutex.h to break 2007-07-18 20:46:06 +00:00
kern_ntptime.c Only require privilege to set the current time adjustment, not in order to 2007-06-14 18:37:58 +00:00
kern_physio.c
kern_pmc.c
kern_poll.c Commit 14/14 of sched_lock decomposition. 2007-06-05 00:00:57 +00:00
kern_priv.c Continue kernel privilege cleanup for 7.0: unstaticize suser_enabled and 2007-07-02 14:03:29 +00:00
kern_proc.c rufetch and calcru sometimes should be called atomically together. 2007-06-09 21:48:44 +00:00
kern_prot.c Eliminate now-unused SUSER_ALLOWJAIL arguments to priv_check_cred(); in 2007-06-12 00:12:01 +00:00
kern_resource.c - Use ruxagg() in calcru() to make sure we have current tick information 2007-07-17 01:08:09 +00:00
kern_rwlock.c Fix some problems with lock profiling in rw locks: 2007-07-20 08:43:42 +00:00
kern_sema.c
kern_shutdown.c Commit 14/14 of sched_lock decomposition. 2007-06-05 00:00:57 +00:00
kern_sig.c - Calling sched_nice() in tdsigwakeup() is no longer required by ULE and 2007-07-19 08:49:16 +00:00
kern_subr.c Commit 14/14 of sched_lock decomposition. 2007-06-05 00:00:57 +00:00
kern_switch.c - Remove explicit references to sched_lock. A simpler assert will do. 2007-07-19 08:58:40 +00:00
kern_sx.c Fix some problems with lock_profiling in sx locks: 2007-07-06 13:20:44 +00:00
kern_synch.c Commit 2/14 of sched_lock decomposition. 2007-06-04 23:50:56 +00:00
kern_syscalls.c
kern_sysctl.c Eliminate now-unused SUSER_ALLOWJAIL arguments to priv_check_cred(); in 2007-06-12 00:12:01 +00:00
kern_tc.c Despite several examples in the kernel, the third argument of 2007-06-04 18:25:08 +00:00
kern_thr.c - Remove unused variable from create_thread(). 2007-06-07 19:45:19 +00:00
kern_thread.c Actually, upcalls cannot be freed while destroying the thread because we 2007-07-27 09:21:18 +00:00
kern_time.c rufetch and calcru sometimes should be called atomically together. 2007-06-09 21:48:44 +00:00
kern_timeout.c Fix an old standing LOR between callout_lock and sleepqueues chain (which 2007-06-26 21:42:01 +00:00
kern_umtx.c Backout experimental adaptive-spin umtx code. 2007-06-06 07:35:08 +00:00
kern_uuid.c Correct typo. 2007-04-23 12:53:00 +00:00
kern_xxx.c Further system call comment cleanup: 2007-03-05 13:10:58 +00:00
ksched.c Commit 14/14 of sched_lock decomposition. 2007-06-05 00:00:57 +00:00
link_elf_obj.c Revert UF_OPENING workaround for CURRENT. 2007-05-31 11:51:53 +00:00
link_elf.c Revert UF_OPENING workaround for CURRENT. 2007-05-31 11:51:53 +00:00
linker_if.m
Make.tags.inc Remove netkey directory from cscope/TAGs generation and replace 2007-07-05 08:55:14 +00:00
Makefile - Remove UMAP filesystem. It was disconnected from build three years ago, 2007-06-25 05:06:57 +00:00
makesyscalls.sh Add support for COMPAT6 syscalls. 2007-07-04 22:38:28 +00:00
md4c.c
md5c.c
p1003_1b.c Further system call comment cleanup: 2007-03-05 13:10:58 +00:00
posix4_mib.c Fix mispatch of includes list; allows my kernel to build successfully. 2006-11-12 03:34:03 +00:00
sched_4bsd.c - Remove the global definition of sched_lock in mutex.h to break 2007-07-18 20:46:06 +00:00
sched_ule.c - Refine the load balancer to improve buildkernel times on dual core 2007-07-19 20:03:15 +00:00
serdev_if.m
subr_acl_posix1e.c Eliminate now-unused SUSER_ALLOWJAIL arguments to priv_check_cred(); in 2007-06-12 00:12:01 +00:00
subr_autoconf.c
subr_blist.c
subr_bus.c fix comment typo 2007-05-23 17:28:21 +00:00
subr_clist.c
subr_clock.c If clock_ct_to_ts fails to convert time time from the real time clock, 2007-07-23 09:42:32 +00:00
subr_devstat.c
subr_disk.c Add a new I/O request - BIO_FLUSH, which basically tells providers below to 2006-10-31 21:11:21 +00:00
subr_eventhandler.c
subr_fattime.c Better naming of fattime conversion functions, they do convert to timespec 2006-10-24 10:27:23 +00:00
subr_firmware.c Cleanup and document the implementation of firmware(9) based on 2007-02-15 17:21:31 +00:00
subr_hints.c
subr_kdb.c
subr_kobj.c
subr_lock.c Revert some debugging KTRs that were added during development. 2007-06-03 18:24:31 +00:00
subr_log.c
subr_mbpool.c Add parens around *free in *free++ in mbp_count() so that mbp_count() 2007-05-27 17:38:36 +00:00
subr_mchain.c
subr_module.c
subr_msgbuf.c
subr_param.c
subr_pcpu.c
subr_power.c
subr_prf.c Instead of doing comparisons using the pcpu area to see if 2007-03-08 06:44:34 +00:00
subr_prof.c Commit 14/14 of sched_lock decomposition. 2007-06-05 00:00:57 +00:00
subr_rman.c Complete removal of restriction about overlaps to rman_manage_region: 2007-04-28 07:37:49 +00:00
subr_rtc.c Use utc_offset() where applicable, and hide the internals of it 2006-10-02 18:23:37 +00:00
subr_sbuf.c
subr_scanf.c
subr_sleepqueue.c - Include opt_sched.h for SCHED_STATS. 2007-06-12 23:27:31 +00:00
subr_smp.c Tweak the low-level MI SMP code some: 2007-07-03 18:37:06 +00:00
subr_stack.c
subr_taskqueue.c Commit 14/14 of sched_lock decomposition. 2007-06-05 00:00:57 +00:00
subr_trap.c - Include opt_sched.h for SCHED_STATS. 2007-06-12 23:27:31 +00:00
subr_turnstile.c - Include opt_sched.h for SCHED_STATS. 2007-06-12 23:27:31 +00:00
subr_unit.c Since cdev mutex is after system map mutex in global lock order, free() 2007-07-04 06:56:58 +00:00
subr_witness.c - Remove zstty spin lock for no longer existing zs(4). 2007-06-16 23:30:57 +00:00
sys_generic.c Add freebsd6_ wrappers for mmap/lseek/pread/pwrite/truncate/ftruncate 2007-07-04 22:57:21 +00:00
sys_pipe.c Remove amountpipes counter for pipes -- this replicates the function of 2007-05-27 17:33:10 +00:00
sys_process.c Commit 14/14 of sched_lock decomposition. 2007-06-05 00:00:57 +00:00
sys_socket.c Move to ANSI C function headers. Re-wrap some comments. 2007-03-04 17:50:46 +00:00
syscalls.c Regenerate after mmap/lseek/etc syscall changes. 2007-07-04 22:49:55 +00:00
syscalls.master Create new syscalls for mmap(), lseek(), pread(), pwrite(), truncate() and 2007-07-04 22:47:37 +00:00
systrace_args.c Regenerate after mmap/lseek/etc syscall changes. 2007-07-04 22:49:55 +00:00
sysv_ipc.c Eliminate now-unused SUSER_ALLOWJAIL arguments to priv_check_cred(); in 2007-06-12 00:12:01 +00:00
sysv_msg.c Eliminate now-unused SUSER_ALLOWJAIL arguments to priv_check_cred(); in 2007-06-12 00:12:01 +00:00
sysv_sem.c Relock the sema_mtxp unconditionally after copyin() for SETALL case in 2007-07-03 15:58:47 +00:00
sysv_shm.c Further system call comment cleanup: 2007-03-05 13:10:58 +00:00
tty_compat.c
tty_conf.c
tty_cons.c Revert UF_OPENING workaround for CURRENT. 2007-05-31 11:51:53 +00:00
tty_pts.c Fix bad function type passed to destroy_dev_sched_cb(). 2007-07-05 05:54:47 +00:00
tty_pty.c Use make_dev_credf(MAKEDEV_REF) instead of make_dev() from pty clone handler. 2007-07-03 17:45:52 +00:00
tty_subr.c
tty_tty.c Lock Giant and proctree lock around dereferencing p_session->s_ttyvp->v_rdev. 2007-07-03 17:46:37 +00:00
tty.c ttyfree() frees the cdev(). But if there are pending kevents, 2007-07-20 09:41:54 +00:00
uipc_accf.c
uipc_cow.c
uipc_debug.c sblock() implements a sleep lock by interlocking SB_WANT and SB_LOCK flags 2007-05-03 14:42:42 +00:00
uipc_domain.c Generally migrate to ANSI function headers, and remove 'register' use. 2007-05-16 20:41:08 +00:00
uipc_mbuf2.c Complete break-out of sys/sys/mac.h into sys/security/mac/mac_framework.h 2006-10-22 11:52:19 +00:00
uipc_mbuf.c Generally migrate to ANSI function headers, and remove 'register' use. 2007-05-16 20:41:08 +00:00
uipc_mqueue.c Eliminate now-unused SUSER_ALLOWJAIL arguments to priv_check_cred(); in 2007-06-12 00:12:01 +00:00
uipc_sem.c Further system call comment cleanup: 2007-03-05 13:10:58 +00:00
uipc_sockbuf.c Now that sx(9) locks support an interruptible lock acquire primitive, 2007-05-31 11:51:22 +00:00
uipc_socket.c Despite several examples in the kernel, the third argument of 2007-06-04 18:25:08 +00:00
uipc_syscalls.c - Add some needed error checking on bad fd passing in the sctp 2007-07-02 12:50:53 +00:00
uipc_usrreq.c When we do open, we should lock the vnode exclusively. This fixes few races: 2007-07-26 16:58:09 +00:00
vfs_acl.c Replay minor system call comment cleanup applied to kern_acl.c in a race 2007-03-05 13:26:07 +00:00
vfs_aio.c Remove unused variable. 2007-06-10 01:50:05 +00:00
vfs_bio.c Work around an integer overflow in expression `3 * maxbufspace / 4', 2007-06-09 23:41:14 +00:00
vfs_cache.c We only flush entries related to the given file system. Currently there are 2007-06-18 09:28:24 +00:00
vfs_cluster.c - Move rusage from being per-process in struct pstats to per-thread in 2007-06-01 01:12:45 +00:00
vfs_default.c Since renaming of vop_lock to _vop_lock, pre- and post-condition 2007-05-18 13:02:13 +00:00
vfs_export.c Move vnode-to-file-handle translation from vfs_vptofh to vop_vptofh method. 2007-02-15 22:08:35 +00:00
vfs_extattr.c Update comments to reflect changes in the extattrctl() code. 2006-12-23 00:30:03 +00:00
vfs_hash.c Make insmntque() externally visibile and allow it to fail (e.g. during 2007-03-13 01:50:27 +00:00
vfs_init.c Remove VFS_VPTOFH entirely. API is already broken and it is good time to 2007-02-16 17:32:41 +00:00
vfs_lookup.c Universally adopt most conventional spelling of acquire. 2007-05-27 20:50:23 +00:00
vfs_mount.c The v_mountedhere field is protected by the vnode lock, not vnode's internal 2007-07-26 16:52:57 +00:00
vfs_subr.c Eliminate now-unused SUSER_ALLOWJAIL arguments to priv_check_cred(); in 2007-06-12 00:12:01 +00:00
vfs_syscalls.c Add freebsd6_ wrappers for mmap/lseek/pread/pwrite/truncate/ftruncate 2007-07-04 22:57:21 +00:00
vfs_vnops.c When we do open, we should lock the vnode exclusively. This fixes few races: 2007-07-26 16:58:09 +00:00
vnode_if.src Revert UF_OPENING workaround for CURRENT. 2007-05-31 11:51:53 +00:00