Lines Matching refs:pcp
191 static int psem_cache_add(struct pseminfo *psemp, struct psemname *pnp, struct psemcache *pcp);
192 static void psem_cache_delete(struct psemcache *pcp);
209 struct psemcache *pcp, *nnp; in psem_cache_search() local
218 for (pcp = pcpp->lh_first; pcp != 0; pcp = nnp) { in psem_cache_search()
219 nnp = pcp->psem_hash.le_next; in psem_cache_search()
220 if (pcp->psem_nlen == pnp->psem_namelen && in psem_cache_search()
221 !bcmp(pcp->psem_name, pnp->psem_nameptr, pcp->psem_nlen)) { in psem_cache_search()
226 if (pcp == 0) { in psem_cache_search()
232 if (pcp->pseminfo) { in psem_cache_search()
235 *psemp = pcp->pseminfo; in psem_cache_search()
236 *pcache = pcp; in psem_cache_search()
252 psem_cache_add(struct pseminfo *psemp, struct psemname *pnp, struct psemcache *pcp) in psem_cache_add() argument
279 pcp->pseminfo = psemp; in psem_cache_add()
280 pcp->psem_nlen = pnp->psem_namelen; in psem_cache_add()
281 bcopy(pnp->psem_nameptr, pcp->psem_name, pcp->psem_nlen); in psem_cache_add()
288 if (p == pcp) { in psem_cache_add()
294 LIST_INSERT_HEAD(pcpp, pcp, psem_hash); in psem_cache_add()
308 psem_cache_delete(struct psemcache *pcp) in psem_cache_delete() argument
311 if (pcp->psem_hash.le_prev == 0) { in psem_cache_delete()
314 if (pcp->psem_hash.le_next == pcp) { in psem_cache_delete()
318 LIST_REMOVE(pcp, psem_hash); in psem_cache_delete()
319 pcp->psem_hash.le_prev = NULL; in psem_cache_delete()
331 struct psemcache *pcp, *tmppcp; in psem_cache_purge_all() local
341 LIST_FOREACH_SAFE(pcp, pcpp, psem_hash, tmppcp) { in psem_cache_purge_all()
342 assert(pcp->psem_nlen); in psem_cache_purge_all()
346 error = psem_unlink_internal(pcp->pseminfo, pcp); in psem_cache_purge_all()
393 struct psemcache *pcp = PSEMCACHE_NULL; in sem_open() local
457 pcp = kalloc_type(struct psemcache, Z_WAITOK | Z_ZERO | Z_NOFAIL); in sem_open()
576 if ((error = psem_cache_add(pinfo, &nd, pcp))) { in sem_open()
590 kfree_type(struct psemcache, pcp); in sem_open()
591 pcp = PSEMCACHE_NULL; in sem_open()
618 kfree_type(struct psemcache, pcp); in sem_open()