Commit Graph

38 Commits

Author SHA1 Message Date
cegger 83fde857cc buildfix: use PRIxPTR rather %lx. 2008-11-07 19:50:00 +00:00
rafal ca70a1c015 Pass / log return address in a few more places; proposed on tech-kern and
ok'd by ad@ about 6 months ago.
2008-11-07 02:40:35 +00:00
matt 5a4f0c6b2b Change tree op members/typedefs to rbto_compare_* from rb_compare_* 2008-06-30 20:14:09 +00:00
ad 13c7f6ff40 Move lib/libkern/rb.h to sys/rb.h, so it can be used by kernel header
files.
2008-06-04 14:31:15 +00:00
ad 7b8f512433 LOCKDEBUG:
- Tweak it so it can also catch common errors with condition variables.
  The change to kern_condvar.c is not included in this commit and will
  come later.

- Don't call kmem_alloc() if operating in interrupt context, just fail
  the allocation and disable debugging for the object. Makes it safe
  to do mutex_init/rw_init/cv_init in interrupt context, when running
  a LOCKDEBUG kernel.
2008-05-31 13:15:21 +00:00
ad a4e0004be3 LOCKDEBUG: try to speed it up a bit by not using so much global state.
This will break the build briefly but will be followed by another commit
to fix that..
2008-05-06 18:40:57 +00:00
ad 81194e34f1 Allow rw_tryenter(&lock, RW_READER) to recurse, for vfs_busy(). 2008-05-06 17:11:45 +00:00
yamt 839080f755 lockdebug: try to detect recursive acquirements of read-write locks. 2008-05-03 06:24:55 +00:00
martin ce099b4099 Remove clause 3 and 4 from TNF licenses 2008-04-28 20:22:51 +00:00
ad 8f9c8f5ea5 lockdebug_barrier: disable preemption using the interrupt priority level,
not crit_enter/crit_exit. Since this is called from mi_switch(), crit_exit
could recurse and skew statistics.
2008-04-27 11:28:49 +00:00
ad feb4783fdf Replace use of CACHE_LINE_SIZE in some obvious places. 2008-03-27 18:30:15 +00:00
ad 057adba179 Make it compile if !LOCKDEBUG. 2008-02-18 18:31:10 +00:00
ad 7eb6056f9a Try to prevent more than one CPUs panicing when an error is detected. 2008-02-18 16:02:41 +00:00
ad 212c50dd1b Need sys/lock.h for SPINLOCK_SPIN_HOOK. 2008-01-05 12:39:27 +00:00
ad 0664a0459b Start detangling lock.h from intr.h. This is likely to cause short term
breakage, but the mess of dependencies has been regularly breaking the
build recently anyhow.
2008-01-04 21:17:40 +00:00
ad ea3f10f7e0 Merge more changes from vmlocking2, mainly:
- Locking improvements.
- Use pool_cache for more items.
2007-12-26 16:01:34 +00:00
ad 461cd942ea Merge changes from vmlocking2 branch. 2007-12-08 15:00:13 +00:00
ad b470ab628d Use membar_*(). 2007-11-30 23:05:43 +00:00
yamt 354863d6e5 lockdebug_mem_check: turn a redundant check into a panic. 2007-11-26 08:16:49 +00:00
yamt 33e66db218 fix lockdebug_mem_check. 2007-11-22 10:47:37 +00:00
yamt 671754cc2e lockdebug_alloc: detect double initialization explicitly. 2007-11-21 11:33:11 +00:00
yamt 51e523b832 re-enable lockdebug_mem_check. ad@ said disabling it was a mistake
in the first place.
the implementation has been changed to use rb-tree rather than hash
so that it can check regions larger than page size as well.
2007-11-21 10:25:51 +00:00
yamt 87fcbb0fe8 remove #if 0'ed code. 2007-11-21 10:21:40 +00:00
yamt 38d5e34116 make kmutex_t and krwlock_t smaller by killing lock id.
ok'ed by Andrew Doran.
2007-11-21 10:19:06 +00:00
matt 2cab8950e4 Don't static init simplelock (back out those changes). 2007-11-12 06:14:57 +00:00
matt 90ef495f4d use __SIMPLELOCK_UNLOCKED, not SIMPLELOCK_INITIALIZER 2007-11-12 06:07:43 +00:00
matt 11910619f7 Change some initialization of static queues to compile time.
(xxx_INIT to xxx_HEAD_INITIALIZER).  Drop code which inits
non-auto (global or static) variables to 0 since that's
already implied by being non-auto.  Init some static/global
cpu_simple_locks at compile time.
2007-11-11 23:22:23 +00:00
ad d831186d55 Merge scheduler changes from the vmlocking branch. All discussed on
tech-kern:

- Invert priority space so that zero is the lowest priority. Rearrange
  number and type of priority levels into bands. Add new bands like
  'kernel real time'.
- Ignore the priority level passed to tsleep. Compute priority for
  sleep dynamically.
- For SCHED_4BSD, make priority adjustment per-LWP, not per-process.
2007-11-06 00:42:39 +00:00
ad dde5d75e78 Fix spelling. 2007-10-27 01:23:25 +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
dsl 0ca3d21b5b Include sys/cdefs.h first. 2007-09-21 19:14:12 +00:00
ad 029f4f9cd7 splstatclock, spllock -> splhigh 2007-06-15 20:17:07 +00:00
skrll 5492d86688 Correct comment. 2007-05-21 11:56:35 +00:00
yamt 6bcb315f7d lockdebug_abort: s/int/u_int/ for lock id as the rest of code. 2007-05-02 14:07:02 +00:00
ad 64e54fbb70 lockdebug:
- Initialize on the first allocation.
- Handle overflow better. PR kern/35723.
2007-03-10 15:56:21 +00:00
thorpej 4f3d5a9cc0 TRUE -> true, FALSE -> false 2007-02-22 06:34:42 +00:00
thorpej dd962f8680 Pick up some additional files that were missed before due to conflicts
with newlock2 merge:

Replace the Mach-derived boolean_t type with the C99 bool type.  A
future commit will replace use of TRUE and FALSE with true and false.
2007-02-21 23:48:10 +00:00
ad b07ec3fc38 Merge newlock2 to head. 2007-02-09 21:55:00 +00:00