NetBSD/sys/kern
thorpej d9b3317e3e Rework fdalloc() even further: split fdalloc() into fdalloc() and
fdexpand().  The former will return ENOSPC if there is not space
in the current filedesc table.  The latter performs the expansion
of the filedesc table.  This means that fdalloc() won't ever block,
and it gives callers an opportunity to clean up before the
potentially-blocking fdexpand() call.

Update all fdalloc() callers to deal with the need-to-fdexpand() case.

Rewrite unp_externalize() to use fdalloc() and fdexpand() in a
safe way, using an algorithm suggested by Bill Sommerfeld:
- Use a temporary array of integers to hold the new filedesc table
  indexes.  This allows us to repeat the loop if necessary.
- Loop through the array of file *'s, assigning them to filedesc table
  slots.  If fdalloc() indicates expansion is necessary, undo the
  assignments we've done so far, expand, and retry the whole process.
- Once all file *'s have been assigned to slots, update the f_msgcount
  and unp_rights counters.
- Right before we return, copy the temporary integer array to the message
  buffer, and trim the length as before.
Note that once locking is added to the filedesc array, this entire
operation will be `atomic', in that the lock will be held while
file *'s are assigned to embryonic table slots, thus preventing anything
else from using them.
2001-06-07 01:29:16 +00:00
..
cnmagic.c only print the magic number changing if not cold 2000-12-19 04:39:19 +00:00
exec_aout.c
exec_conf.c remove use of gcc syntax for designated initialisers when initialising 2001-05-15 02:00:12 +00:00
exec_ecoff.c
exec_elf32.c In the check_header() function, bump the number of allowed section headers 2001-05-07 17:09:13 +00:00
exec_elf64.c
exec_elf_common.c
exec_script.c
exec_subr.c eliminate the KERN_* error codes in favor of the traditional E* codes. 2001-03-15 06:10:32 +00:00
genassym.awk
genassym.sh when executing args in the ccode=0 case, send output to a tmp file and 2001-03-06 02:20:18 +00:00
genlintstub.awk Add a /* LINTSTUB: include <foo.h> */ mechanism. 2001-05-16 04:17:04 +00:00
init_main.c Remove the use of splimp() from the NetBSD kernel. splnet() 2001-04-13 23:29:55 +00:00
init_sysent.c regen for whitespace cleanup 2001-05-24 06:44:30 +00:00
kern_acct.c
kern_allocsys.c
kern_clock.c Declare schedhz. 2001-05-06 13:46:34 +00:00
kern_descrip.c Rework fdalloc() even further: split fdalloc() into fdalloc() and 2001-06-07 01:29:16 +00:00
kern_exec.c Changed EMUL_BSD_ASYNCIO_PIPE to EMUL_NO_BSD_ASYNCIO_PIPE, so that 2001-05-07 09:55:12 +00:00
kern_exit.c Avoid spinning forever when hardclock() wants to grab the kernel lock 2001-03-05 20:38:21 +00:00
kern_fork.c minor KNF 2001-02-26 21:09:57 +00:00
kern_kthread.c
kern_ktrace.c utrace(2): limit size of user data to KTR_USER_MAXLEN (currently 2048); return EINVAL if 'len' is bigger 2001-01-05 22:25:26 +00:00
kern_lkm.c add a DEBUG for why the lkm entry point failed. 2001-06-05 12:36:08 +00:00
kern_lock.c Add a simple_lock_only_held() LOCKDEBUG routine, which allows code 2001-06-05 04:38:08 +00:00
kern_malloc.c Assert that no locks are held if we're called with M_WAITOK. 2001-06-05 04:39:02 +00:00
kern_ntptime.c
kern_physio.c eliminate the KERN_* error codes in favor of the traditional E* codes. 2001-03-15 06:10:32 +00:00
kern_proc.c When freeing a session, remove the reference to it from the associated tty. 2001-02-04 22:32:24 +00:00
kern_prot.c Remove an splimp() that really has no purpose in life. 2001-04-12 03:08:42 +00:00
kern_resource.c Move maxdmap and maxsmap where they belong and make them big enough. 2001-02-06 19:54:43 +00:00
kern_sig.c in coredump() remove the COMPAT_NETBSD32 #ifdef, and replace it with a hook. 2001-06-06 21:37:19 +00:00
kern_subr.c Make "reboot" an option at the root device/filesystem prompt (we 2001-05-27 01:29:50 +00:00
kern_synch.c don't define bpendtsleep in profiling kernels since it confuses gprof. 2001-05-28 22:20:03 +00:00
kern_sysctl.c Make sysctl_msgbuf() to copy message buffer to userland even if 2001-04-26 06:07:13 +00:00
kern_time.c
kern_xxx.c
kgdb_stub.c
Make.tags.inc use ${.CURDIR:H:H} instead of ../.. for default setting of SYSDIR, 2001-04-18 11:21:24 +00:00
Makefile SYSDIR should be relative here, too. 2001-04-05 19:49:40 +00:00
makesyscalls.sh use _KERNEL_OPT not _KERNEL&&|_LKM 2001-05-30 11:27:46 +00:00
subr_autoconf.c Statically-initialize `allevents' so that events can be registered 2001-05-28 16:40:31 +00:00
subr_disk.c
subr_extent.c Assert that no locks are held if we're called with EX_WAITSPACE. 2001-06-05 04:39:56 +00:00
subr_log.c
subr_pool.c Do the reentrancy checking if POOL_DIAGNOSTIC, not DIAGNOSTIC. Prevents 2001-06-05 18:51:03 +00:00
subr_prf.c add missing #include "opt_kgdb.h" 2001-05-30 15:24:23 +00:00
subr_prof.c Before allowing kgmon to do anything, check that we managed to allocate the 2001-04-28 12:56:00 +00:00
subr_rmap.c
subr_xxx.c
sys_generic.c for FIOGETOWN, only change the sign of *data if fo_ioctl returned without error 2001-05-24 06:52:43 +00:00
sys_process.c fix typo in comment 2001-03-17 09:38:36 +00:00
sys_socket.c Backed out a previous commit that was incomplete and hence broke several 2001-05-19 17:28:33 +00:00
syscalls.c regen. 2001-05-30 11:48:07 +00:00
syscalls.conf
syscalls.master Slight indentation nit. 2001-04-10 11:03:56 +00:00
sysv_ipc.c
sysv_msg.c
sysv_sem.c
sysv_shm.c eliminate the KERN_* error codes in favor of the traditional E* codes. 2001-03-15 06:10:32 +00:00
tty_conf.c Removed an incorrect use of __CONCAT when formatting panic messages. 2001-05-24 10:33:08 +00:00
tty_pty.c Add l_poll' to struct linesw' and provide an xxxpoll() entry point 2001-05-02 10:32:08 +00:00
tty_subr.c
tty_tb.c Remove unnecessary test of tp->t_linesw against NULL; they are results 2001-03-31 00:35:21 +00:00
tty_tty.c
tty.c Add l_poll' to struct linesw' and provide an xxxpoll() entry point 2001-05-02 10:32:08 +00:00
uipc_domain.c add pfctlinput2() (pfctlinput() with args). 2001-02-11 06:38:45 +00:00
uipc_mbuf2.c make sure we do not return shared M_EXT mbuf. it will avoid possible mbuf 2001-02-14 17:09:19 +00:00
uipc_mbuf.c Change some low-hanging splimp() calls to splvm(). 2001-01-14 02:06:21 +00:00
uipc_proto.c
uipc_socket2.c Large values of sb_max would cause an overflow in sbreserve(); cast to 2001-04-30 03:32:56 +00:00
uipc_socket.c Remove the use of splimp() from the NetBSD kernel. splnet() 2001-04-13 23:29:55 +00:00
uipc_syscalls.c implement the recently introduced EMUL_BSD_ASYNCIO_PIPE emulation package 2001-05-06 19:22:32 +00:00
uipc_usrreq.c Rework fdalloc() even further: split fdalloc() into fdalloc() and 2001-06-07 01:29:16 +00:00
vfs_bio.c in bwrite(), when deciding whether to convert sync writes into delayed writes, 2001-04-01 16:16:56 +00:00
vfs_cache.c Depending on the NAMECACHE_ENTER_REVERSE option, always enter reverse 2001-03-29 22:39:23 +00:00
vfs_cluster.c
vfs_getcwd.c Jump out of the scandir loop if VOP_READDIR returns an error, avoiding 2000-12-15 11:52:14 +00:00
vfs_init.c make filesystem vnodeop, specop, fifoop and vnodeopv_* arrays const 2001-01-22 12:17:35 +00:00
vfs_lockf.c
vfs_lookup.c
vfs_subr.c Avoid a sleeping malloc call while holding the spechash_slock. 2001-06-05 04:42:05 +00:00
vfs_syscalls.c When unmounting a file system, acquire the syncer_lock before 2001-04-16 22:41:09 +00:00
vfs_vnops.c Change the first arg to fileops fo_stat routine to struct file *, adjust 2001-04-09 10:22:00 +00:00
vnode_if.c regen. 2001-05-26 21:34:04 +00:00
vnode_if.sh delint: vop_default_desc was declared const but not defined const. 2001-05-07 08:46:02 +00:00
vnode_if.src replace vm_page_t with struct vm_page *. 2001-05-26 21:33:11 +00:00