Commit Graph

163 Commits

Author SHA1 Message Date
yamt e8abff70f2 constify pagerops. 2007-12-01 10:40:27 +00:00
dsl 956bff160a Temporarily make 'atomic_add_int()' a non-atomic add so the build suceeds.
At some point the functions will (presumably) make their way into either
libc or libutil.
2007-11-30 21:48:40 +00:00
pooka 21913eabe5 Rototill.
Ok, ok, a few more words about it: stop holding puffs_cc as a holy
value and passing it around to almost every possible place (popquiz:
which kernel variable does this remind you of?).  Instead, pass
the natural choice, puffs_usermount, and fetch puffs_cc via
puffs_cc_getcc() only in routines which actually need it.  This
not only simplifies code, but (thanks to the introduction of
puffs_cc_getcc()) enables constructs which weren't previously sanely
possible, say layering as a curious example.

There's still a little to do on this front, but this was the major
fs interface blast.
2007-11-30 19:02:28 +00:00
pooka 6a3d9a187d Remove "puffs_cid" from the puffs interface following l-removal
from the kernel vfs interfaces.  puffs_cc_getcaller(pcc) can be
used now should the same information be desired.
2007-11-27 11:31:17 +00:00
dogcow 1e02f40f0f fallout from the not-quite-complete curlwp removal.
I'm not sure why I had to monkey about with the includes to get VFS_SYNC to
reappear.
2007-11-27 09:14:21 +00:00
pooka 61e8303e9d Remove the "struct lwp *" argument from all VFS and VOP interfaces.
The general trend is to remove it from all kernel interfaces and
this is a start.  In case the calling lwp is desired, curlwp should
be used.

quick consensus on tech-kern
2007-11-26 19:01:26 +00:00
pooka 5251a48396 support cv_broadcast() 2007-11-19 14:17:22 +00:00
pooka 2632ba6df4 Implement cv_timedwait(), requested by Reinoud. 2007-11-17 20:50:18 +00:00
pooka 8f1126a23d Shield against returning EJUSTRETURN from relookup() 2007-11-14 15:01:46 +00:00
pooka f48aa71ad4 fix build (hi rmind!) 2007-11-11 17:18:47 +00:00
pooka 655af89222 Fix more uninitialized uses of variables.
noticed by lukasz.siemiradzki
2007-11-10 18:03:15 +00:00
pooka f94895de17 Cast void * to intptr_t before casting to int and vice versa.
Fixes 64bit compilation warnings.  reported by moof & wiz
2007-11-08 10:57:19 +00:00
pooka 7e0d71a369 Execute I/O in a separate thread for async I/O where previously
everything was written/read in caller context.

Also, make the "kernel" lock recursive.  It works better that way ...
2007-11-07 18:59:18 +00:00
pooka b1a1a009b6 final splash of ketchup after source update: init/fini mountspecific 2007-11-07 16:31:21 +00:00
pooka 6fd64d7496 implement _kernel_lock{,_unlock}() 2007-11-07 16:24:22 +00:00
pooka a4fdbff490 fix pool cache line alignment code (hi ad) 2007-11-07 16:22:22 +00:00
pooka 55a3e632c4 remove accidentally committed debugging code 2007-11-07 15:51:07 +00:00
pooka eabd71f058 Emulate spls by using pthread rwlocks: splfoo() takes a read lock
and when doing processing in an interrupt (effectively when calling
biodone()), we take the write lock.
2007-11-07 15:41:18 +00:00
pooka ae80a527f0 oops, backout part which wasn't supposed to go in 2007-11-07 12:11:30 +00:00
pooka 0a587be2cb Call buf_syncwait() after releasing a file system. 2007-11-07 12:08:45 +00:00
ad d18c6ca4de Merge from vmlocking:
- pool_cache changes.
- Debugger/procfs locking fixes.
- Other minor changes.
2007-11-07 00:23:13 +00:00
ad 4f48f4962d Define ipl_cookie_t, ipl_t. 2007-11-07 00:20:22 +00:00
pooka 773d31b14b yank out extra debug printf 2007-11-06 15:25:40 +00:00
pooka 210515ea9c Fix locking issues with the anonymous pager too so that tmpfs can work. 2007-11-06 12:57:50 +00:00
pooka 7331777bf0 default to rootnode mode 0777 2007-11-06 12:26:12 +00:00
pooka 78821d0076 initialize vnode interlock when creating one 2007-11-06 12:14:37 +00:00
pooka 895e09b8c5 Sprinkle some more locking, especially to the vm. Due to some
additional fixes, it's now possible to run file systems with
spinlocks actually enabled.  The genfs_putpages() locking is still
working only due to greater powers, but I'll eventually get around to
fixing it.
2007-11-06 11:35:04 +00:00
pooka ef11b00de6 Update to new puffs_mainloop() signature. Forgot to do this yesterday.
noticed by Kurt Schreiner on current-users
2007-11-06 10:57:35 +00:00
pooka 2525a332ae * sprinkle some locking into the vm code
* avoid extra insert+search+remove step in file systems using
  ubc_uiomove() instead of standard uiomove()
2007-11-04 19:52:14 +00:00
pooka 85efd8ec20 set mask and dirmask to 0777 by default 2007-11-04 19:42:56 +00:00
pooka 0be31eefc7 Allocate buf using getiobuf() instead of abusing the stack. 2007-11-04 19:37:29 +00:00
pooka 08ac8063af Fix some comments: thinking of it more closely, it is actually safe
to release the sleep interlock before calling cv_wait() because we
are protected by the list mutex which prevents a wakeup race.
2007-11-04 18:46:29 +00:00
pooka 18ae49a27c Make the strategy routine get the results through biowait() and
the "disk driver" (rumpuser) call biodone() to indicate the completion
of I/O.  Support for B_ASYNC is coming at some point, but I need
more locking support in the emulated vm for that.
2007-11-04 18:43:55 +00:00
pooka 2567179467 Remember to save errno before restoring it.
noticed by Lukasz on current-users
2007-11-04 17:21:08 +00:00
pooka 55ace5d0d5 Include bufq priority implementations also and link librump with
--whole-archive since the bufq priorities use link sets.
2007-10-31 17:53:38 +00:00
pooka 6cc957f067 "Support" splhigh(), requested by reinoud. But the spl emulation
code needs to be actually written soon ...
2007-10-31 16:00:26 +00:00
pooka 87f9ee4c42 Make it possible to run rumps multithreaded. This brings real
locking and makes it possible to run file systems which create
threads.  It also makes rump file system behaviour better match
file system behaviour in the kernel.
2007-10-31 15:57:19 +00:00
pooka cb11cd8fde In uvm_estimatepageable() "estimate" pageable. 2007-10-28 18:54:17 +00:00
pooka eff8fdc9d1 Prevent recursion in INACTIVE -> vrecycle -> inactive -> ... 2007-10-27 19:36:34 +00:00
pooka 87ffdd1649 RUMUSEROBJDIR -> RUMPUSEROBJDIR (those cold-blooded old times ...) 2007-10-26 18:03:26 +00:00
pooka 6640f4d32a It's non-trivial to say that "no, we don't have cpu counter on this
arch (rump)", so emulate it.  But this is suboptimal.  The crux of
the problem seems to be that types.h contains both information on
the machine architecture (which we want) as well as other defines
such as __HAVE_CPU_COUNTER (which we don't want).
2007-10-26 17:59:38 +00:00
pooka ff9a260335 few stubs 2007-10-26 17:56:24 +00:00
pooka bf494d7f8d more carefully emulate vget() and vrecycle() 2007-10-26 17:55:43 +00:00
pooka 90f8810031 In threading where available. 2007-10-26 17:36:23 +00:00
pooka 4f8627af5f define _RUMPKERNEL 2007-10-26 10:44:27 +00:00
pooka f608ef6f7b Don't unmount file system when releasing ukfs - it's always already
unmounted at that point (or never was mounted in the first place).
2007-10-25 16:56:41 +00:00
pooka 50591a9595 "flags * (M_CANFAIL | M_NOWAIT)" is probably not correct. Use & instead.
And while committing, add other random cruft I've needed recently.
2007-10-24 15:00:37 +00:00
ad a2a3828545 machine/{bus,cpu,intr}.h -> sys/{bus,cpu,intr}.h 2007-10-19 11:59:34 +00:00
pooka b16ab0b2da Compile most genfs routines directly out of the kernel sources.
Move special I/O routines to genfs_io.c to mirror kernel naming.
2007-10-17 16:48:16 +00:00
ad 11dc639958 Merge from vmlocking:
- G/C spinlockmgr() and simple_lock debugging.
- Always include the kernel_lock functions, for LKMs.
- Slightly improved subr_lockdebug code.
- Keep sizeof(struct lock) the same if LOCKDEBUG.
2007-10-11 19:45:24 +00:00