freebsd-dev/sys/fs
David Xu 9104847f21 1. Change prototype of trapsignal and sendsig to use ksiginfo_t *, most
changes in MD code are trivial, before this change, trapsignal and
   sendsig use discrete parameters, now they uses member fields of
   ksiginfo_t structure. For sendsig, this change allows us to pass
   POSIX realtime signal value to user code.

2. Remove cpu_thread_siginfo, it is no longer needed because we now always
   generate ksiginfo_t data and feed it to libpthread.

3. Add p_sigqueue to proc structure to hold shared signals which were
   blocked by all threads in the proc.

4. Add td_sigqueue to thread structure to hold all signals delivered to
   thread.

5. i386 and amd64 now return POSIX standard si_code, other arches will
   be fixed.

6. In this sigqueue implementation, pending signal set is kept as before,
   an extra siginfo list holds additional siginfo_t data for signals.
   kernel code uses psignal() still behavior as before, it won't be failed
   even under memory pressure, only exception is when deleting a signal,
   we should call sigqueue_delete to remove signal from sigqueue but
   not SIGDELSET. Current there is no kernel code will deliver a signal
   with additional data, so kernel should be as stable as before,
   a ksiginfo can carry more information, for example, allow signal to
   be delivered but throw away siginfo data if memory is not enough.
   SIGKILL and SIGSTOP have fast path in sigqueue_add, because they can
   not be caught or masked.
   The sigqueue() syscall allows user code to queue a signal to target
   process, if resource is unavailable, EAGAIN will be returned as
   specification said.
   Just before thread exits, signal queue memory will be freed by
   sigqueue_flush.
   Current, all signals are allowed to be queued, not only realtime signals.

Earlier patch reviewed by: jhb, deischen
Tested on: i386, amd64
2005-10-14 12:43:47 +00:00
..
cd9660 - restore the ability to mount cd9660 filesystems as root by inverting 2005-08-14 04:19:36 +00:00
coda Merge the dev_clone and dev_clone_cred event handlers into a single 2005-08-08 19:55:32 +00:00
deadfs - Deadfs may now use the standard vop lock, get rid of dead_lock(). 2005-03-13 12:06:20 +00:00
devfs Make rule zero really magical, that way we don't have to do anything 2005-09-24 07:03:09 +00:00
fdescfs Remove the need to forward declare statics by moving them around. 2005-08-10 07:08:14 +00:00
fifofs Second attempt at a work-around for fifo-related socket panics during 2005-10-01 20:15:41 +00:00
hpfs Unbreak hpfs/ntfs/udf/ext2fs/reiserfs mounting. 2005-09-03 20:23:41 +00:00
msdosfs Remove checks for BOOTSIG[23] from FAT32 bootblocks. 2005-09-29 14:09:46 +00:00
ntfs Cast bf_sysid to const char * when passing it to strncmp(), because 2005-09-11 16:02:14 +00:00
nullfs Handle a race condition where NULLFS vnode can be cleaned while threads 2005-09-15 19:21:26 +00:00
nwfs The NWFS code in RELENG_6 is broken due to a typo in 2005-09-30 18:21:05 +00:00
portalfs - We no longer have to bother with PDIRUNLOCK, lookup() handles it for us. 2005-03-28 09:34:36 +00:00
procfs 1. Change prototype of trapsignal and sendsig to use ksiginfo_t *, most 2005-10-14 12:43:47 +00:00
pseudofs Eliminate an unnecessary bcopy(). 2005-08-12 12:22:05 +00:00
smbfs Staticize a symbol used only in this file. 2005-05-06 20:47:09 +00:00
udf - Do not hardcode the bsize to a sectorsize of 2048, even though 2005-10-09 04:45:33 +00:00
umapfs - Update vfs_root implementations to match the new prototype. None of 2005-03-24 07:36:16 +00:00
unionfs Remove public declarations of variables that were forgotten when they were 2005-08-10 07:10:02 +00:00