Home | History | Annotate | Download | only in kern

Lines Matching defs:lcp

1931 	lcpage_t *lcp;
1943 lcp = l->l_lcpage;
1944 *uaddr = lcp->lcp_uaddr + (vaddr_t)l->l_lwpctl - lcp->lcp_kaddr;
1991 TAILQ_FOREACH(lcp, &lp->lp_pages, lcp_chain) {
1992 if (lcp->lcp_nfree != 0)
1995 if (lcp == NULL) {
2001 lcp = kmem_alloc(LWPCTL_LCPAGE_SZ, KM_SLEEP);
2009 lcp->lcp_kaddr = vm_map_min(kernel_map);
2010 error = uvm_map(kernel_map, &lcp->lcp_kaddr, PAGE_SIZE,
2016 kmem_free(lcp, LWPCTL_LCPAGE_SZ);
2020 error = uvm_map_pageable(kernel_map, lcp->lcp_kaddr,
2021 lcp->lcp_kaddr + PAGE_SIZE, FALSE, 0);
2024 uvm_unmap(kernel_map, lcp->lcp_kaddr,
2025 lcp->lcp_kaddr + PAGE_SIZE);
2026 kmem_free(lcp, LWPCTL_LCPAGE_SZ);
2030 lcp->lcp_uaddr = lp->lp_uva + lp->lp_cur;
2032 lcp->lcp_nfree = LWPCTL_PER_PAGE;
2033 lcp->lcp_rotor = 0;
2034 memset(lcp->lcp_bitmap, 0xff, LWPCTL_BITMAP_SZ);
2035 TAILQ_INSERT_HEAD(&lp->lp_pages, lcp, lcp_chain);
2037 for (i = lcp->lcp_rotor; lcp->lcp_bitmap[i] == 0;) {
2041 bit = ffs(lcp->lcp_bitmap[i]) - 1;
2042 lcp->lcp_bitmap[i] ^= (1U << bit);
2043 lcp->lcp_rotor = i;
2044 lcp->lcp_nfree--;
2045 l->l_lcpage = lcp;
2047 l->l_lwpctl = (lwpctl_t *)lcp->lcp_kaddr + offset;
2048 *uaddr = lcp->lcp_uaddr + offset * sizeof(lwpctl_t);
2066 lcpage_t *lcp;
2078 lcp = l->l_lcpage;
2079 offset = (u_int)((lwpctl_t *)l->l_lwpctl - (lwpctl_t *)lcp->lcp_kaddr);
2083 lcp->lcp_nfree++;
2085 lcp->lcp_bitmap[map] |= (1U << (offset & 31));
2086 if (lcp->lcp_bitmap[lcp->lcp_rotor] == 0)
2087 lcp->lcp_rotor = map;
2089 TAILQ_REMOVE(&lp->lp_pages, lcp, lcp_chain);
2090 TAILQ_INSERT_HEAD(&lp->lp_pages, lcp, lcp_chain);
2102 lcpage_t *lcp, *next;
2116 for (lcp = TAILQ_FIRST(&lp->lp_pages); lcp != NULL; lcp = next) {
2117 next = TAILQ_NEXT(lcp, lcp_chain);
2118 uvm_unmap(kernel_map, lcp->lcp_kaddr,
2119 lcp->lcp_kaddr + PAGE_SIZE);
2120 kmem_free(lcp, LWPCTL_LCPAGE_SZ);