version 1.86, 2007/12/22 01:14:54 |
version 1.87, 2007/12/26 16:01:36 |
Line 234 __KERNEL_RCSID(0, "$NetBSD$"); |
|
Line 234 __KERNEL_RCSID(0, "$NetBSD$"); |
|
|
|
struct lwplist alllwp = LIST_HEAD_INITIALIZER(alllwp); |
struct lwplist alllwp = LIST_HEAD_INITIALIZER(alllwp); |
|
|
POOL_INIT(lwp_pool, sizeof(struct lwp), MIN_LWP_ALIGNMENT, 0, 0, "lwppl", |
|
&pool_allocator_nointr, IPL_NONE); |
|
POOL_INIT(lwp_uc_pool, sizeof(ucontext_t), 0, 0, 0, "lwpucpl", |
POOL_INIT(lwp_uc_pool, sizeof(ucontext_t), 0, 0, 0, "lwpucpl", |
&pool_allocator_nointr, IPL_NONE); |
&pool_allocator_nointr, IPL_NONE); |
|
|
|
static pool_cache_t lwp_cache; |
static specificdata_domain_t lwp_specificdata_domain; |
static specificdata_domain_t lwp_specificdata_domain; |
|
|
void |
void |
|
|
lwp_specificdata_domain = specificdata_domain_create(); |
lwp_specificdata_domain = specificdata_domain_create(); |
KASSERT(lwp_specificdata_domain != NULL); |
KASSERT(lwp_specificdata_domain != NULL); |
lwp_sys_init(); |
lwp_sys_init(); |
|
lwp_cache = pool_cache_init(sizeof(lwp_t), MIN_LWP_ALIGNMENT, 0, 0, |
|
"lwppl", NULL, IPL_NONE, NULL, NULL, NULL); |
} |
} |
|
|
/* |
/* |
Line 556 lwp_create(lwp_t *l1, proc_t *p2, vaddr_ |
|
Line 557 lwp_create(lwp_t *l1, proc_t *p2, vaddr_ |
|
mutex_exit(&p2->p_smutex); |
mutex_exit(&p2->p_smutex); |
} |
} |
if (isfree == NULL) { |
if (isfree == NULL) { |
l2 = pool_get(&lwp_pool, PR_WAITOK); |
l2 = pool_cache_get(lwp_cache, PR_WAITOK); |
memset(l2, 0, sizeof(*l2)); |
memset(l2, 0, sizeof(*l2)); |
l2->l_ts = pool_cache_get(turnstile_cache, PR_WAITOK); |
l2->l_ts = pool_cache_get(turnstile_cache, PR_WAITOK); |
SLIST_INIT(&l2->l_pi_lenders); |
SLIST_INIT(&l2->l_pi_lenders); |
Line 927 lwp_free(struct lwp *l, bool recycle, bo |
|
Line 928 lwp_free(struct lwp *l, bool recycle, bo |
|
KASSERT(SLIST_EMPTY(&l->l_pi_lenders)); |
KASSERT(SLIST_EMPTY(&l->l_pi_lenders)); |
KASSERT(l->l_inheritedprio == -1); |
KASSERT(l->l_inheritedprio == -1); |
if (!recycle) |
if (!recycle) |
pool_put(&lwp_pool, l); |
pool_cache_put(lwp_cache, l); |
KERNEL_UNLOCK_ONE(curlwp); /* XXXSMP */ |
KERNEL_UNLOCK_ONE(curlwp); /* XXXSMP */ |
} |
} |
|
|