The NetBSD Project

CVS log for src/sys/kern/subr_pool.c

[BACK] Up to [cvs.NetBSD.org] / src / sys / kern

Request diff between arbitrary revisions


Default branch: MAIN
Current tag: tls-maxphys-base


Revision 1.200 / (download) - annotate - [select for diffs], Mon Mar 11 21:37:54 2013 UTC (13 months, 1 week ago) by pooka
Branch: MAIN
CVS Tags: tls-maxphys-base, rmind-smpnet-nbase, rmind-smpnet-base, rmind-smpnet, riastradh-drm2-base2, riastradh-drm2-base1, riastradh-drm2-base, riastradh-drm2, khorben-n900, agc-symver-base, agc-symver
Changes since 1.199: +15 -4 lines
Diff to previous 1.199 (colored)

In pool_cache_put_slow(), pool_get() can block (it does mutex_enter()),
so we need to retry if curlwp took a context switch during the call.
Otherwise, CPU-local invariants can get screwed up:

    panic: kernel diagnostic assertion "cur->pcg_avail == cur->pcg_size" failed

This is (was) very easy to reproduce by just running:

  while : ; do RUMP_NCPU=32 ./a.out ; done

where a.out only calls rump_init().  But, any situation there's contention
and a pool doesn't have emptygroups would do.

This form allows you to request diff's between any two revisions of a file. You may select a symbolic revision name using the selection box or you may type in a numeric name using the type-in text box.




CVSweb <webmaster@jp.NetBSD.org>