]>
Commit | Line | Data |
---|---|---|
731bfa0a ER |
1 | *** mp/mp_region.c 2007-05-18 03:18:01.000000000 +1000 |
2 | --- mp/mp_region.c 2008-06-24 13:15:56.000000000 +1000 | |
3 | *************** | |
4 | *** 249,256 **** | |
5 | mtx_base = htab[0].mtx_hash; | |
6 | } | |
7 | ||
8 | if (mtx_base != MUTEX_INVALID) | |
9 | ! mtx_base += reginfo_off * htab_buckets; | |
10 | ||
11 | /* Allocate hash table space and initialize it. */ | |
12 | if ((ret = __env_alloc(infop, | |
13 | --- 249,262 ---- | |
14 | mtx_base = htab[0].mtx_hash; | |
15 | } | |
16 | ||
17 | + /* | |
18 | + * We preallocated all of the mutexes in a block, so for regions after | |
19 | + * the first, we skip mutexes in use in earlier regions. Each region | |
20 | + * has the same number of buckets and there are two mutexes per hash | |
21 | + * bucket (the bucket mutex and the I/O mutex). | |
22 | + */ | |
23 | if (mtx_base != MUTEX_INVALID) | |
24 | ! mtx_base += reginfo_off * htab_buckets * 2; | |
25 | ||
26 | /* Allocate hash table space and initialize it. */ | |
27 | if ((ret = __env_alloc(infop, |