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: rmind-smpnet


Revision 1.200.6.1 / (download) - annotate - [select for diffs], Sun May 18 17:46:07 2014 UTC (3 years, 4 months ago) by rmind
Branch: rmind-smpnet
Changes since 1.200: +7 -6 lines
Diff to previous 1.200 (colored) next main 1.201 (colored)

sync with head

Revision 1.200 / (download) - annotate - [select for diffs], Mon Mar 11 21:37:54 2013 UTC (4 years, 6 months ago) by pooka
Branch: MAIN
CVS Tags: riastradh-drm2-base2, riastradh-drm2-base1, riastradh-drm2-base, riastradh-drm2, khorben-n900, agc-symver-base, agc-symver
Branch point for: rmind-smpnet
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>