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
..
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
cnmagic.c only print the magic number changing if not cold 2000-12-19 04:39:19 +00:00
exec_aout.c Use round_page() instead of roundup(..., NBPG). 2000-11-14 22:13:20 +00:00
exec_conf.c remove use of gcc syntax for designated initialisers when initialising 2001-05-15 02:00:12 +00:00
exec_ecoff.c restructure struct emul and execsw, in preparation to make emulations LKMable: 2000-11-21 00:37:49 +00:00
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 remove unneeded includes. 2000-11-08 05:47:56 +00:00
exec_script.c restructure struct emul and execsw, in preparation to make emulations LKMable: 2000-11-21 00:37:49 +00:00
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 Allow pattern matching for symbol string to handle GCC's output for mips, 1998-11-25 06:10:19 +00:00
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 Don't reset file size limit to infinity on exit. Instead, temporarily 2000-05-08 19:06:36 +00:00
kern_allocsys.c Include "uvm/uvm_param.h" to get definition of "VM_MAX_KERNEL_BUF" as 2000-07-23 10:41:35 +00:00
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 ANSI'ify. 2000-07-14 07:14:33 +00:00
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 Second phase of changes to remove ntp_adjtime(2) from the kernel entirely if 2000-08-07 18:10:20 +00:00
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 Extend NFS_V2_ONLY to remove NQNFS lease support as well. Saves another 10k. 2000-09-19 23:26:25 +00:00
kern_xxx.c restructure struct emul and execsw, in preparation to make emulations LKMable: 2000-11-21 00:37:49 +00:00
kgdb_stub.c Same change in the kgdb code as was done in ddb: 2000-07-18 21:49:08 +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 Get rid of register declarations. 2000-03-30 09:27:11 +00:00
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 brain-oh in last. test logsoftc.sc_pgid, not p. 2000-05-28 18:31:13 +00:00
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 Back out previous. 1998-08-18 18:16:30 +00:00
subr_xxx.c Merge with Lite2 + local changes 1998-03-01 02:20:01 +00:00
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 Round up the sysent table size. 2000-12-09 06:15:42 +00:00
syscalls.master Slight indentation nit. 2001-04-10 11:03:56 +00:00
sysv_ipc.c Make copyrights consistent; fix weird/trailing spaces add missing (c) etc. 1998-09-12 17:20:02 +00:00
sysv_msg.c Delete a couple of <uvm/uvm_extern.h> includes that were for 2000-07-22 16:11:02 +00:00
sysv_sem.c Delete a couple of <uvm/uvm_extern.h> includes that were for 2000-07-22 16:11:02 +00:00
sysv_shm.c eliminate the KERN_* error codes in favor of the traditional E* codes. 2001-03-15 06:10:32 +00:00
tty.c Add `l_poll' to `struct linesw' and provide an xxxpoll() entry point 2001-05-02 10:32:08 +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 MALLOC()/FREE() are not to be used for variable sized allocations. 2000-08-02 20:53:07 +00:00
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 Get rid of register declarations. 2000-03-30 09:27:11 +00:00
uipc_domain.c add pfctlinput2() (pfctlinput() with args). 2001-02-11 06:38:45 +00:00
uipc_mbuf.c Change some low-hanging splimp() calls to splvm(). 2001-01-14 02:06:21 +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_proto.c add PR_LISTEN for UNIX domain socket, SOCK_STREAM case. 1999-07-01 07:59:57 +00:00
uipc_socket.c Remove the use of splimp() from the NetBSD kernel. splnet() 2001-04-13 23:29:55 +00:00
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_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 Set doreallocblks=1 here. 2000-11-30 20:56:53 +00:00
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 change the lf_advlock() arguments from 2000-07-22 15:26:11 +00:00
vfs_lookup.c Convert namei pathname buffer allocation to use the pool allocator. 2000-08-03 20:41:05 +00:00
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