Lines Matching refs:p

34 	dt_pq_t *p;  in dt_pq_init()  local
37 if ((p = dt_zalloc(dtp, sizeof (dt_pq_t))) == NULL) in dt_pq_init()
40 p->dtpq_items = dt_zalloc(dtp, size * sizeof (p->dtpq_items[0])); in dt_pq_init()
41 if (p->dtpq_items == NULL) { in dt_pq_init()
42 dt_free(dtp, p); in dt_pq_init()
46 p->dtpq_hdl = dtp; in dt_pq_init()
47 p->dtpq_size = size; in dt_pq_init()
48 p->dtpq_last = 1; in dt_pq_init()
49 p->dtpq_value = value_cb; in dt_pq_init()
50 p->dtpq_arg = cb_arg; in dt_pq_init()
52 return (p); in dt_pq_init()
56 dt_pq_fini(dt_pq_t *p) in dt_pq_fini() argument
58 dtrace_hdl_t *dtp = p->dtpq_hdl; in dt_pq_fini()
60 dt_free(dtp, p->dtpq_items); in dt_pq_fini()
61 dt_free(dtp, p); in dt_pq_fini()
65 dt_pq_getvalue(dt_pq_t *p, uint_t index) in dt_pq_getvalue() argument
67 void *item = p->dtpq_items[index]; in dt_pq_getvalue()
68 return (p->dtpq_value(item, p->dtpq_arg)); in dt_pq_getvalue()
72 dt_pq_insert(dt_pq_t *p, void *item) in dt_pq_insert() argument
76 assert(p->dtpq_last < p->dtpq_size); in dt_pq_insert()
78 i = p->dtpq_last++; in dt_pq_insert()
79 p->dtpq_items[i] = item; in dt_pq_insert()
81 while (i > 1 && dt_pq_getvalue(p, i) < dt_pq_getvalue(p, i / 2)) { in dt_pq_insert()
82 void *tmp = p->dtpq_items[i]; in dt_pq_insert()
83 p->dtpq_items[i] = p->dtpq_items[i / 2]; in dt_pq_insert()
84 p->dtpq_items[i / 2] = tmp; in dt_pq_insert()
94 dt_pq_walk(dt_pq_t *p, uint_t *cookie) in dt_pq_walk() argument
97 if (*cookie >= p->dtpq_last) in dt_pq_walk()
100 return (p->dtpq_items[*cookie]); in dt_pq_walk()
104 dt_pq_pop(dt_pq_t *p) in dt_pq_pop() argument
109 assert(p->dtpq_last > 0); in dt_pq_pop()
111 if (p->dtpq_last == 1) in dt_pq_pop()
114 ret = p->dtpq_items[1]; in dt_pq_pop()
116 p->dtpq_last--; in dt_pq_pop()
117 p->dtpq_items[1] = p->dtpq_items[p->dtpq_last]; in dt_pq_pop()
118 p->dtpq_items[p->dtpq_last] = NULL; in dt_pq_pop()
127 if (lc >= p->dtpq_last) in dt_pq_pop()
130 if (rc >= p->dtpq_last) { in dt_pq_pop()
132 v = dt_pq_getvalue(p, lc); in dt_pq_pop()
134 uint64_t lv = dt_pq_getvalue(p, lc); in dt_pq_pop()
135 uint64_t rv = dt_pq_getvalue(p, rc); in dt_pq_pop()
146 if (v >= dt_pq_getvalue(p, i)) in dt_pq_pop()
149 tmp = p->dtpq_items[i]; in dt_pq_pop()
150 p->dtpq_items[i] = p->dtpq_items[c]; in dt_pq_pop()
151 p->dtpq_items[c] = tmp; in dt_pq_pop()