Commit Graph

4397 Commits

Author SHA1 Message Date
chs 9a3f782ac4 define a new LWP flag which indicates that we're in the process of
doing a context switch.  use this on sparc and sparc64 to avoid trying
to access user memory (writing the register windows back to the stack)
in this case (since it's both unnecessary and wrong).
2005-01-30 16:56:26 +00:00
christos 8633e293d5 make sure that bss size > 0 before we add a vmcmd for it. 2005-01-29 20:14:04 +00:00
wrstuden e384a44e9d Extend fsync_range(2) to support the FDISKSYNC flag, which requests
that the sync be propogated out through the disk drive caches.
2005-01-25 23:55:20 +00:00
dbj 208b0b3a89 clear p->p_cwdi of exiting processes and
avoid dereferencing invalid p_cwdi in checkdirs
this fixes a race condition between exiting processes and mount
see discussion on tech-kern:
 http://mail-index.netbsd.org/tech-kern/2004/10/04/0006.html
 http://mail-index.netbsd.org/tech-kern/2004/10/08/0005.html
2005-01-24 21:27:02 +00:00
matt 027c11539b Add IFNET_FOREACH and IFADDR_FOREACH macros and start using them. 2005-01-24 21:25:09 +00:00
chs ad79fc3015 move the call to link_pool_init() to the end of uvm_init(). needed for sun3. 2005-01-23 19:02:02 +00:00
matt d341be30f4 Change initialzie of domains to use link sets. Switch to using STAILQ.
Add a convenience macro DOMAIN_FOREACH to interate through the domain.
2005-01-23 18:41:56 +00:00
yamt f6e639255b lkmunreserve: free memory to the correct vm_map when kernel_map != lkm_map. 2005-01-23 08:41:02 +00:00
yamt c3b17808da cc_microset: #if 0 out a diagnositc printf.
this functions is called from ipi handler.
2005-01-23 08:39:51 +00:00
christos 201de1bdd0 Cast nkmempages to vsize_t before shifting to avoid overflow. Requested
by soda.
XXX: should be pulled up to 2.0.
2005-01-14 17:03:58 +00:00
cube fade05f67f As fd_lastfile might be negative, we can't use the (u_int) cast trick to
compare fd and fdp->fd_lastfile in fdrelease(), so change the test to a
more explicit one.  Spotted by Matt Thomas.

Should fix the panic reported by Matthias Scheler.
2005-01-14 00:25:12 +00:00
yamt 48355cdf13 kmeminit_nkmempages: don't limit the size of kmem_map to physmem/4
because, while there's little benefit to do so, it easily causes
"out of space in kmem_map" panic on machines with small memory.
2005-01-13 11:49:09 +00:00
christos 53aa30e2eb s/vp->v_uobj.vmobjlock/vp->v_interlock/. This is the last instance in kern/*.c 2005-01-12 21:51:52 +00:00
cube 8ec7c6764b fd_lastfile should be -1 when there are no opened file descriptors.
Hence, make find_last_set return -1 in such situation, and initialize it
such.  Otherwise, with 0 meaning two things, it confused the F_CLOSEM
fcntl which could end up looping indifintely (PR#28929 by Brian Marcotte).

However, this change enlightens another bug in fdcopy(), where more entries
than needed were cleared in the new file descriptor table, so the memset()
call there is fixed too.

Analyzed with the help of Greg Oster.
2005-01-12 20:41:45 +00:00
tls abcbeb46d9 Users have observed that the amount of memory used by the metadata cache
can in some situations exceed the high-water mark, and stay there once it
gets there.  Adjust the canrelease function so that it will immediately
bring us back down to the high-water mark in this situation.

How can this happen at all?  Consider a machine with two filesystems, one
with a much larger blocksize than the other.  If the small-block filesystem
is very busy, growing the cache up to the high-water mark, and then the
large-block filesystem becomes busy, buffers will be recycled (since we
are at the high-water mark) but _grow each time they're recycled_.  Once
we're above the high-water mark, the canrelease call in allocbuf (without
this change) doesn't shrink us back down below it; so things get worse and
worse.
2005-01-10 15:29:50 +00:00
christos 4bfe82cbac Flip the order of two lines I mixed. Thanks to wiz for noticing. 2005-01-09 20:25:26 +00:00
christos 82ee9647b8 Allow PT_DUMPCORE to specify the core filename. 2005-01-09 19:22:55 +00:00
mycroft 0461b30ac3 Rework the mountroot interface so that vfs_mountroot() opens the root device
and just passes it on to the file system functions.  This avoids opening and
closing the device several times.

Mentioned on tech-kern some time ago, IIRC.  I've been running this for a
long time.
2005-01-09 03:11:48 +00:00
mycroft 13495aa242 If sa_upcall() fails (which is always going to be due to resource exhaustion),
do not leak siginfo structures.

Note that in the cases of trap signals and timer events, losing this
information could be very bad; right now it will cause us to spin until the
process is SIGKILLed.

"Needs work."
2005-01-06 19:26:41 +00:00
thorpej 4dfb0d5670 Regen for extended attribute system calls. 2005-01-02 17:47:29 +00:00
thorpej aee687701e Regen for extended attribute VOPs. 2005-01-02 17:46:41 +00:00
thorpej 1c95472d01 Add the system call and VFS infrastructure for file system extended
attributes.

From FreeBSD.
2005-01-02 16:08:28 +00:00
yamt 097f0ea734 PR_NOTOUCH:
- use uint8_t instead of uint16_t for freelist index.
- set ph_off only if PR_NOTOUCH.
- comment.
2005-01-01 21:09:56 +00:00
yamt a880e5e2b5 in the case of !PMAP_MAP_POOLPAGE, gather pool backend allocations to
large chunks for kernel_map and kmem_map to ease kva fragmentation.
2005-01-01 21:08:02 +00:00
yamt aa64686bba introduce a new flag for pool_init, PR_NOTOUCH.
if it's specified, don't use free items as storage for internal state.
so that we can use pools for non memory backed objects.
inspired from solaris's KMC_NOTOUCH.
2005-01-01 21:04:39 +00:00
yamt 95c82bfee4 introduce vm_map_kernel, a subclass of vm_map, and
move some kernel-only members of vm_map to it.
2005-01-01 21:02:12 +00:00
simonb 60e6b50deb Spell "available" correctly. 2005-01-01 03:24:43 +00:00
jdolecek f201f239e3 #ifdef DDB rdyfail label, too 2004-12-30 12:12:16 +00:00
jdolecek aca74c5304 only do the temporary symbol table load #ifdef DDB and add comment for
the code block, so that the purpose is more clear

avoid NULL pointer dereference in lkmunreserve() called on lkm device
close when ksym_addsymtab() fails for the temporary symbol table
(sanity change only, this can never happen at the moment)
2004-12-30 11:47:02 +00:00
jdolecek b90395b379 fix two issues regarding handling of ksyms (modload -s):
* only add the symbol table for the current module if the LKM_E_LOAD
  hook returns success; otherwise we overwrite the LKM_E_LOAD error,
  which may ultimately lead to (incorrectly) allowing the module load
* only delete the sumbol table for current module if we actually added
  the symbol table; avoids deleting symbol table of previously loaded
  module when the same module is loaded twice, when the second load
  fails with EEXIST

fixes PR kern/28803 by Jens Kessmeier
2004-12-30 11:35:41 +00:00
dbj b2c6a6a4ea also define bioops if FFS is not defined. 2004-12-23 20:11:28 +00:00
christos 91a90a7c68 - Move string array definitions and bitmap array definitions to the appropriate
header files, so that they don't become out of sync (again).
- Use bitmask_snprintf() instead of hand-rolled code.
- Always check array bounds before dereferencing print arrays.
- Order arguments in the vnode printing functions consistently.
2004-12-18 03:07:40 +00:00
yamt 819738713e sys_acct: use VOP_SETATTR instead of VOP_TRUNCATE as the latter's
filesystem internal.  while i'm here, fix vnode locking.

XXX vn_start_write
2004-12-13 08:46:43 +00:00
yamt 3290f3a078 vn_lock: #if 0 out an assertion for now. (until PR/27021 is fixed) 2004-12-12 04:46:46 +00:00
matt 108f8fbc51 Add some debug code to validate the runqueues if RQDEBUG is defined. 2004-12-09 21:52:24 +00:00
jrf ac053b9ef0 Fix previous commit, got bufcache and bufmem messages reversed. 2004-12-05 06:12:54 +00:00
jrf cd5b5ced44 Change sysctl -d vm.bufcache to say percent of physical memory not
kernel memory. Addresses PR misc/27233. Approved by atatat@netbsd.org.
2004-12-05 06:00:20 +00:00
christos 31c81b28f5 Cloning cleanup:
1. make fileops const
2. add 2 new negative errno's to `officially' support the cloning hack:
    - EDUPFD (used to overload ENODEV)
    - EMOVEFD (used to overload ENXIO)
3. Created an fdclone() function to encapsulate the operations needed for
   EMOVEFD, and made all cloners use it.
4. Centralize the local noop/badop fileops functions to:
   fnullop_fcntl, fnullop_poll, fnullop_kqfilter, fbadop_stat
2004-11-30 04:25:43 +00:00
thorpej 29671d6616 Fix the fcntl entry points; cmd is a command, not the flags themselves.
Pointed out by Christos (he wrote the broken code originally, and I copied
it to another file later :-)
2004-11-28 07:44:05 +00:00
yamt eb54e7db24 lookup bufq using link_set rather than a switch statement. 2004-11-25 04:52:23 +00:00
christos 96832589f8 Limit the hard-coding of things to tty_bsdpty.c. 2004-11-24 22:19:27 +00:00
yamt 548e34d26e pipe_direct_write: fallback to non-loan write in the case of
any errors from uvm_loan(), rather than only for ENOMEM, which is
never returned by uvm_loan().
2004-11-21 04:30:33 +00:00
peter 5dc9788b36 Fix a typo, dependancy -> dependency
ok wiz@
2004-11-19 14:18:53 +00:00
atatat 612e86b46d Wrap TIMEVAL_TO_TIMESPEC and TIMESPEC_TO_TIMEVAL macros in
do { ... } while(/*CONSTCOND*/0)

so that they can be used unadorned in if/else blocks, etc.  This means
that you now *have* to put a ; at the end of the "call" to these
macros.
2004-11-14 03:30:08 +00:00
christos 7ea1254f12 vgoneall is no more. remove redundant decl. 2004-11-14 00:36:21 +00:00
christos 6665736bf9 Truncate the last incomplete accounting record, if the file size is not
a multiple of the accounting size structure. This can happen after a system
crash when fsck truncates the accounting file.
2004-11-13 20:41:41 +00:00
christos dfa8d84485 PR/25749: Peter Postma: Missing splx() in kernel. 2004-11-13 19:16:18 +00:00
christos 81021e3081 In TIOCPTSNAME return the minor number of the device in the fd portion of
the structures. It is more useful than -1 and cheap to do. Linux pty emulation
uses it.
2004-11-13 08:46:46 +00:00
christos f03f3b9452 Split the ptm driver out of tty_pty.c into its own file. From that split
the code that `knows' about /dev/[pt]tyXX names (the BSD ptys) into a separate
file. Make an interface to be used by the tty creating provider. The code
to enable old PTY searching via ptm is enabled via COMPAT_BSDPTY, and it
is turned on by default on all kernels that have compatibility options enabled.
2004-11-10 17:29:54 +00:00
christos ed77e93ea9 Fix another stupid typo. 2004-11-06 07:34:53 +00:00
christos d99b25032a I guess compiling code before committing is a lost art! 2004-11-06 07:31:55 +00:00
wrstuden 16029d56b5 Add support for FIONWRITE and FIONSPACE ioctls. FIONWRITE reports
the number of bytes in the send queue, and FIONSPACE reports the
number of free bytes in the send queue. These ioctls permit applications
to monitor file descriptor transmission dynamics.

In examining prior art, FIONWRITE exists with the semantics given
here. FIONSPACE is provided so that programs may easily determine how
much space is left in the send queue; they do not need to know the
send queue size.

The fact that a write may block even if there is enough space in the
send queue for it is noted in the documentation.

FIONWRITE functionality may be used to implement TIOCOUTQ for Linux
emulation - Linux extended this ioctl to sockets, even though they are
not ttys.
2004-11-06 02:03:20 +00:00
matt 2f15be42ae Check to see if the script has an ELF header, and if so, return ENOEXEC. 2004-11-04 23:55:28 +00:00
skrll 59abd634ef We emulate more than SVR4, and IBCS2 on the i386 and Linux on the i386
and the Alpha there days. Remove this statement in a comment.
2004-10-30 09:38:15 +00:00
yamt 05f25dcc2a move buffer queue related stuffs from buf.h to their own header, bufq.h. 2004-10-28 07:07:35 +00:00
skrll 1d0409de9a Fix bug in siginfo handling introduced in revision 1.93 2004-10-26 06:58:05 +00:00
yamt 4dd708bfff a relatively lightweight implementation of kernel_lock. 2004-10-26 00:14:46 +00:00
peter 8270ea3f59 Use ANSI function decls. 2004-10-25 23:37:58 +00:00
peter 7101691fa3 Remove two redundant conditionals. 2004-10-25 23:06:41 +00:00
peter 993460fbb1 Change the static array to a linked list, removes the limit of max 20 LKMs.
Mostly from OpenBSD.
Reviewed by several people on tech-kern.
2004-10-25 22:59:12 +00:00
cube 85c68ec88d Add a check in DEV_USES_PARTITIONS macro in case dv->dv_cfdata is NULL,
as it is the case for md and raid. Raid case tested by Martin Husemann,
I could test the install floppies work again.
2004-10-24 17:06:24 +00:00
yamt c0ebe301d7 don't reference kernel_lock directly. 2004-10-23 21:27:33 +00:00
thorpej a6be1570c7 - Centralize the declaration of booted_device and booted_partition.
- Add a booted_wedge variable that indicates the wedge that was booted
  from.  If this is NULL, booted_partition is consulted.
- Adjust setroot() and its support routines for root-on-wedges.  Could
  use some tidy-up, but this works for now.
2004-10-23 17:14:11 +00:00
peter 5d3f22a6e3 Remove the confusing PAGESIZE macro and calculate the size by doing
size / 1024.

Approved by mrg.
2004-10-22 09:49:18 +00:00
matt 2fefa174c9 Make panic messages print out what condition they though was panic-worthy
instead of a 1 word message.
2004-10-20 22:10:31 +00:00
jdolecek 065df3bb84 fix typo (missing &) 2004-10-17 11:24:42 +00:00
jdolecek 84e86b0dce use nointr allocator for shmmap_entry_pool - this is always accessed
from process context
2004-10-17 11:23:16 +00:00
jdolecek 3b6adcdea1 kill the indirection via struct shm_handle and store pointer to the uvm
object direct to _shm_private; the indirection doesn't serve any
useful purpose and just wastes memory and cpu cycles
2004-10-16 13:34:07 +00:00
thorpej 11103d1865 No longer need <sys/disk.h> 2004-10-15 07:22:02 +00:00
thorpej 99e5d764c1 - Eliminate the need to call disk_init().
- disk_count needs to be protected with disklist_slock, too.
2004-10-15 07:19:01 +00:00
thorpej f8335cf6c2 Don't initialize ttylist or tty_count in tty_init(). 2004-10-15 07:15:39 +00:00
thorpej 45bba4e135 Change config_attach_pseudo() to take a cfdata * that contains the
necessary information to create the pseudo-device instance.  Pseudo-device
device's will reference this cfdata, just as normal devices reference
their corresponding cfdata.

Welcome to 2.99.10.
2004-10-15 04:38:36 +00:00
yamt 1c2a2dcad3 move i/o schedulers to their own files.
namely, from kern/subr_disk.c to kern/bufq_{fcfs,disksort,readprio,priocscan}.c.
2004-10-14 05:12:28 +00:00
briggs 9f506888d3 Update sem_otime on successful call to semop(). 2004-10-07 05:34:09 +00:00
skrll d42dfb7727 Correct arg name in comment. 2004-10-06 08:55:27 +00:00
is b5016b1bb3 Some code likes to mix MT_HEADER and MT_DATA. Revert this assertion until
the usage of MT_HEADER vs. MT_DATA is better defined and implemented.
2004-10-05 12:19:29 +00:00
enami 4fa5fd9ed6 - Testing low memory condition to see if we should alloc or not doesn't make
sense, since 1) the condition is quite normal condition and 2) there is
  pool between us and uvm.
- Make the step of allocation possibility a bit seamless by moving the origin
  of curve from 0 to lowater mark.
Simon told that this helps for interactive performance when there is heavy
disk activity in PR#27057.
2004-10-04 01:24:18 +00:00
enami 51718e92ee Factor out code to set watermark and ensure high > low. 2004-10-04 00:46:05 +00:00
yamt d0094e323b proclist_foreach_call: tweak an assertion to deal with the case that
spinlockmgr is no-op.  PR/27125 from Andreas Wrede.
2004-10-03 22:26:35 +00:00
enami 682c3c9443 - Don't let pagedaemon sleep while draining buf.
- Estimate amount of memory to free at a time.
Address PR#27057 (and similar hangs I saw several months ago).
2004-10-03 08:47:48 +00:00
enami ba25820566 x > 15 is always false if x is 0 .. 15.
# XXX: testing free memory here is quite doubtful.  also, I guess lowater
# XXX: is better than 0 as origin.
2004-10-03 08:30:09 +00:00
enami 778d21de43 Cheap test first. 2004-10-03 08:17:54 +00:00
yamt 0994e6acb8 introduce a function, proclist_foreach_call, to iterate all procs on
a proclist and call the specified function for each of them.
primarily to fix a procfs locking problem, but i think that it's useful for
others as well.

while i'm here, introduce PROCLIST_FOREACH macro, which is similar to
LIST_FOREACH but skips marker entries which are used by proclist_foreach_call.
2004-10-01 16:30:52 +00:00
reinoud 22f1132820 Implement ddb setting that allows all ddb output to be teed into the
kernel message buffer/log. Its off by default and can be switched on in the
kernel configuration on build time, be set as a variable in ddb and be set
using sysctl.

This adds the sysctl value
	ddb.tee_msgbuf = 0
by default.

The functionality is especially added and aimed for developers who are not
blessed with a serial console and wish to keep all their ddb output in the
log. Specifying /l as a modifier to some selected commands will also put
the output in the log but not all commands provide one nor has the same
meaning for all commands.

This feature could in the future also be implemented as an ddb command but
that could lead to more bloat allthough maybe easier for non developpers to
use when mailing their backtraces from kernel crashes.
2004-09-29 23:54:11 +00:00
jdolecek f64366a240 add flag for shmget(2) to specify that later shmat(2) for the shared memory
segment should succeed even if the segment would be marked removed; use this
to implement the Linux-compatible semantics of shmat(2)

this fixes the old Linux VMware3 graphics problem with local display,
and possibly other local Linux X clients using MIT-SHM
2004-09-28 19:05:19 +00:00
jdolecek 68ee548306 fold shmat1() back into sys_shmat(), the change in rev 1.64 is not sufficient
for Linux-compatible shmat() behaviour - shmat() for the removed shared memory
segment must work from all callers, the shared memory id could be passed e.g.
to native X server via MIT-SHM

temporarily remove the functionality, the Linux-compatible semantics
will be reimplemented differently
2004-09-28 17:26:25 +00:00
jdolecek 3254cd78d8 adjust the change of rev. 1.190 so that trap signals not matching
the reset condition are processed properly; this fixes PR#26687 by
Jan Schaumann

many thanks to Mark Davies, who tracked the offending change down
and helped test patches

while here, g/c unused sigtrapmask and rearrange some code to pre-r1.190 form
for better readability
2004-09-28 08:59:20 +00:00
thorpej baefaf4422 Work-in-progress implementation of "wedges", a new way to represent
partitions in the NetBSD kernel.  See discussion on tech-kern for details.
2004-09-25 03:30:44 +00:00
yamt 832a9b868e release kernel lock in uiomove(). 2004-09-23 10:45:08 +00:00
enami 633ef38973 Create kernel thread and let it to issue the write request. We can't
do this from trace target process since we can't sleep at certain
trace point (otherwise system may hang).  Address PR#23155.
2004-09-22 22:15:03 +00:00
lukem e0c9340497 Add "unmounting disks..." [unmount] " done" to vfs_unmountall(),
so the user has some idea what's occurring after "syncing disks... done"
2004-09-22 11:47:23 +00:00
yamt d2fe4b34bb move some per-cpu data definitions to MI place so that they can be modified
without touching all ports.  discussed on tech-kern@.
2004-09-22 11:32:02 +00:00
thorpej d01a5a57e8 Regenerate for VNODE_LOCKDEBUG changes. 2004-09-21 03:11:53 +00:00
thorpej 11afd11faa Add a new VNODE_LOCKDEBUG option, which enables checks in the VOP_*()
calls to ensure that the vnode lock state is as expected when the VOP
call is made.  Modify vnode_if.src to set the expected state according
to the documenting lock table for each VOP.  Modify vnode_if.sh to emit
the checks.

Notes:
- The checks are only performed if the vnode has the VLOCKSWORK bit
  set.  Some file systems (e.g. specfs) don't even bother with vnode
  locks, so of course the checks will fail.
- We can't actually run with VNODE_LOCKDEBUG because there are so many
  vnode locking problems, not the least of which is the "use SHARED for
  VOP_READ()" issue, which screws things up for the entire call chain.

Inspired by similar changes in OpenBSD, but implemented differently.
2004-09-21 03:10:35 +00:00
yamt 3362d4ed5b fix allocbuf() O(n**2) behaviour where n is number of AGE buffers
by always tracking amount of buffers on a queue.
bump to 2.0H.
2004-09-18 16:37:12 +00:00
yamt 2bf1a4ef17 - add missing function prototypes.
- fix prototype mismatches.
2004-09-18 16:01:03 +00:00
enami 23114636eb Delete m_tag from a mbuf being non-pkthdr mbuf rather than newly becoming
pkthdr mbuf.
2004-09-17 23:24:03 +00:00
enami a3eb2d5952 - proc_alloc() already initializes p_stat to SIDL.
- copy unconditionaly inherited p_flag bits in a single place.
2004-09-17 23:20:21 +00:00
skrll f7155e40f6 There's no need to pass a proc value when using UIO_SYSSPACE with
vn_rdwr(9) and uiomove(9).

OK'd by Jason Thorpe
2004-09-17 14:11:20 +00:00
tls 95c72fc3de Add 50Hz support -- this will allow 'options NTP' to work on the Xen port,
once the Xen port's timer interrupts are made somewhat more sane (it "works"
now, but keeps worse time than without the option, ouch)
2004-09-15 04:56:14 +00:00
jdolecek e6e73849a5 g/c rest of COMPAT_AOUT support 2004-09-14 17:25:37 +00:00
jdolecek 023551ef44 gc opt_compat_aout.h include 2004-09-14 17:20:29 +00:00
jdolecek a6894024dd dostatvfs(): zero the statvfs structure before calling filesystem code, so that
unset parts would have defined value and not pass random parts of kernel stack
2004-09-13 20:02:20 +00:00
jdolecek c407d0a5ca copy_statvfs_info(): copy f_namemax too 2004-09-13 19:45:21 +00:00
thorpej 77f08a265c Move the 16/32-bit encode/decode to/from octet stream routines from
kern_uuid.c to sys/endian.h (where FreeBSD has them), and add 64-bit
variants.
2004-09-12 23:17:37 +00:00
jdolecek ca7fc04a65 use 'have_toupper' variable for awk toupper() function existence test, rather
than 'isgawk' - e.g. nawk has toupper() too
2004-09-12 11:24:15 +00:00
yamt 1304a56139 m_split: restore a behaviour on M_PKTHDR, which was unintentionaly
changed when i added m_copyback_cow.
2004-09-11 19:55:19 +00:00
yamt 6a2c652541 regen. 2004-09-10 09:38:17 +00:00
yamt 472da495d3 VOP_BMAP isn't protected by vnode locks these days. 2004-09-10 09:37:41 +00:00
jdolecek 734ccdcf2b fix/adjust comment a little 2004-09-10 06:09:15 +00:00
yamt 7b09a1e089 m_copyback, m_copyback_cow, m_copydata:
- caddr_t -> void *
- constify.
partly from openbsd.
2004-09-08 12:00:28 +00:00
yamt d08391b2a3 buf_trim: a buffer grabbed by getnewbuf() should be clean and anonymous.
thus, there's no need to check and handle B_WANTED here.
2004-09-08 10:20:15 +00:00
yamt e2139bcdc8 add m_copyback_cow and m_makewritable. 2004-09-06 09:43:29 +00:00
manu 6e3c639957 IPv4 PIM support, based on a submission from Pavlin Radoslavov posted on
tech-net@
2004-09-04 23:29:44 +00:00
manu 35053e0e8d Recognize bundles as mach-O executables 2004-09-04 23:21:26 +00:00
skrll ab05973128 Use "NULL" instead of "(struct foo *)0". 2004-09-04 07:09:35 +00:00
darrenr 02c34673a3 add a per-socket counter for dropped UDP packets when the internal buffers
are full.
2004-09-03 18:14:09 +00:00
drochner e66ef34b75 split out the check whether a driver supports a given interface
attribure, and add a diagnostic assertion to config_search_loc()
which ensures that a supplied attribute name is correct
2004-08-30 09:48:05 +00:00
thorpej e910f9082e - Define a constant to describe the length of a printed UUID string.
- Clean up the namespace of this module and enable the encode/decode
  functions and printing functions.
- Move the code that actually generates the UUID out of the system call
  routine and into its own function.
2004-08-30 02:56:03 +00:00
itojun 9ac7900a84 bug reported by millert@openbsd:
> Call dom_dispose() for any SCM_RIGHTS message that went through the
> read path rather than recv.  Previously, if an fd was passed via
> sendmsg() but was consumed by the receiver via read() the ref count
> was incremented and never decremented and so the ref count would
> never reach zero even when there was no long any processes holding
> the file open (this was especially bad for locked fds).
2004-08-25 09:03:23 +00:00
drochner 6860e77f9d include <sys/device> explicitely, found by Havard Eidnes 2004-08-19 15:12:36 +00:00
christos 43f6a1ad3b PR/26210: Matthew Mondor: Since revision 1.14 when net-2 was merged,
the code to do receive packet accounting has been disabled for no apparent
reason. Re-enable it.
2004-08-19 12:48:42 +00:00
drochner 4157766364 add a "drvctl" pseudo-device as userland interface to the autoconf
rescan() and detach() functions
2004-08-18 12:19:29 +00:00
drochner d95b59fae8 add a new "DRV" LKM type, and some glue code to make it use the new
autoconf capabilities
2004-08-17 22:38:50 +00:00
drochner 08538dce1b Add some extensions to the autoconf framework to better support
loadable drivers and user controlled attach/detach of devices.
An outline was given in
http://mail-index.NetBSD.org/tech-kern/2004/08/11/0000.html
To cite the relevant parts:
-Add a "child detached" and a "rescan" method (both optional)
 to the device driver. (This is added to the "cfattach" for now
 because this is under the driver writer's control. Logically
 it belongs more to the "cfdriver", but this is automatically
 generated now.)
 The "child detached" is called by the autoconf framework
 during config_detach(), after the child's ca_detach()
 function was called but before the device data structure
 is freed.
 The "rescan" is called explicitely, either after a driver LKM
 was loaded, or on user request (see the "control device" below).
-Add a field to the device instance where the "locators" (in
 terms of the autoconf framework), which describe the actual
 location of the device relatively to the parent bus, can be
 stored. This can be used by the "child detached" function
 for easier bookkeeping (no need to lookup by device instance
 pointer). (An idea for the future is to use this for generation
 of optimized kernel config files - like DEC's "doconfig".)
-Pass the locators tuple describing a device's location to
 various autoconf functions to support the previous. And since
 locators do only make sense in relation to an "interface
 attribute", pass this as well.
-Add helper functions to add/remove supplemental "cfdata"
 arrays. Needed for driver LKMs.

There is some code duplication which will hopefully resolved
when all "submatch"-style functions are changed to accept the
locator argument.
Some more cleanup can take place when config(8) issues more
information about locators, in particular the length and default
values. To be done later.
2004-08-17 22:13:18 +00:00
mycroft 45a21b76f0 Fixing age old cruft:
* Rather than using mnt_maxsymlinklen to indicate that a file systems returns
  d_type fields(!), add a new internal flag, IMNT_DTYPE.

Add 3 new elements to ufsmount:
* um_maxsymlinklen, replaces mnt_maxsymlinklen (which never should have existed
  in the first place).
* um_dirblksiz, which tracks the current directory block size, eliminating the
  FS-specific checks littered throughout the code.  This may be used later to
  make the block size variable.
* um_maxfilesize, which is the maximum file size, possibly adjusted lower due
  to implementation issues.

Sync some bug fixes from FFS into ext2fs, particularly:
* ffs_lookup.c 1.21, 1.28, 1.33, 1.48
* ffs_inode.c 1.43, 1.44, 1.45, 1.66, 1.67
* ffs_vnops.c 1.84, 1.85, 1.86

Clean up some crappy pointer frobnication.
2004-08-15 07:19:54 +00:00
mycroft fbf03babff There is an annoying deadlock that goes like this:
* Process A is closing one file descriptor belonging to a device.  In doing so,
  ffs_update() is called and starts writing a block synchronously.  (Note: This
  leaves the vnode locked.  It also has other instances -- stdin, et al -- of
  the same device open, so v_usecount is definitely non-zero.)
* Process B does a revoke() on the device.  The revoke() has to wait for the
  vnode to be unlocked because ffs_update() is still in progress.
* Process C tries to open() the device.  It wedges in checkalias() repeatedly
  calling vget() because it returns EBUSY immediately.

To fix, this:
* checkalias() now uses LK_SLEEPFAIL rather than LK_NOWAIT.  Therefore it will
  wait for the vnode to become unlocked, but it will recheck that it is on the
  hash list, in case it was in the process of being revoke()d or was revoke()d
  again before we were woken up.
* Since we're relying on the vnode lock to tell us that the vnode hasn't been
  removed from the hash list *anyway*, I have moved the code to remove it into
  the DOCLOSE section of vclean(), inside the vnode lock.

In the example at hand, process A was sh(1), process B was a child of init(8),
and process C was syslogd(8).
2004-08-13 22:48:06 +00:00
hannken bc4af00256 Make it compile again for sparc64/DIAGNOSTIC.
All archs should use `cpuid_t ci_cpuid' ...
2004-08-12 12:15:21 +00:00
christos 5647899427 make the reset time a DIAGNOSTIC, and print the cpu#. 2004-08-11 16:25:51 +00:00
jdolecek 9aba366e0b Linux enforces CLONE_VM if CLONE_SIGHAND in clone(2) is specified,
follow the suit - this is intended to be Linux-compatible call
2004-08-08 11:02:10 +00:00
jdolecek 142def6b36 pass the fork flags down the emulation proc fork hook 2004-08-08 11:00:05 +00:00
christos 0b82702558 PR/26468: Andrew Brown: Setting stopfork can panic the kernel.
When stopfork is set, we need to set p_nrlwps, since we are not going to
ber running.
2004-08-07 03:35:55 +00:00
christos 251940a98f Use the P_ZOMBIE macro instead of open-coding it. No functional change. 2004-08-07 03:34:37 +00:00
enami 8d37dcb7dc The different loop variable is no longer necessary due to recent change. 2004-08-05 22:06:48 +00:00
yamt 1e4aff5d38 add missing wakeups in the cases of lock failure.
from Stephan Uphoff, FreeBSD PR/69964.

(http://www.freebsd.org/cgi/query-pr.cgi?pr=69964)
> The LK_WANT_EXCL and LK_WANT_UPGRADE bits act as mini-locks and can block
> other threads.
> Normally this is not a problem since the mini locks are upgraded to full loc
> and the release of the locks will unblock the other threads.
> However if a thread reset the bits without optaining a full lock
> other threads are not awoken.
> This can happens if obtaining the full lock fails because of a LK_SLEEPFAIL,
> or a signal (if lock priority includes PCATCH .. don't think this is used).
2004-08-04 10:37:08 +00:00
yamt 8b4f43c443 - revert a part of the previous which breaks LK_SPIN locks.
(reported by Nicolas Joly on current-users@)
- propagate the previous to spinlock_acquire_count.
2004-08-04 01:16:06 +00:00
yamt c602229c1a when acquiring an exclusive lock,
ensure that no one else have the same lock.
a patch from Stephan Uphoff, FreeBSD PR/69934.

(http://www.freebsd.org/cgi/query-pr.cgi?pr=69934)
>	Upgrading a lock does not play well together with acquiring
>	an exclusive lock and can lead to two threads being
>	granted exclusive access.
>
>	Problematic sequence:
>	Thread A acquires a previous unlocked lock in shared mode.
>	Thread B tries to acquire the same lock in exclusive mode
>	and blocks.
>	Thread A upgrades its lock - waking up thread B.
>	Thread B wakes up and also acquires the same lock as it only checks
>	if the lock is not shared or if someone wants to upgrade the lock
>	and not if someone already upgraded the lock to an exclusive lock.
2004-08-03 12:08:51 +00:00
jdolecek 41405858b3 bump the number of allowed sections to 1024; e.g. SuSE 9.1 packaged
Mozilla 1.6 has 726 sections
2004-08-01 22:16:19 +00:00
lukem 66ff0c053c Rename LIBCOMPAT* -> SYSLIBCOMPAT*, now that <bsd.own.mk> provides LIBCOMPAT.
Fixes kernel link problem noted by Sebastien Erard.
2004-07-31 00:55:51 +00:00
atatat 91e4762204 The message buffer datum instrumented by KERN_MSGBUFSIZE is actually a
long, not an int, and this causes "problems" on LP64be machines
(sparc64, etc).  Assign the value to a temporary int and instrument
that instead.  Should be fine until someone wants a message buffer
larger than two gigabytes.
2004-07-27 12:46:18 +00:00
yamt 1e19d56b66 m_pulldown: fix mbuf leaks and chain truncation
in the case that m_dup() returns a chain of mbufs.
eg. when you attempt to m_pulldown() the middle of
a large M_EXT mbuf.
2004-07-21 12:09:43 +00:00
yamt 7af0699fdd m_copyback: add an assertion to detect write attempts to a read-only mbuf. 2004-07-21 12:06:46 +00:00
he afe2341535 Cast register type via intptr_t before cast to pointer.
Fixes build problem for evbsh5.
2004-07-20 14:56:10 +00:00
chs 423159120b add support for hppa to the MI scheduler activations kernel code:
- on hppa the stack grows up, so handle that using the STACK_* macros.
2004-07-18 21:29:26 +00:00
mycroft 4605cec510 PRIBIO -> PSOCK. This emulates the pre-sys_pipe behavior, and avoids including
processes blocked on pipe I/O in the load average.
2004-07-17 20:50:08 +00:00
yamt 118553b061 sa_release: NULL out l_savp to avoid having a stale reference to per-vp data.
it matters when an application using SA does exec() an application which also
uses SA.  (firefox 0.9 seems to do this.)
2004-07-06 12:23:40 +00:00
pk a7c40722d8 Call inittodr() from main(). Let file system code set the recorded `last
update' time (if any) through the new function setrootfstime().
2004-07-05 07:28:45 +00:00
manu 26200ee754 In MacOS X.3, the kernel maps tw opages of memory in every user process.
This areas is called the comm pages. It is used to provide fast access to
several data and functions.

The comm pages are mapped starting at 0xffff800 (address chosed so that
absolute branch can be used, so it can be accessed even when dynamic linking
is not ready). NetBSD has the user stack here, so we need to provide a
Darwin-specific stack setup routine which sets the top of the stack at
0xbfff0000.

This implementation is not complete but it does enough to get MacOS X.3
starting again (static binaries run, dynamic binaries still have an issue).
in the comm pages functions, we only implement bcopy, pthread_self and
memcpy.

TODO:
- clean up the powerpc specific code from MD parts
- for now we map only one page to avoid a crash, we want two pages.
- write all the comm functions.
2004-07-03 00:14:30 +00:00
yamt fb277865d7 bump sb_timeo from short to int to allow longer timeouts.
especially when hz is high.

while i'm here, bump sb_flags to int, as suggested by
Jason Thorpe and Bill Studenmund.

ride on 2.0G.
2004-07-01 12:42:57 +00:00
yamt 0f3ce64ad4 statclock: don't assume hz==100 when determining frequency to call schedclock. 2004-07-01 12:36:57 +00:00
hannken f59f039ea5 Keep a pointer to the leaf mount. Needed for write gating where a
file system gets suspended and has layered mounts above it.

Welcome to 2.0G

Reviewed by: Bill Studenmund <wrstuden@netbsd.org>
2004-07-01 10:03:29 +00:00
fredb 430f0ecf15 Multiply before divide, correcting a mistake introduced by revision 1.7.
The loss of precision could be significant in some cases.
2004-06-27 15:21:30 +00:00
yamt ce02ffbc68 introduce a new function, cache_lookup_raw(), for filesystems which
want more flexible namecache handling.
it just looks up a dnlc entry and vget() the result vnode.
ie. no automatic entry removal, no automatic vnode locking.

discussed on tech-kern@.
2004-06-27 08:50:44 +00:00
fredb ca3c6f824f Partly back out the last, to avoid a deadlock when microtime() is called
from levels below IPL_CLOCK (pointed out by thorpej). Just take the lock
before reading the time and cycle counter.
2004-06-27 01:36:04 +00:00
chs a4bbde95f7 add a workaround for PR 25664 (failure to map sigcode for Tru64 binaries). 2004-06-27 00:55:08 +00:00
chs a77ca34b8a rearrange the handling of p_textvp so that the ref-counting is correct.
fixes PR 25663.
2004-06-27 00:41:03 +00:00
fredb f17b436426 Take the lock earlier, before reading the cycle counter, so that it
doesn't advance while we're waiting on the lock. In fact, try to take
the lock even before blocking interrupts: the lock is locking "lasttime"
against other callers of cc_microtime(), not against the clock routines,
and if we take a clock interrupt while waiting for the lock, that's one
we don't have to take after the computations, but before returning to
the caller, and that makes the data a little fresher to the caller.

Moreover, inverting the order of splXXX() and simple_lock() permits us
to unblock interrupts before doing the long division.

With this, finally, performance of "ntpd" on my MP i386 seems to be no
worse than on non-MP i386, so this may fix PR kern/24207.
2004-06-26 16:31:33 +00:00
christos 39e498b419 Explain why the comment is a lie. 2004-06-24 15:06:35 +00:00
jonathan 5249b5a2a5 Rename MBUFTRACE helper function m_claim() to m_claimm(),
for consistency with M_FREE() and m_freem().  Affected files:

sys/mbuf.h
kern/uipc_socket2.c
kern/uipc_mbuf.c
net/if_ethersubr.c
netatalk/ddp_input.c
nfs/nfs_socket.c
2004-06-24 04:15:50 +00:00
christos 7e8ca29827 Fix a panic induced by forcing ktrace to inject an emul record on
a ktraced file descriptor that has already been invalidated. Change
all ktrace functions to propagate the error from ktrwrite() and
check for it. Thanks to Pavel Cahyna for finding this and giving
a perfect bug report.

[should be pulled up for 2.0]
2004-06-23 23:05:48 +00:00
christos 0fe4a0b07a Don't check for negative offset in the memory case. 64 bit addresses can
have the high bit set, and thus be interpreted as negative offsets. This
is not a problem because uvm_io() does all the range checks.
2004-06-22 02:06:55 +00:00
hannken 7a5be5a9ff - Add flag L_COWINPROGRESS to struct lwp to avoid recursion when
doing copy-on-write.

- Change VFS_SNAPSHOT() to return the snapshot vnode locked.

- Make the IO path for copy-on-write and snapshot-read more lightweight.
  Avoids deadlocks where vn_rdwr(...READ...) has a shared lock and needs
  to copy-on-write.
  Avoids deadlocks/panics where to clean pages the copy-on-write needs
  to allocate pages for its VOP_PUTPAGES().

L_COWINPROGRESS part approved by: Jason R. Thorpe <thorpej@netbsd.org>
2004-06-20 18:55:58 +00:00
thorpej 3183ea47c2 When initializing the buffer cache memory pools where the size <= PAGE_SIZE,
also use the standard allocator on systems that use a direct-mapped memory
segment for mapping pool pages.
2004-06-20 18:29:47 +00:00
thorpej 3cd310ba0f Remove PR_IMMEDRELEASE, since setting the high water mark will achieve
the same thing.

Pointed out back in January by YAMAMOTO Takashi.
2004-06-20 18:19:27 +00:00
thorpej bbbb3183d6 Don't use PR_IMMEDRELEASE on buffer cache pools. Instead, set a high
water mark of 1, which will have the same effect.

Pointed out back in January by YAMAMOTO Takashi.
2004-06-20 18:17:09 +00:00
fredb c6f9967d69 Introduce a variable "cc" to hold the cpu counter delta, rather than
overloading "usec". The counter isn't counting micro-seconds, and using
the same variable to mean two different things is false economy: with
this change, the compiled object is 72 bytes smaller on i386, and the
code is easier to understand, to boot.
2004-06-19 20:02:38 +00:00
yamt 8a2c13021f cache_lookup: avoid to grab two vnode's v_interlock.
just hold a reference (usecount) to a vnode instead.
2004-06-19 18:49:47 +00:00
fredb e89e654031 Fix a typo in the comments. 2004-06-19 18:12:55 +00:00
yamt 79dd9743cd getcleanvnode: fix spurious ENFILE.
try vnode_hold_list if none of vnodes on vnode_free_list are re-usable.
2004-06-19 06:20:02 +00:00
christos c22e4ed8cd ptm is now mandatory, depends on pty, and can be disabled with -DNO_DEV_PTM 2004-06-18 15:02:29 +00:00
yamt b3384c452e getcleanvnode: don't try to reclaim a vnode marked as VXLOCK.
fix crashes with VOP_RECLAIM implementations which might block.
(eg. layered filesystems)
2004-06-16 12:35:51 +00:00
yamt a0d352ca6d getcleanvnode: add a comment on a VLAYER hack. 2004-06-16 12:32:51 +00:00
jonathan d907e82ddc Fix potential memory leak in sbappendaddrchain():
We do an MGETHDR)() for each mbuf "packet" of the input chain, to hold
the socket address prepended to that "packet".  If those MGETHDR()s
ever failed, we would leak all the successfully-allocated mbuf
headers.  Leak noted by Yamamoto-san (yamt@NetBSD.org); thanks for catching it!

Add socketbuf invariant-checking macros to sbappendaddrchain(), and
replace a stray bcopy() with memcpy(), also as suggested by Yamamoto-san.
2004-06-11 03:46:01 +00:00
he 32381a5299 PAGE_SIZE is apparently not a constant on the sparc port, so don't
use it in a static initializer.  Instead, initialize in signal_init().
2004-06-08 19:35:30 +00:00
lha a9970d44c9 Return directly when pty_alloc_master failes in ptmioctl,
bug-report on current users from Denis Lagno  dlagno at smtp dot ru.
Make debug message in pty_alloc_master to match the code.
2004-06-05 11:23:15 +00:00
skrll b00b102b41 Allow for struct sigacts being greater than PAGE_SIZE on sun2. sun2
-current kernels now work again.

Reviewed by Matt Thomas. Thanks.
2004-06-04 12:23:50 +00:00
nathanw 956448b619 Initialize simple_lock in struct cwd; otherwise, one gets an
uninitialized lock panic at the first use of cwdshare().
2004-06-03 20:35:30 +00:00
pk 69211c6484 cwdfree() signature has been changed to accomodate fine-grained locking. 2004-05-31 15:33:38 +00:00
pk 2560fefc23 Implement mutexes for file descriptor and current working directory access.
Fix a potential race condition when reallocating storage for file descriptors
(even for non-SMP kernels).
Add missing locks for `struct file' ref count updates.
2004-05-31 15:30:55 +00:00
yamt 2fd3d08b3d lockmgr: add a comment about LK_RETRY. 2004-05-31 09:05:10 +00:00
yamt bd2a784b57 vn_lock: add an assertion about usecount. 2004-05-31 09:02:51 +00:00
yamt 59ba83d898 lockmgr: assert that LK_RETRY is not specified. 2004-05-30 20:49:04 +00:00
yamt c2f93eb91f vn_lock: don't pass LK_RETRY to VOP_LOCK. 2004-05-30 20:48:04 +00:00
jonathan d25d3eb263 Rework to make FAST_IPSEC PF_KEY dumps unicast and reliable:
Introduce new socket-layer function sbappendaddrchain() to
sys/kern/uipc_socket2.c: like sbappendaddr(), only takes a chain of
records and appends the entire chain in one pass. sbappendaddrchain()
also takes an `sbprio' argument, which indicates the caller requires
special `reliable' handling of the socket-buffer.  `sbprio' is
described in sys/sys/socketvar.h, although (for now) the different
levels are not yet implemented.

Rework sys/netipsec/key.c PF_KEY DUMP responses to build a chain of
mbuf records, one record per dump response. Unicast the entire chain
to the requestor, with all-or-none semantics.

Changed files;
 	sys/socketvar.h kern/uipc_socket2.c netipsec/key.c
Reviewed by:
	Jason Thorpe, Thor Lancelot Simon, post to tech-kern.

Todo: request pullup to 2.0 branch.  Post-2.0, rework sysctl() API for
dumps to use new record-chain constructors. Actually implement
the distinct service levels in sbappendaddrchain() so we can use them
to make PF_KEY ACQUIRE messages more reliable.
2004-05-27 19:19:00 +00:00
yamt a08da7645d regen. 2004-05-27 12:50:35 +00:00
yamt 9ae9b45731 update to match with the recent reality: getpages doesn't care about
vnode locks.
2004-05-27 12:49:09 +00:00
christos 3d4ca09443 turn off debugging. 2004-05-27 03:56:49 +00:00
christos 917cdbbd9e Unix 98 pty multiplexor device; original code from OpenBSD. 2004-05-27 02:56:38 +00:00
christos 19c4641ff8 (off_t)(long) is wrong when it comes to kernel addresses [because on a 32 bit
machine if the high bit is set they turn negative]. Make an intermediate cast
to unsigned long.
2004-05-26 16:28:05 +00:00
hannken 8c21bc6224 Add ffs internal snapshots. Written by Marshall Kirk McKusick for FreeBSD.
- Not enabled by default. Needs kernel option FFS_SNAPSHOT.
- Change parameters of ffs_blkfree.
- Let the copy-on-write functions return an error so spec_strategy
    may fail if the copy-on-write fails.
- Change genfs_*lock*() to use vp->v_vnlock instead of &vp->v_lock.
- Add flag B_METAONLY to VOP_BALLOC to return indirect block buffer.
- Add a function ffs_checkfreefile needed for snapshot creation.
- Add special handling of snapshot files:
    Snapshots may not be opened for writing and the attributes are read-only.
    Use the mtime as the time this snapshot was taken.
    Deny mtime updates for snapshot files.
- Add function transferlockers to transfer any waiting processes from
  one lock to another.
- Add vfsop VFS_SNAPSHOT to take a snapshot and make it accessible through
  a vnode.
- Add snapshot support to ls, fsck_ffs and dump.

Welcome to 2.0F.

Approved by: Jason R. Thorpe <thorpej@netbsd.org>
2004-05-25 14:54:55 +00:00
atatat 53c625655c Sysctl descriptions under vfs subtree 2004-05-25 04:44:43 +00:00
atatat 4de3747b89 Sysctl descriptions under net subtree (net.key not done) 2004-05-25 04:33:59 +00:00
atatat 5b22e79ada Remaining sysctl descriptions under kern subtree 2004-05-25 04:30:32 +00:00
jonathan 230fb9b8ab Eliminate several uses of `curproc' from the socket-layer code and from NFS.
Add a new explicit `struct proc *p' argument to socreate(), sosend().
Use that argument instead of curproc. Follow-on changes to pass that
argument to socreate(), sosend(), and (*so->so_send)() calls.
These changes reviewed and independently recoded  by Matt Thomas.

Changes to soreceive() and (*dom->dom_exernalize() from Matt Thomas:
pass soreceive()'s struct uio* uio->uio_procp to unp_externalize().
Eliminate curproc from unp_externalize.   Also, now soreceive() uses
its uio->uio_procp value, pass that same value downward to
((pr->pru_usrreq)() calls for consistency, instead of (struct proc * )0.

Similar changes in sys/nfs to eliminate (most) uses of curproc,
either via the req-> r_procp field of a struct nfsreq *req argument,
or by passing down new explicit struct proc * arguments.

Reviewed by: Matt Thomas, posted to tech-kern.
NB: The (*pr->pru_usrreq)() change should be tested on more (all!) protocols.
2004-05-22 22:52:13 +00:00
atatat dcf1a79f46 Add a DIAGNOSTIC check to detect un-initialized pools. 2004-05-20 05:08:29 +00:00
nathanw 78c16ce8ed Adjust code that tries to prevent cc_microtime() from going backwards
so that it doesn't fire when called twice in the same microsecond,
which can lead to large error accumulation.

Appears to fix "repeated gettimeofday() goes backwards" on a fast
alpha and i386 box.
2004-05-18 16:09:07 +00:00
yamt efc80878d1 use lockstatus() instead of L_BIGLOCK to check if we're holding a biglock.
fix PR/25595.
2004-05-18 11:59:11 +00:00
yamt b4831906b2 introduce LK_EXCLOTHER for lockstatus().
from FreeBSD, but a little differently.  instead of letting lockstatus()
take an additional thread argument, always use curlwp/curcpu.
2004-05-18 11:55:59 +00:00
ragge ac1e5c0888 Fix connect() "bug": If connect() is interrupted by a signal, the connection
attempt is terminated,  so if a process needs frequent timer interrupts
it can't ever connect() to a machine far away.

Bug found by Erik Lundgren, bugfix (for the same problem) is similar to
the way FreeBSD solved the same problem.

As a side effect, the new connect() behaviour conformes to Posix.
2004-05-18 11:31:49 +00:00
christos d3f7c2a23c Check for bad offsets at the beginning of the functions to save processing.
Idea from OpenBSD.
2004-05-14 16:36:33 +00:00
kleink 71b3883248 KNF previous. 2004-05-13 17:56:14 +00:00
christos 6033f15f86 Disable chgsbsize. It is not MPSAFE 2004-05-13 17:43:11 +00:00
matt 617ba1df60 In proc_representative_lwp, if there is an outstanding trap signal, return
the lwp that had the trap.
2004-05-12 21:10:09 +00:00
yamt 054ed3afcb use callout_schedule() for schedcpu(). 2004-05-12 20:13:58 +00:00
cube 8a0e3b4be1 In sysctl_destroyv, the newly created dnode structure must have its
version set to the correct value to prevent later failure of
sysctl_cvt_in.
2004-05-12 12:21:39 +00:00
kleink 90c0c343b0 Regen from syscalls.master rev. 1.142:
POSIX-2001: Change readlink(2)'s return type from int to ssize_t.
2004-05-10 22:30:41 +00:00
kleink 43b7ae77fa POSIX-2001: Change readlink(2)'s return type from int to ssize_t. 2004-05-10 22:28:23 +00:00
yamt 68b4772ef6 redo the previous (rev.1.58; overwrite a duplicate entry rather than leave it)
differently so that entries entered during we're doing pool_get() are
checked as well.  pointed by Paul Kranenburg on source-changes@.
2004-05-07 12:05:41 +00:00
pk fba1aa540d Provide a mutex for the process limits data structure. 2004-05-06 22:20:30 +00:00
yamt 8d615f3e18 cache_enter: when we found a duplicate entry,
simply overwrite it rather than leaving a stale entry.
2004-05-06 22:02:02 +00:00
yamt f573d83f7a no need to cache_purge() in getnewvnode().
it should be already done by vclean().
2004-05-06 22:01:14 +00:00
atatat 778eadaf46 Add a printf() to the other case in sysctl_createv() where a node did
not get attached for what should be an extremely unusual case.
2004-05-06 07:06:46 +00:00
pk b2260877bf proc_reparent() must be called with proclist write lock held. Make it so. 2004-05-04 21:58:47 +00:00
pk 2fb3dac280 Since a `vmspace' always includes a `vm_map' we can re-use vm_map's
reference count lock to also protect the vmspace's reference count.
2004-05-04 21:33:40 +00:00
pk 3ec3f724be crcopy: no need to lock if we're only reading the structure's reference count. 2004-05-04 21:27:28 +00:00
pk f3f1104ed8 Change sigactsfree() to take a `struct sigacts' pointer, to fit the needs
of exit1 (its only client).
2004-05-04 21:25:47 +00:00
pk d190ac352d exit1: if !BIGLOCK, once the exiting process has been placed on the zombie
list and the proclist lock is released, we shouldn't touch the process
structure anymore, since it may be collected immediately by a waiting
parent.
2004-05-04 21:23:39 +00:00
martin efe61cce0d Fix a comment.
Approved by Andrew Brown.
2004-05-03 13:39:50 +00:00
pk 7d0afa7f41 Add mutex to protect the ucred reference counter. 2004-05-02 12:36:55 +00:00
pk 2834786715 Add a mutex for mount point I/O and wait counters (i.e. the `mnt_wcnt',
`mnt_writeopcountupper' and `mnt_writeopcountlower' members).
2004-05-02 12:21:02 +00:00
pk 5c36071518 cache_enter: concurrent lookups in the same directory may race for a
cache entry. Upon detection, free our tentative entry and return.
2004-05-02 12:00:34 +00:00
pk 1bc2407362 sys_access: use crdup(). 2004-05-02 11:13:29 +00:00
matt d1fcd75db0 Define link_sets start/stop as ptype * const [] since they are in a
readonly section.
2004-05-01 07:16:55 +00:00
matt a029630354 Commons are not allowed in header files. extern them and declare them in
the appropriate .c file.
2004-05-01 06:17:26 +00:00
matt a035030007 Use EVCNT_ATTACH_STATIC 2004-05-01 02:24:38 +00:00
enami a874187808 ANSI'fy the rest of functions. 2004-04-30 07:51:59 +00:00
simonb 01837603b0 Fix "comments within comments" problem pointed out by Geoff Wing on
source-changes.
2004-04-27 05:25:33 +00:00
kleink 3925dc263a Regen from syscalls.master 1.141: [gs]ettimeofday(2) argument declaration
change.
2004-04-27 01:15:38 +00:00
kleink 681b62c2ce POSIX-2001: Add restrict keywords to gettimeofday(2) and setitimer(2);
further deprecate struct timezone usage by changing `tzp' argument to
gettimeofday() to void *; align utimes(2) declaration by changing `times`
argument from struct timeval * to struct timeval[2].  From Murray
Armfield in PR standards/25331.

In due curse, reflect these changes in futimes(2), lutimes(2), and
settimeofday(2).
2004-04-27 01:12:44 +00:00
kleink 679cb3e5a5 Regen from rev. 1.140:
POSIX-2001: Change the `who' argument to [gs]etpriority(2) from int
to id_t.  Partially addressing PR standards/25216 from Murray Armfield.
2004-04-25 22:21:17 +00:00
kleink 3e7f30c118 POSIX-2001: Change the `who' argument to [gs]etpriority(2) from int
to id_t.  Partially addressing PR standards/25216 from Murray Armfield.
2004-04-25 22:18:08 +00:00
simonb b5d0e6bf06 Initialise (most) pools from a link set instead of explicit calls
to pool_init.  Untouched pools are ones that either in arch-specific
code, or aren't initialiased during initial system startup.

 Convert struct session, ucred and lockf to pools.
2004-04-25 16:42:40 +00:00
yamt ab195ed32f bio_doread: vp is always non-NULL here. 2004-04-25 12:41:12 +00:00
matt f86644a808 Constify the table argument to ttspeedtab. 2004-04-25 06:13:38 +00:00
atatat 3f800573aa Be consistent about using sysc_init_field() 2004-04-25 05:54:38 +00:00
atatat 990f278f7a Remove dynamic sysctl node version 0 from the tree. It seemed okay at
first, but quickly showed its shortcomings.  The version 1 node we're
now using should be good for a while.
2004-04-25 05:47:52 +00:00
simonb 9bc855a931 s/the the/the/ (only in sources that aren't regularly imported from
elsewhere).
2004-04-23 02:58:27 +00:00
yamt 05076bfbb9 chgsbsize: correct limit check and ui_sbsize calculation.
ok'ed by Christos Zoulas.
2004-04-23 02:13:29 +00:00
enami 45a4841ce9 Copy fsidx so that not to break binary compatibility of mountd etc. 2004-04-22 03:47:58 +00:00
matt e50668c7fa Constify protosw arrays. This can reduce the kernel .data section by
over 4K (if all the network protocols) are loaded.
2004-04-22 01:01:40 +00:00
matt fde909e1a1 Add prototype for uiomove_frombuf. Change uiomove_frombuf to use size_t
for its length argument (to be the same as uiomove).  Remove code that
dealt with length being negative.
2004-04-21 20:31:50 +00:00
itojun d2f1c029b9 kill sprintf, use snprintf 2004-04-21 18:40:37 +00:00
christos 6bd1d6d4db Replace the statfs() family of system calls with statvfs().
Retain binary compatibility.
2004-04-21 01:05:31 +00:00
christos ed95f3e980 Charge root for socket buffers without a socket pointer. 2004-04-19 03:44:46 +00:00
lukem fad77af2ac Add "vfs.generic.fstypes" sysctl, which contains a space separate
list of file system types currently supported by the kernel.
Previously there wasn't an easy way to determine this.
(Code shamelessly cribbed from subr_disk.c::sysctl_hw_disknames().)

Use LIST_FOREACH() appropriately.
2004-04-19 00:15:55 +00:00
matt ac57eb9d5b Constify sun_noname. 2004-04-18 22:20:32 +00:00
matt 70e1f0d3ac ANSI'fy. 2004-04-18 21:48:15 +00:00
matt 91bb3497f5 Constify the addr parameter to sbappenaddr. 2004-04-18 21:47:11 +00:00
matt 8f23e3baa1 sbreserve can be called with a NULL socket, deal with it. 2004-04-18 16:38:42 +00:00
christos f13a3d0852 PR/9347: Eric E. Fair: socket buffer pool exhaustion leads to system deadlock
and unkillable processes.
1. Introduce new SBSIZE resource limit from FreeBSD to limit socket buffer
   size resource.
2. make sokvareserve interruptible, so processes ltsleeping on it can be
   killed.
2004-04-17 15:15:29 +00:00
atatat 904ca21614 Prefer that kern.hostid is printed in hex, not as a signed decimal,
and avoid accidental sign-extension when setting it.
2004-04-16 13:25:40 +00:00
pk f663e2397e checkalias: pass LK_NOWAIT to vget() while holding the spechash spinlock. 2004-04-16 09:59:32 +00:00
provos 2e7c8ca97f check process flags, noted by Stefan Esser 2004-04-09 16:49:33 +00:00
atatat 3a5915c0ae Lots of sysctl descriptions (if someone wants to help out here, that
would be good) mostly copied from sysctl(3).  This takes care of the
top-level, most of kern.* and hw.* (modulo the ath and bge stuff), and
all of proc.*.

If you don't want the added rodata in your kernel, use "options
SYSCTL_NO_DESCR" in your kernel config.
2004-04-08 06:20:29 +00:00
atatat a70c39ff35 Clear out the struct kinfo_drivers before stuffing things into it.
Avoids leaking garbage from the stack (left over from the earlier
call to sysctl_locate()).
2004-04-08 03:35:10 +00:00
atatat 275e2ae7f3 First caller to set a description on a node sets it. This allows one
setup function to set the description, even if the node has been
instantiated elsewhere.  Or not, depending on the other that the setup
functions are called.
2004-04-06 18:52:35 +00:00
yamt 4972de4cca make cache_purge more controlable.
namely, allow following operations.
	- purge only an entry specified by a component name.
	- purge only child entries.
	- purge only parent entries.
no objections on tech-kern@.
2004-04-05 10:20:52 +00:00
yamt 9aa8d354bd add assertions related to file descriptor allocation. 2004-04-05 10:10:29 +00:00
pk b3efee4b3b We use maxdmap and maxsmap, so remove comment questioning that. 2004-04-04 18:22:44 +00:00
matt 4dfb2be423 When a process is being traced (debugged) and a catchable signal arrives,
make sure to save its ksiginfo_t for eventual delivery.  This makes debugging
SA_SIGINFO signal handlers work.
2004-04-03 19:46:10 +00:00
matt dfe066e777 Add the notion of an "empty" ksiginfo_t (one where on signo is filled in).
Add an initializer for them: KSI_INIT_EMPTY
Add a predicate for them: KSI_EMPTY_P
Don't bother storing empty ksiginfo_t's since they have no information.
Change uses of KSI_INIT to KSI_INIT_EMPTY where no other information other
than the signo is being filled in.
2004-04-03 19:43:08 +00:00
matt 11d24b6c29 Replace memset's of ksiginfo_t with KSI_INIT (which is the proper way to
initialize ksiginfo_t structures).
2004-04-03 19:38:04 +00:00
matt 44708bbf1a If a signal is the result of trap, only invoke a supplied handler if it's
not blocked.  Otherwise (it if it blocked or the hanlder is set to SIG_IGN)
reset the signal back to its default settings so that a coredump can be
generated.
2004-04-01 16:56:44 +00:00
atatat f06d00c1a8 Add the standard "is this tree writeable" check to sysctl_describe()
and a comment to sysctl_destroy() about why the check is slightly
different there.
2004-04-01 04:50:06 +00:00
yamt f74afe6463 ras_fork: don't do PR_WAITOK holding a spinlock. 2004-04-01 02:37:42 +00:00
yamt b27349c286 ras_install: don't do pool_get(PR_WAITOK) while we're holding a spinlock. 2004-04-01 01:49:04 +00:00
matt b173c9d332 Make kernel continuations optional for now. 2004-03-28 22:43:56 +00:00
atatat d97889de23 Fix sysctl_createv() so that rnode and cnode can refer to the same
pointer.  Fix sysctl_create() so that nodes cannot be added to an
alias node.
2004-03-27 04:26:23 +00:00
petrov 2edf945c23 sys_sa_yield returns EJUSTRETURN. 2004-03-27 00:49:47 +00:00
jonathan 63fe9ef057 Use proper NetBSD conventions for deferred kthread creation, not the
other semantics from an earlier incarnation.

Call kcont_init() from init_main before device autoconfiguration,
so kcont is availble to device drivers if required.

Also ensure the kthread process runs any pending continuations once
the kthread is finally up and running. For now, use a non-null timeout
to poll the queue periodically.  Draining any pending requests just
before the kthread enters its ltsleep()/kc_run loop is cleaner, but
this is the version I tested with an early-in-boot kcont request.)
2004-03-27 00:42:38 +00:00
drochner 945c30f4ab all ports define __HAVE_SIGINFO now, so remove the CPP conditionals 2004-03-26 17:13:37 +00:00
drochner 4f4ec7e627 regen after __HAVE_SIGINFO removal 2004-03-26 15:29:28 +00:00
drochner 9fd8e8983b all ports define __HAVE_SIGINFO now, so remove the CPP conditionals 2004-03-26 15:18:54 +00:00
simonb 1c13fd358f Give buf_lotsfree() a bit of a service:
- Fix a 32-bit overflow that could erroneously return true even if the
  currently allocated buffer memory was greater than the high water mark.
- Add an early check for bufmem > hiwater to avoid a needless call to
  random().
- Sprinkle some comments.

Add a vm.bufmem sysctl so the current bufmem value can be easily queried
from userland.

Reviewed by Thor Simon.
2004-03-26 00:31:55 +00:00
simonb 07056cd3d1 More white space nits. 2004-03-25 23:17:16 +00:00
enami c4a655ef80 Misc. style fix; white-space usage, comment style, ansify, multiple
include protection, rcsid, typo, ...
2004-03-25 23:02:58 +00:00
atatat 76f167c40b Set version in node destroy request 2004-03-25 22:16:04 +00:00
pooka 845a217e15 Convert pool_get()'s from nowait to waitok. We're allowed to block,
and this is more acceptable since the code assumes success.

gmcgarry ok
2004-03-25 22:08:33 +00:00
atatat 44afe14cb6 Unwind the nested designators for fields within structs within structs
(or unions).  This should really be put back once we're all using gcc3
for everything, since that makes it look a *lot* cleaner.
2004-03-25 18:36:49 +00:00
drochner bcb7a96b95 In exec_sigcode_map(), do nothing if the sigcode is of
size 0.
This way, individual ports can circumvent sigcode mapping
by setting sigcode/esigcode.
(would be better to clean up the __HAVE_SIGINFO/COMPAT_XX
stuff, but it is not a good moment now)
2004-03-25 18:29:24 +00:00
simonb c67d420cbf White-space nit. 2004-03-25 08:22:31 +00:00
pooka 8a7ed44002 * replace incorrect M_WAITOK flag from pool_get() by proper PR_WAITOK
and remove redundant check for NULL return value
* switch pool page allocator to nointr allocator

jdolecek sayeth ok
2004-03-24 20:25:28 +00:00
atatat 38c4183b04 Implement sysctl descriptions. Now all that remains is actually to
write them.
2004-03-24 18:11:09 +00:00
atatat 5aab77f087 Framework for sysctl descriptions. Implementation to follow shortly. 2004-03-24 17:40:02 +00:00
atatat c6abd47f96 New node version and layout. This should take care of the netbsd32
emulation problem, formalizes the versioning (should it ever be needed
again), and provides a slot for descriptions.
2004-03-24 17:21:02 +00:00
atatat 289b641ef9 Implement sysctllog and sysctl_teardown(), which unwinds the log. 2004-03-24 16:55:49 +00:00
atatat d42aae36c0 The new sysctl query interface returns the same information as the old
one, but you must pass in an empty node that indicates the version
you're using.
2004-03-24 16:34:34 +00:00
atatat 19af35fd0d Tango on sysctl_createv() and flags. The flags have all been renamed,
and sysctl_createv() now uses more arguments.
2004-03-24 15:34:46 +00:00
atatat 70057f1d4e That copystr() should be copyinstr(), and fix a couple of places where
aliasing needs to be avoided.
2004-03-24 15:25:43 +00:00
pooka cca4b8c09d tyop in comment 2004-03-24 10:01:46 +00:00
matt 3549b49655 Don't use malloc/free for fixed sized items, use a pool instead. 2004-03-24 01:27:57 +00:00
junyoung fdc32973e7 - Nuke __P().
- Drop trailing spaces.
2004-03-23 13:22:32 +00:00
junyoung a222c81884 Nuke __P(). 2004-03-23 13:22:03 +00:00
cl d636a8b9cb On MP, exit postsig() when another LWP has already handled the signal while
this LWP was waiting for the kernel lock.

Fixes PR kern/24829
2004-03-21 18:41:38 +00:00
mycroft 9f9d44127e Remove part of a very old change that caused NFS to not enforce socket buffer
limits.  No idea why it was done in the first place.

Don't remember who reported this, but I think it was yamt.
2004-03-21 00:54:46 +00:00
he cbeffeb007 Make this compile on platforms which do not define
__HAVE_GENERIC_SOFT_INTERRUPTS, such as sun3.
2004-03-20 18:34:57 +00:00
martin c72dda16a9 Include <lib/libkern/libkern.h> for KASSERT. 2004-03-20 10:39:21 +00:00
snj 089c0cfc10 Fix typos. 2004-03-20 02:57:34 +00:00
jonathan ec8cb83cd3 Initial import of kcont(9), as posted to tech-kern for discussion in
January 2004. This version also incorporates fixes (several typos and
other detailed improvemnts) commented upon by Nathan J Williams.
2004-03-20 02:22:49 +00:00
enami 55c19744c4 - remove unnecessary code.
- factor out common code.
- don't stop searching before the target.
- touch the correct object.
- validate the argument before the loop otherwise we need to roll back.
2004-03-18 22:57:38 +00:00
enami a67d24818d Whitespace nits and wrap some lines. 2004-03-18 22:53:16 +00:00
christos b4d69b5716 PR/24814: Colin Percival: sysv_sem waiter counting problem 2004-03-18 01:16:44 +00:00
yamt 639cdf812b sokvaalloc: unreserve kva if uvm_km_valloc_wait failed. 2004-03-17 10:30:18 +00:00
yamt 82b343cc81 - move kern.somaxkva sysctl stuff from init_sysctl.c to uipc_socket.c.
- when changing its value, wakeup sokva waiters.
2004-03-17 10:21:59 +00:00
yamt 097a3aea2e - fix locking of sosend kva allocation.
- some comments.
2004-03-17 10:03:26 +00:00
yamt 2429c10607 remove per-socket pendfree list. 2004-03-17 09:58:15 +00:00
cl ea5ec0212d add kernel part of concurrency support for SA on MP systems
- move per VP data into struct sadata_vp referenced from l->l_savp
  * VP id
  * lock on VP data
  * LWP on VP
  * recently blocked LWP on VP
  * queue of LWPs woken which ran on this VP before sleep
  * faultaddr
  * LWP cache for upcalls
  * upcall queue
- add current concurrency and requested concurrency variables
- make process exit run LWP on all VPs
- make signal delivery consider all VPs
- make timer events consider all VPs
- add sa_newsavp to allocate new sadata_vp structure
- add sa_increaseconcurrency to prepare new VP
- make sys_sa_setconcurrency request new VP or wakeup idle VP
- make sa_yield lower current concurrency
- set sa_cpu = VP id in upcalls
- maintain cached LWPs per VP
2004-03-14 01:08:47 +00:00
cl f1bacc8b38 disable SA upcalls during "systrmsg" sleep
-> improves problem from PR bin/23429
2004-03-14 00:48:58 +00:00
cl 63fe298156 regen after:
g/c sys_sa_unblockyield which has been unused since 2004/01/02
2004-03-14 00:47:25 +00:00
cl 919b9e33c4 g/c sys_sa_unblockyield which has been unused since 2004/01/02 2004-03-14 00:45:21 +00:00
matt 879040549d Only do the pmap_procwr if the uvm_io succeeded. 2004-03-13 18:43:18 +00:00
christos 7bd0e983e2 PR/24750: Frank Kardel: panic when process is signalled during
proc initialization.
2004-03-11 22:34:26 +00:00
christos cde926b610 PR/24745: Jared Momose: kernel prompts for a root device when using md_root 2004-03-11 15:17:55 +00:00
yamt f75335b469 - add a function prototype.
- consitify.
2004-03-09 12:23:07 +00:00
yamt cd9b5b72f5 m_cat: assert mbuf types only when coalescing them by copying.
mbuf n often have 0-sized "headers" and their types don't matter much.

PR/24713 from Darrin B. Jewell.
2004-03-09 06:37:59 +00:00
dbj 7a30c4a987 add more spltty() calls around TTY_LOCK/UNLOCK where needed 2004-03-09 05:30:24 +00:00
junyoung 70706199eb Whitespaces. 2004-03-09 02:35:45 +00:00
dbj 436daafe7e add splvm() around a few pa_slock and psppool calls since they
may be shared with pools that can be used in interrupt context.
2004-03-08 22:48:09 +00:00
atatat 73c41a46cc Some optimization for sysctl_locate() 2004-03-08 03:31:26 +00:00
junyoung 0f89803028 Drop trailing spaces. 2004-03-05 11:30:50 +00:00
junyoung 103afd6ebf lwp_exit2(): set lwp state to SZOMB at more appropriate point. 2004-03-05 11:17:41 +00:00
dbj f8e0478668 add some spltty() calls around TTY_LOCK() calls that didn't have them 2004-03-05 07:27:22 +00:00
matt 1b4f540b78 Look at _UC_STACK to decide whether the process' SS_ONSTACK state needs to
be updated.  (This is needed to be compatible with how pre-SIGINFO signals
operated.  If you siglongjmp out of a signal handler, the SS_ONSTACK state
needs to be cleared.  This commit restores that functionality).
2004-03-04 00:05:58 +00:00
dsl 1288fac2ba No need to initialise [rw]pipe twice.
Initialise locks before trying to allocate pipe buffer, when allocate
fails we'll not explode trying to acquire the locks when tidying up.
2004-03-03 22:00:34 +00:00
christos 08230af71c initialize rpipe and wpipe to NULL, so that they are initialized in the
error path.
2004-03-03 21:35:52 +00:00
yamt 471ef5f249 once exit1() releases big kernel lock, the struct proc can be freed and
re-used by another cpu immediately.  in that case, lwp_exit2() will
access freed memory.  to fix this:

- remove curlwp from p_lwps in exit1() rather than letting lwp_exit2() do so.
- add assertions to ensure freed proc has no lwps.

kern/24329 from me and kern/24574 from Havard Eidnes.
2004-03-02 09:15:26 +00:00
yamt 395e9958f2 change the way to handle NEW_BUFQ_STRATEGY option.
instead of putting #ifdefs into each drivers,
use a global variable to indicate default strategy.

XXX should have a way to specify other strategies.
2004-02-28 06:28:47 +00:00
junyoung d177d4c744 More typos in comments. 2004-02-27 02:43:25 +00:00
junyoung c5a0b24bb5 pgrpdump() is gone. 2004-02-26 11:29:41 +00:00
junyoung 213495299b - Fix typos.
- De-__P().
- Remove trailing spaces.
2004-02-26 11:20:08 +00:00
jdolecek 52197d307a pipelock() must release the pipe simplelock during tsleep()
fixes PR kern/24551 by Havard Eidnes
2004-02-26 08:15:31 +00:00
itojun efcd57f822 m_cat() - if it is safe, copy data portion into 1st mbuf even if 1st mbuf
is M_EXT mbuf.
2004-02-26 02:30:04 +00:00
enami dab2cb5bb0 Whitespace nits. 2004-02-25 21:40:40 +00:00
enami f7b4bb80a5 Make ktrwrite() and ktrinitheader() private again. ktrsyscall32() no longer
exists.
2004-02-25 21:34:18 +00:00
dbj 5fd36718ae fix typo in comment s/MNT_LAXY/MNT_LAZY/ 2004-02-25 04:10:28 +00:00
christos 7088db9a48 remove error(1) comment. 2004-02-24 20:57:26 +00:00
wiz f05e6f1a3a occured -> occurred. From Peter Postma. 2004-02-24 15:12:51 +00:00
jdolecek 4d49760268 use the new NOTE_SUBMIT to flag if the locking is necessary
for EVFILT_READ/EVFILT_WRITE knotes

fixes PR kern/23915 by Martin Husemann (pipes), and similar locking problem
in tty code
2004-02-22 17:51:25 +00:00
jdolecek 2ae728e7ef mount(2): if vinvalbuf() fails, we must also vput() the mountpoint vnode
fixes stale vnode lock after attempt to mount something on a NTFS directory
2004-02-22 09:56:26 +00:00
dan 5819919614 micro-optimisation - if we're going to return 0, do so before doing
other unnecessary work
2004-02-22 01:00:41 +00:00
enami 06107df871 Modify pool page header allocation strategy as follows:
In addition to current one (i.e., don't wast so large part of the page),
- if the header fitsin the page without wasting any items, put it there.
- don't put the header in the page if it may consume rather big item.

For example, on i386, header is now allocated in the page for the pools
like fdescpl or sigapl, and allocated off the page for the pools like
buf1k or buf2k.
2004-02-22 00:19:48 +00:00
atatat 56392ab40b Use KERN_PROCSLOP for struct kinfo_proc and KERN_LWPSLOP for
struct kinfo_lwp, and not vice versa.

Should solve the issue with top dying because it's unable to "allocate
memory".
2004-02-21 03:27:57 +00:00
atatat 42d379d041 Use new PTRTOUINT64() macro instead of local PTRTOINT64() macro. 2004-02-19 03:57:56 +00:00
atatat caea20e952 Add PTRTOUINT64() and UINT64TOPTR() macros to sys/sysctl.h for use by
kern.proc, kern.proc2, kern.lwp, and kern.buf.

Define more MIB for kern.buf so that specific buffers can be selected
(only all/all is supported right now), and use a 32/64 bit agnostic
structure for communcating buffer information to userland.

Convert systat to the new kern.buf method.

Clean up the vm.buf* handling a little.  There's no actual need to
record the dynamically assigned OIDs, since sysctl_data can tell us
what we're looking at.

Oh, and fix a typo in a comment.
2004-02-19 03:56:30 +00:00
matt cb57c6f8e9 Move detection of a special symbol into a separate function. Add some more
special symbols.
2004-02-19 03:42:01 +00:00
matt f01501b2c6 Support really large LKMs. Find out how much space is needed for symbols
and then allocate it on demand.  Rename some common symbols (__bss_start,
_edata, _end, __start_link_set_*, __stop_link_set_*) so that ".<module>"
is appended to them.  This shrinks an amd64 kernel by 20KB of BSS.
2004-02-18 23:44:49 +00:00
matt 004f0d503a s/sumbols/symbols/ 2004-02-18 20:41:09 +00:00
hannken c59d4851b8 Run pmap_deactivate() earlier in exit1(). Prevents a panic on sparc MP
where p->p_vmspace was 0xdeadbeef in pmap_deactivate().

Approved by: YAMAMOTO Takashi <yamt@netbsd.org>
2004-02-18 14:42:20 +00:00
simonb d7ee872c5f Don't shadow a function name with a parameter. 2004-02-17 11:36:01 +00:00
tron 7008209ace Include "sys/systm.h" to get the prototype for panic() which is required
for diagnostic kernels.
2004-02-17 08:22:12 +00:00