Commit Graph

1547 Commits

Author SHA1 Message Date
jdolecek
089abdad44 Rearrange process exit path to avoid need to free resources from different
process context ('reaper').

From within the exiting process context:
* deactivate pmap and free vmspace while we can still block
* introduce MD cpu_lwp_free() - this cleans all MD-specific context (such
  as FPU state), and is the last potentially blocking operation;
  all of cpu_wait(), and most of cpu_exit(), is now folded into cpu_lwp_free()
* process is now immediatelly marked as zombie and made available for pickup
  by parent; the remaining last lwp continues the exit as fully detached
* MI (rather than MD) code bumps uvmexp.swtch, cpu_exit() is now same
  for both 'process' and 'lwp' exit

uvm_lwp_exit() is modified to never block; the u-area memory is now
always just linked to the list of available u-areas. Introduce (blocking)
uvm_uarea_drain(), which is called to release the excessive u-area memory;
this is called by parent within wait4(), or by pagedaemon on memory shortage.
uvm_uarea_free() is now private function within uvm_glue.c.

MD process/lwp exit code now always calls lwp_exit2() immediatelly after
switching away from the exiting lwp.

g/c now unneeded routines and variables, including the reaper kernel thread
2004-01-04 11:33:29 +00:00
simonb
9c7cfca904 ANSIfy, KNF. 2003-12-31 02:40:26 +00:00
pk
70f20a1217 Replace the traditional buffer memory management -- based on fixed per buffer
virtual memory reservation and a private pool of memory pages -- by a scheme
based on memory pools.

This allows better utilization of memory because buffers can now be allocated
with a granularity finer than the system's native page size (useful for
filesystems with e.g. 1k or 2k fragment sizes).  It also avoids fragmentation
of virtual to physical memory mappings (due to the former fixed virtual
address reservation) resulting in better utilization of MMU resources on some
platforms.  Finally, the scheme is more flexible by allowing run-time decisions
on the amount of memory to be used for buffers.

On the other hand, the effectiveness of the LRU queue for buffer recycling
may be somewhat reduced compared to the traditional method since, due to the
nature of the pool based memory allocation, the actual least recently used
buffer may release its memory to a pool different from the one needed by a
newly allocated buffer. However, this effect will kick in only if the
system is under memory pressure.
2003-12-30 12:33:13 +00:00
nisimura
eef6d5b9ab Vr4100 and Vr4300 are not capable of having external caches. 2003-12-21 07:59:25 +00:00
simonb
210a9530eb Use UART_SIZE instead of a (redefined) COM_NPORTS. 2003-12-15 09:13:41 +00:00
sekiya
c0996cb32c Remove preprocessor conditional MIPS3_L2CACHE_ABSENT, which was rendered
superfluous by Tsutsui-san's previous changes.

(this change differs slightly from that posted to port-mips@, as
mips_flushcache_allpvh should be compiled iff MIPS3_PLUS is defined and
MIPS3_L2CACHE_ABSENT should be removed from files.mips as well)
2003-12-12 14:55:58 +00:00
simonb
c26ed27f0c Only compile in sysctl_machdep_booted_kernel() if __HAVE_BOOTINFO_H
is defined.
2003-12-06 15:20:04 +00:00
atatat
13f8d2ce5f Dynamic sysctl.
Gone are the old kern_sysctl(), cpu_sysctl(), hw_sysctl(),
vfs_sysctl(), etc, routines, along with sysctl_int() et al.  Now all
nodes are registered with the tree, and nodes can be added (or
removed) easily, and I/O to and from the tree is handled generically.

Since the nodes are registered with the tree, the mapping from name to
number (and back again) can now be discovered, instead of having to be
hard coded.  Adding new nodes to the tree is likewise much simpler --
the new infrastructure handles almost all the work for simple types,
and just about anything else can be done with a small helper function.

All existing nodes are where they were before (numerically speaking),
so all existing consumers of sysctl information should notice no
difference.

PS - I'm sorry, but there's a distinct lack of documentation at the
moment.  I'm working on sysctl(3/8/9) right now, and I promise to
watch out for buses.
2003-12-04 19:38:21 +00:00
keihan
29c72c57f0 netbsd.org -> NetBSD.org
All "netbsd.org" is now gone from src/sys/arch.
2003-12-04 13:05:15 +00:00
he
ea56bcee84 Hide the register number constants behind an _R_ prefix, and also
rename FPBASE to _FPBASE, so that we avoid polluting the user's
name space when e.g. <sys/ptrace.h> is included.  Previously, the
PC symbol in mips/regnum.h would conflict with the declaration of
the external variable by the same name in termcap.h, as discovered
by the ``okheaders'' regression test.
2003-11-26 08:36:49 +00:00
christos
a21fdf3b43 bye, bye _MCONTEXT_TO_SIGCONTEXT and vice versa. 2003-11-25 23:11:52 +00:00
simonb
4ebec9cd61 Add a define for the size of the UART register block. 2003-11-08 05:49:08 +00:00
simonb
edaec67118 Use the COM_AU1x00 option for Au1x00 feature support. 2003-11-08 05:12:51 +00:00
simonb
52f438d9a8 Sync with com.c, rev 1.222. 2003-11-08 05:10:11 +00:00
simonb
8899101173 Add a "COM_AU1x00" option, similar to COM_PXA2X0, for enabling Au1x00
features in the "com" driver.
2003-11-08 05:05:14 +00:00
simonb
4116da8027 Sync with dev/ic/com.c rev 1.221. 2003-11-07 02:08:35 +00:00
simonb
f3bced434d Try using matching numbers of open and close parentheses to make this
compile again.
2003-11-06 04:17:11 +00:00
dsl
2ffbd2ab99 Remove p_nras from struct proc - use LIST_EMPTY(&p->p_raslist) instead.
Remove p_raslock and rename p_lwplock p_lock (one lock is enough).
Simplify window test when adding a ras and correct test on VM_MAXUSER_ADDRESS.
Avoid unpredictable branch in i386 locore.S
(pad fields left in struct proc to avoid kernel bump)
2003-11-04 10:33:15 +00:00
simonb
20db9285ba Kill trailing blank lines. 2003-11-02 08:29:06 +00:00
christos
38dd4ae2dc Initialize another fp instance 2003-11-02 08:27:41 +00:00
christos
6dba5c3bc3 only assign to fp when we have a valid lwp. Thanks simon 2003-11-02 08:20:48 +00:00
christos
df7d5f4716 Use siginfo_t not ksiginfo_t in the frame. Doh! 2003-11-02 08:20:09 +00:00
tsutsui
fe1d71458c - Flush cache only if mips_sdcache_line_size == 0 in pmap_copy_page() when
options MIPS3_L2CACHE_ABSENT is defined.
- Fix comments following #endif for MIPS3_L2CACHE_ABSENT.
2003-11-01 14:48:16 +00:00
shin
70f5a0a5b2 cache_r10k.c rev. 1.1 is broken. Because,
1) R10k uses VA0 to select cache ways, but in rev. 1.1, VA14
	   is used instead.
	2) R10k does not support HitWriteBack and should map HitWriteBack
	   to HitWriteBackInvalidate, but in rev. 1.1, HitWriteBack is not
	   handled properly.

So, cache_r10k.c rev. 1.1 was replaced by new implementation.
2003-11-01 04:42:56 +00:00
cl
ef56cc40ab Reduce code duplication by adding mi_userret() in sys/userret.h
containing signal posting, kernel-exit handling and sa_upcall processing.

XXX the pc532, sparc, sparc64 and vax ports should have their
XXX userret() code rearranged to use this.
2003-10-31 16:44:34 +00:00
drochner
0622a85590 don't need ELF_INTER_NON_RELOCATABLE anymore if no COMPAT_16, from simonb 2003-10-31 14:06:29 +00:00
simonb
183066a619 Remove some assigned-to but otherwise unused variables. 2003-10-31 03:32:19 +00:00
simonb
6d85c5e0d5 Don't pass the (unused) return value args to the
trace_enter()/systrace_enter() functions.
2003-10-31 03:28:12 +00:00
christos
2c8096f763 set the onstack flag if requested. 2003-10-30 00:26:54 +00:00
simonb
0c6a00f6c6 KNF. 2003-10-30 00:01:47 +00:00
simonb
31d051445b Make this 64-bit paddr_t friendly. 2003-10-29 23:52:22 +00:00
christos
dc307db22e add compat_16_machdep.c 2003-10-29 23:41:49 +00:00
simonb
0bf7a721e9 Add some more MTI CPU ids. 2003-10-29 23:41:10 +00:00
christos
61e4914300 first pass siginfo for mips 2003-10-29 23:40:42 +00:00
christos
8ca558e8ed first pass siginfo glue for mips 2003-10-29 23:39:45 +00:00
simonb
a5ace5a563 Add some more MIPS vendor IDs. 2003-10-29 23:39:16 +00:00
simonb
6836656005 Remove assigned-to but otherwise unused variables. 2003-10-27 02:58:31 +00:00
simonb
8338dcf797 More bogus uninitialised warnings. 2003-10-27 02:16:15 +00:00
simonb
eeb03b3e1b "Fix" bogus gcc3 uninitialised warning. 2003-10-27 01:17:59 +00:00
kleink
a3fabb9e7f Use <sys/ieee754.h> where applicable. 2003-10-26 20:55:30 +00:00
mycroft
b1915c81d6 Oops, in the fpe_trap case, actually leave it storing $a2 in the $a3 stack
slot.  This is a hack.
2003-10-25 22:10:34 +00:00
mycroft
cde8e7d93d Store $a1 (and $a2 in another case) in the correct stack slot. 2003-10-25 22:06:59 +00:00
mycroft
fd8bb946a3 Update for GCC3 (basically, use the __builtin_va_* implementation). 2003-10-25 18:14:48 +00:00
simonb
49a8cd4e3a Rename the "strtc" device to "m41t81rtc" so that it doesn't conflict with
the MI i2c "strtc" device.
XXX: This should use the MI "strtc" device - the M41T81 should be
     compatible enough with the M41ST84 currently supported by that
     driver.
2003-10-25 15:05:00 +00:00
simonb
e93422fa5f Remove "struct aubus_ohci_softc". As well as ohci_softc_t, it only had
a copy of the interrupt cookie which isn't used outside the attach.  We
has also bogusly only told the autoconfiguration machinery that our softc
was as big as a ohci_softc_t, not a struct aubus_ohci_softc.
Also, disestablish the interrupt if OHCI initialisation fails.
2003-10-23 04:58:32 +00:00
tsutsui
bf4d10546f vaddr_t is not pointer, so don't compare it against NULL.
(BTW, should we also fix "NULL" in following printf messages?)
2003-10-21 15:05:56 +00:00
simonb
513b330566 Tell the Alchemy Au1x00 on-chip ohci that we're in big-endian mode if
necessary.
2003-10-18 04:34:30 +00:00
simonb
136dd90b25 Remove unused ohci stub. 2003-10-18 04:31:37 +00:00
simonb
07c9a24e6a One defintion of OP_SYNC should be enough. 2003-10-15 06:46:46 +00:00
tsutsui
c74700fe65 It seems r4k_sdcache_wb_range_NN() function can't handle
R10000 L2 cache (which is 2-way set-associative write-back),
so use r4k_sdcache_wbinv_range_NN() for workaround until someone
implement proper r10k_sdcache_*() ops.

Problem reported by Christopher SEKIYA.
2003-10-11 09:09:15 +00:00