Lines Matching refs:lhp

1274 	umem_log_header_t *lhp;
1283 * Make sure that lhp->lh_cpu[] is nicely aligned
1287 lhp = vmem_xalloc(umem_log_arena, lhsize, 64, P2NPHASE(lhsize, 64), 0,
1289 if (lhp == NULL)
1292 bzero(lhp, lhsize);
1294 (void) mutex_init(&lhp->lh_lock, USYNC_THREAD, NULL);
1295 lhp->lh_nchunks = nchunks;
1296 lhp->lh_chunksize = P2ROUNDUP(logsize / nchunks, PAGESIZE);
1297 if (lhp->lh_chunksize == 0)
1298 lhp->lh_chunksize = PAGESIZE;
1300 lhp->lh_base = vmem_alloc(umem_log_arena,
1301 lhp->lh_chunksize * nchunks, VM_NOSLEEP);
1302 if (lhp->lh_base == NULL)
1305 lhp->lh_free = vmem_alloc(umem_log_arena,
1307 if (lhp->lh_free == NULL)
1310 bzero(lhp->lh_base, lhp->lh_chunksize * nchunks);
1313 umem_cpu_log_header_t *clhp = &lhp->lh_cpu[i];
1319 lhp->lh_free[i] = i;
1321 lhp->lh_head = umem_max_ncpus;
1322 lhp->lh_tail = 0;
1324 return (lhp);
1327 if (lhp != NULL) {
1328 if (lhp->lh_base != NULL)
1329 vmem_free(umem_log_arena, lhp->lh_base,
1330 lhp->lh_chunksize * nchunks);
1332 vmem_xfree(umem_log_arena, lhp, lhsize);
1338 umem_log_enter(umem_log_header_t *lhp, void *data, size_t size)
1342 &lhp->lh_cpu[CPU(umem_cpu_mask)->cpu_number];
1344 if (lhp == NULL || umem_logging == 0)
1350 (void) mutex_lock(&lhp->lh_lock);
1351 lhp->lh_hits++;
1352 lhp->lh_free[lhp->lh_tail] = clhp->clh_chunk;
1353 lhp->lh_tail = (lhp->lh_tail + 1) % lhp->lh_nchunks;
1354 clhp->clh_chunk = lhp->lh_free[lhp->lh_head];
1355 lhp->lh_head = (lhp->lh_head + 1) % lhp->lh_nchunks;
1356 clhp->clh_current = lhp->lh_base +
1357 clhp->clh_chunk * lhp->lh_chunksize;
1358 clhp->clh_avail = lhp->lh_chunksize;
1359 if (size > lhp->lh_chunksize)
1360 size = lhp->lh_chunksize;
1361 (void) mutex_unlock(&lhp->lh_lock);