Lines Matching refs:pcp
193 static int psem_cache_add(struct pseminfo *psemp, struct psemname *pnp, struct psemcache *pcp);
221 struct psemcache *pcp, *nnp;
230 for (pcp = pcpp->lh_first; pcp != 0; pcp = nnp) {
231 nnp = pcp->psem_hash.le_next;
232 if (pcp->psem_nlen == pnp->psem_namelen &&
233 !bcmp(pcp->psem_name, pnp->psem_nameptr, (u_int)pcp-> psem_nlen))
237 if (pcp == 0) {
243 if (pcp->pseminfo) {
246 *psemp = pcp->pseminfo;
247 *pcache = pcp;
263 psem_cache_add(struct pseminfo *psemp, struct psemname *pnp, struct psemcache *pcp)
288 pcp->pseminfo = psemp;
289 pcp->psem_nlen = pnp->psem_namelen;
290 bcopy(pnp->psem_nameptr, pcp->psem_name, (unsigned)pcp->psem_nlen);
297 if (p == pcp)
301 LIST_INSERT_HEAD(pcpp, pcp, psem_hash);
315 psem_cache_delete(struct psemcache *pcp)
318 if (pcp->psem_hash.le_prev == 0)
320 if (pcp->psem_hash.le_next == pcp)
323 LIST_REMOVE(pcp, psem_hash);
324 pcp->psem_hash.le_prev = NULL;
340 struct psemcache *pcp;
344 while ( (pcp = pcpp->lh_first) )
345 psem_cache_delete(pcp);
369 struct psemcache *pcp = PSEMCACHE_NULL;
436 MALLOC(pcp, struct psemcache *, sizeof(struct psemcache), M_SHM, M_WAITOK|M_ZERO);
437 if (pcp == PSEMCACHE_NULL) {
566 /* if successful, this will consume the pcp */
567 if ( (error = psem_cache_add(pinfo, &nd, pcp)) ) {
577 * if incache, we did not use the new pcp or the new pcp or the
581 FREE(pcp, M_SHM);
582 pcp = PSEMCACHE_NULL;
610 if (pcp != PSEMCACHE_NULL)
611 FREE(pcp, M_SHM);