Lines Matching refs:mp

65 	MPOOL *mp;  local
82 if ((mp = (MPOOL *)calloc(1, sizeof(MPOOL))) == NULL)
84 CIRCLEQ_INIT(&mp->lqh);
86 CIRCLEQ_INIT(&mp->hqh[entry]);
87 mp->maxcache = maxcache;
88 mp->npages = sb.st_size / pagesize;
89 mp->pagesize = pagesize;
90 mp->fd = fd;
91 return (mp);
99 mpool_filter(mp, pgin, pgout, pgcookie) in mpool_filter() argument
100 MPOOL *mp; in mpool_filter()
105 mp->pgin = pgin;
106 mp->pgout = pgout;
107 mp->pgcookie = pgcookie;
115 mpool_new(mp, pgnoaddr, flags) in mpool_new() argument
116 MPOOL *mp; in mpool_new()
123 if (mp->npages == MAX_PAGE_NUMBER) {
128 ++mp->pagenew;
135 if ((bp = mpool_bkt(mp)) == NULL)
138 mp->npages++;
141 bp->pgno = *pgnoaddr = mp->npages++;
145 head = &mp->hqh[HASHKEY(bp->pgno)];
147 CIRCLEQ_INSERT_TAIL(&mp->lqh, bp, q);
152 mpool_delete(mp, page) in mpool_delete() argument
153 MPOOL *mp; in mpool_delete()
170 head = &mp->hqh[HASHKEY(bp->pgno)];
172 CIRCLEQ_REMOVE(&mp->lqh, bp, q);
183 mpool_get(mp, pgno, flags) in mpool_get() argument
184 MPOOL *mp; in mpool_get()
194 ++mp->pageget;
198 if ((bp = mpool_look(mp, pgno)) != NULL) {
210 head = &mp->hqh[HASHKEY(bp->pgno)];
213 CIRCLEQ_REMOVE(&mp->lqh, bp, q);
214 CIRCLEQ_INSERT_TAIL(&mp->lqh, bp, q);
222 if ((bp = mpool_bkt(mp)) == NULL)
227 ++mp->pageread;
229 off = mp->pagesize * pgno;
230 if (off / mp->pagesize != pgno) {
236 if (lseek(mp->fd, off, SEEK_SET) != off)
239 if ((nr = read(mp->fd, bp->page, mp->pagesize)) != mp->pagesize) {
249 memset(bp->page, 0, mp->pagesize);
263 head = &mp->hqh[HASHKEY(bp->pgno)];
265 CIRCLEQ_INSERT_TAIL(&mp->lqh, bp, q);
268 if (mp->pgin != NULL)
269 (mp->pgin)(mp->pgcookie, bp->pgno, bp->page);
279 mpool_put(mp, page, flags) in mpool_put() argument
280 MPOOL *mp; in mpool_put()
287 ++mp->pageput;
308 mpool_close(mp) in mpool_close() argument
309 MPOOL *mp; in mpool_close()
314 while ((bp = mp->lqh.cqh_first) != (void *)&mp->lqh) {
315 CIRCLEQ_REMOVE(&mp->lqh, mp->lqh.cqh_first, q);
320 free(mp);
329 mpool_sync(mp) in mpool_sync() argument
330 MPOOL *mp; in mpool_sync()
335 for (bp = mp->lqh.cqh_first;
336 bp != (void *)&mp->lqh; bp = bp->q.cqe_next)
338 mpool_write(mp, bp) == RET_ERROR)
342 return (fsync(mp->fd) ? RET_ERROR : RET_SUCCESS);
350 mpool_bkt(mp) in mpool_bkt() argument
351 MPOOL *mp; in mpool_bkt()
357 if (mp->curcache < mp->maxcache)
366 for (bp = mp->lqh.cqh_first;
367 bp != (void *)&mp->lqh; bp = bp->q.cqe_next)
371 mpool_write(mp, bp) == RET_ERROR)
374 ++mp->pageflush;
377 head = &mp->hqh[HASHKEY(bp->pgno)];
379 CIRCLEQ_REMOVE(&mp->lqh, bp, q);
383 memset(bp, 0xff, sizeof(BKT) + mp->pagesize);
391 new: if ((bp = (BKT *)malloc(sizeof(BKT) + mp->pagesize)) == NULL)
394 ++mp->pagealloc;
397 memset(bp, 0xff, sizeof(BKT) + mp->pagesize);
401 ++mp->curcache;
410 mpool_write(mp, bp) in mpool_write() argument
411 MPOOL *mp; in mpool_write()
417 ++mp->pagewrite;
421 if (mp->pgout)
422 (mp->pgout)(mp->pgcookie, bp->pgno, bp->page);
424 off = mp->pagesize * bp->pgno;
425 if (off / mp->pagesize != bp->pgno) {
431 if (lseek(mp->fd, off, SEEK_SET) != off)
433 if (write(mp->fd, bp->page, mp->pagesize) != mp->pagesize)
445 mpool_look(mp, pgno) in mpool_look() argument
446 MPOOL *mp; in mpool_look()
452 head = &mp->hqh[HASHKEY(pgno)];
456 ++mp->cachehit;
461 ++mp->cachemiss;
472 mpool_stat(mp) in mpool_stat() argument
473 MPOOL *mp; in mpool_stat()
479 (void)fprintf(stderr, "%lu pages in the file\n", mp->npages);
482 mp->pagesize, mp->curcache, mp->maxcache);
484 mp->pageput, mp->pageget, mp->pagenew);
486 mp->pagealloc, mp->pageflush);
487 if (mp->cachehit + mp->cachemiss)
490 ((double)mp->cachehit / (mp->cachehit + mp->cachemiss))
491 * 100, mp->cachehit, mp->cachemiss);
493 mp->pageread, mp->pagewrite);
497 for (bp = mp->lqh.cqh_first;
498 bp != (void *)&mp->lqh; bp = bp->q.cqe_next) {