#include #include #include #include #include static struct traceobj trobj; static char pt_mem[65536]; int main(int argc, char *const argv[]) { u_long nbufs, ptid, _ptid, n; void *buf, *lbuf; int ret; traceobj_init(&trobj, argv[0], 0); ret = pt_create("PART", pt_mem, NULL, sizeof(pt_mem), 16, PT_NODEL, &ptid, &nbufs); traceobj_assert(&trobj, ret == SUCCESS); for (n = 0, lbuf = NULL;; n++, lbuf = buf) { ret = pt_getbuf(ptid, &buf); if (ret) { traceobj_assert(&trobj, ret == ERR_NOBUF); break; } if (lbuf) traceobj_assert(&trobj, (caddr_t)lbuf + 16 == (caddr_t)buf); memset(buf, 0xaa, 16); } traceobj_assert(&trobj, nbufs == n); ret = pt_delete(ptid); traceobj_assert(&trobj, ret == ERR_BUFINUSE); for (buf = lbuf; n > 0; n--, buf = (caddr_t)buf - 16) { ret = pt_retbuf(ptid, buf); traceobj_assert(&trobj, ret == SUCCESS); } ret = pt_ident("PART", 0, &_ptid); traceobj_assert(&trobj, ret == SUCCESS && _ptid == ptid); ret = pt_delete(ptid); traceobj_assert(&trobj, ret == SUCCESS); exit(0); }