• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /macosx-10.9.5/Libc-997.90.3/db/mpool/FreeBSD/

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(mp, pgnoaddr)
114 MPOOL *mp;
120 if (mp->npages == MAX_PAGE_NUMBER) {
125 ++mp->pagenew;
132 if ((bp = mpool_bkt(mp)) == NULL)
134 *pgnoaddr = bp->pgno = mp->npages++;
137 head = &mp->hqh[HASHKEY(bp->pgno)];
139 TAILQ_INSERT_TAIL(&mp->lqh, bp, q);
149 mpool_get(MPOOL *mp, pgno_t pgno,
158 if (pgno >= mp->npages) {
164 ++mp->pageget;
168 if ((bp = mpool_look(mp, pgno)) != NULL) {
180 head = &mp->hqh[HASHKEY(bp->pgno)];
183 TAILQ_REMOVE(&mp->lqh, bp, q);
184 TAILQ_INSERT_TAIL(&mp->lqh, bp, q);
192 if ((bp = mpool_bkt(mp)) == NULL)
197 ++mp->pageread;
199 off = mp->pagesize * pgno;
200 nr = pread(mp->fd, bp->page, mp->pagesize, off);
201 if (nr != mp->pagesize) {
215 head = &mp->hqh[HASHKEY(bp->pgno)];
217 TAILQ_INSERT_TAIL(&mp->lqh, bp, q);
220 if (mp->pgin != NULL)
221 (mp->pgin)(mp->pgcookie, bp->pgno, bp->page);
232 mpool_put(MPOOL *mp, void *page, u_int flags)
237 ++mp->pageput;
257 mpool_close(MPOOL *mp)
262 while (!TAILQ_EMPTY(&mp->lqh)) {
263 bp = TAILQ_FIRST(&mp->lqh);
264 TAILQ_REMOVE(&mp->lqh, bp, q);
269 free(mp);
278 mpool_sync(MPOOL *mp)
283 TAILQ_FOREACH(bp, &mp->lqh, q) {
285 if (mpool_write(mp, bp) == RET_ERROR) {
289 if (mp->pgin != NULL)
290 (mp->pgin)(mp->pgcookie, bp->pgno, bp->page);
296 return (_fsync(mp->fd) ? RET_ERROR : RET_SUCCESS);
304 mpool_bkt(MPOOL *mp)
310 if (mp->curcache < mp->maxcache)
319 TAILQ_FOREACH(bp, &mp->lqh, q)
323 mpool_write(mp, bp) == RET_ERROR)
326 ++mp->pageflush;
329 head = &mp->hqh[HASHKEY(bp->pgno)];
331 TAILQ_REMOVE(&mp->lqh, bp, q);
335 memset(bp, 0xff, sizeof(BKT) + mp->pagesize);
342 new: if ((bp = (BKT *)calloc(1, sizeof(BKT) + mp->pagesize)) == NULL)
345 ++mp->pagealloc;
348 ++mp->curcache;
357 mpool_write(MPOOL *mp, BKT *bp)
362 ++mp->pagewrite;
366 if (mp->pgout)
367 (mp->pgout)(mp->pgcookie, bp->pgno, bp->page);
369 off = mp->pagesize * bp->pgno;
370 if (pwrite(mp->fd, bp->page, mp->pagesize, off) != mp->pagesize)
382 mpool_look(MPOOL *mp, pgno_t pgno)
387 head = &mp->hqh[HASHKEY(pgno)];
391 ++mp->cachehit;
396 ++mp->cachemiss;
407 mpool_stat(MPOOL *mp)
413 (void)fprintf(stderr, "%lu pages in the file\n", mp->npages);
416 mp->pagesize, mp->curcache, mp->maxcache);
418 mp->pageput, mp->pageget, mp->pagenew);
420 mp->pagealloc, mp->pageflush);
421 if (mp->cachehit + mp->cachemiss)
424 ((double)mp->cachehit / (mp->cachehit + mp->cachemiss))
425 * 100, mp->cachehit, mp->cachemiss);
427 mp->pageread, mp->pagewrite);
431 TAILQ_FOREACH(bp, &mp->lqh, q) {