• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /barrelfish-2018-10-04/lib/libc/db/mpool/

Lines Matching refs:mp

66 	MPOOL *mp;
83 if ((mp = (MPOOL *)calloc(1, sizeof(MPOOL))) == NULL)
85 TAILQ_INIT(&mp->lqh);
87 TAILQ_INIT(&mp->hqh[entry]);
88 mp->maxcache = maxcache;
89 mp->npages = sb.st_size / pagesize;
90 mp->pagesize = pagesize;
91 mp->fd = fd;
92 return (mp);
100 mpool_filter(MPOOL *mp, void (*pgin) (void *, pgno_t, void *),
103 mp->pgin = pgin;
104 mp->pgout = pgout;
105 mp->pgcookie = pgcookie;
113 mpool_new(MPOOL *mp, pgno_t *pgnoaddr, u_int flags)
118 if (mp->npages == MAX_PAGE_NUMBER) {
123 ++mp->pagenew;
130 if ((bp = mpool_bkt(mp)) == NULL)
133 mp->npages++;
136 bp->pgno = *pgnoaddr = mp->npages++;
140 head = &mp->hqh[HASHKEY(bp->pgno)];
142 TAILQ_INSERT_TAIL(&mp->lqh, bp, q);
147 mpool_delete(MPOOL *mp, void *page)
163 head = &mp->hqh[HASHKEY(bp->pgno)];
165 TAILQ_REMOVE(&mp->lqh, bp, q);
168 mp->curcache--;
178 mpool_get(MPOOL *mp, pgno_t pgno,
187 ++mp->pageget;
191 if ((bp = mpool_look(mp, pgno)) != NULL) {
203 head = &mp->hqh[HASHKEY(bp->pgno)];
206 TAILQ_REMOVE(&mp->lqh, bp, q);
207 TAILQ_INSERT_TAIL(&mp->lqh, bp, q);
215 if ((bp = mpool_bkt(mp)) == NULL)
219 off = mp->pagesize * pgno;
220 if ((nr = pread(mp->fd, bp->page, mp->pagesize, off)) != (ssize_t)mp->pagesize) {
225 mp->curcache--;
232 memset(bp->page, 0, mp->pagesize);
237 mp->curcache--;
243 ++mp->pageread;
256 head = &mp->hqh[HASHKEY(bp->pgno)];
258 TAILQ_INSERT_TAIL(&mp->lqh, bp, q);
261 if (mp->pgin != NULL)
262 (mp->pgin)(mp->pgcookie, bp->pgno, bp->page);
273 mpool_put(MPOOL *mp, void *page, u_int flags)
278 ++mp->pageput;
299 mpool_close(MPOOL *mp)
304 while (!TAILQ_EMPTY(&mp->lqh)) {
305 bp = TAILQ_FIRST(&mp->lqh);
306 TAILQ_REMOVE(&mp->lqh, bp, q);
311 free(mp);
320 mpool_sync(MPOOL *mp)
325 TAILQ_FOREACH(bp, &mp->lqh, q)
327 mpool_write(mp, bp) == RET_ERROR)
331 return (_fsync(mp->fd) ? RET_ERROR : RET_SUCCESS);
339 mpool_bkt(MPOOL *mp)
345 if (mp->curcache < mp->maxcache)
354 TAILQ_FOREACH(bp, &mp->lqh, q)
358 mpool_write(mp, bp) == RET_ERROR)
361 ++mp->pageflush;
364 head = &mp->hqh[HASHKEY(bp->pgno)];
366 TAILQ_REMOVE(&mp->lqh, bp, q);
370 memset(bp, 0xff, sizeof(BKT) + mp->pagesize);
378 new: if ((bp = (BKT *)calloc(1, sizeof(BKT) + mp->pagesize)) == NULL)
381 ++mp->pagealloc;
385 ++mp->curcache;
394 mpool_write(MPOOL *mp, BKT *bp)
399 ++mp->pagewrite;
403 if (mp->pgout)
404 (mp->pgout)(mp->pgcookie, bp->pgno, bp->page);
406 off = mp->pagesize * bp->pgno;
407 if (pwrite(mp->fd, bp->page, mp->pagesize, off) != (ssize_t)mp->pagesize)
416 if (mp->pgin)
417 (mp->pgin)(mp->pgcookie, bp->pgno, bp->page);
428 mpool_look(MPOOL *mp, pgno_t pgno)
433 head = &mp->hqh[HASHKEY(pgno)];
438 ++mp->cachehit;
443 ++mp->cachemiss;
454 mpool_stat(MPOOL *mp)
460 (void)fprintf(stderr, "%lu pages in the file\n", mp->npages);
463 mp->pagesize, mp->curcache, mp->maxcache);
465 mp->pageput, mp->pageget, mp->pagenew);
467 mp->pagealloc, mp->pageflush);
468 if (mp->cachehit + mp->cachemiss)
471 ((double)mp->cachehit / (mp->cachehit + mp->cachemiss))
472 * 100, mp->cachehit, mp->cachemiss);
474 mp->pageread, mp->pagewrite);
478 TAILQ_FOREACH(bp, &mp->lqh, q) {