• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /macosx-10.9.5/dtrace-118.1/libdtrace/

Lines Matching refs:sp

47 dt_strtab_grow(dt_strtab_t *sp)
51 if ((ptr = malloc(sp->str_bufsz)) == NULL)
54 bufs = realloc(sp->str_bufs, (sp->str_nbufs + 1) * sizeof (char *));
61 sp->str_nbufs++;
62 sp->str_bufs = bufs;
63 sp->str_ptr = ptr;
64 sp->str_bufs[sp->str_nbufs - 1] = sp->str_ptr;
72 dt_strtab_t *sp = malloc(sizeof (dt_strtab_t));
77 if (sp == NULL)
80 bzero(sp, sizeof (dt_strtab_t));
81 sp->str_hash = malloc(nbuckets * sizeof (dt_strhash_t *));
83 if (sp->str_hash == NULL)
86 bzero(sp->str_hash, nbuckets * sizeof (dt_strhash_t *));
87 sp->str_hashsz = nbuckets;
88 sp->str_bufs = NULL;
89 sp->str_ptr = NULL;
90 sp->str_nbufs = 0;
91 sp->str_bufsz = bufsz;
92 sp->str_nstrs = 1;
93 sp->str_size = 1;
95 if (dt_strtab_grow(sp) == -1)
98 *sp->str_ptr++ = '\0';
99 return (sp);
102 dt_strtab_destroy(sp);
107 dt_strtab_destroy(dt_strtab_t *sp)
112 for (i = 0; i < sp->str_hashsz; i++) {
113 for (hp = sp->str_hash[i]; hp != NULL; hp = hq) {
119 for (i = 0; i < sp->str_nbufs; i++)
120 free(sp->str_bufs[i]);
122 if (sp->str_hash != NULL)
123 free(sp->str_hash);
124 if (sp->str_bufs != NULL)
125 free(sp->str_bufs);
127 free(sp);
153 dt_strtab_compare(dt_strtab_t *sp, dt_strhash_t *hp,
162 if (buf == sp->str_bufs[b] + sp->str_bufsz)
163 buf = sp->str_bufs[++b];
165 resid = sp->str_bufs[b] + sp->str_bufsz - buf;
180 dt_strtab_copyin(dt_strtab_t *sp, const char *str, size_t len)
182 char *old_p = sp->str_ptr;
183 ulong_t old_n = sp->str_nbufs;
185 ulong_t b = sp->str_nbufs - 1;
189 if (sp->str_ptr == sp->str_bufs[b] + sp->str_bufsz) {
190 if (dt_strtab_grow(sp) == -1)
195 resid = sp->str_bufs[b] + sp->str_bufsz - sp->str_ptr;
197 bcopy(str, sp->str_ptr, n);
199 sp->str_ptr += n;
207 while (sp->str_nbufs != old_n)
208 free(sp->str_bufs[--sp->str_nbufs]);
210 sp->str_ptr = old_p;
215 dt_strtab_index(dt_strtab_t *sp, const char *str)
224 h = dt_strtab_hash(str, &len) % sp->str_hashsz;
226 for (hp = sp->str_hash[h]; hp != NULL; hp = hp->str_next) {
227 if (dt_strtab_compare(sp, hp, str, len + 1) == 0)
235 dt_strtab_insert(dt_strtab_t *sp, const char *str)
242 if ((off = dt_strtab_index(sp, str)) != -1)
245 h = dt_strtab_hash(str, &len) % sp->str_hashsz;
254 hp->str_data = sp->str_ptr;
255 hp->str_buf = sp->str_nbufs - 1;
256 hp->str_off = sp->str_size;
258 hp->str_next = sp->str_hash[h];
264 if (dt_strtab_copyin(sp, str, len + 1) == -1)
267 sp->str_nstrs++;
268 sp->str_size += len + 1;
269 sp->str_hash[h] = hp;
275 dt_strtab_size(const dt_strtab_t *sp)
277 return (sp->str_size);
281 dt_strtab_write(const dt_strtab_t *sp, dt_strtab_write_f *func, void *private)
287 for (i = 0; i < sp->str_nbufs; i++, total += res) {
288 if (i == sp->str_nbufs - 1)
289 n = sp->str_ptr - sp->str_bufs[i];
291 n = sp->str_bufsz;
293 if ((res = func(sp->str_bufs[i], n, total, private)) <= 0)
297 if (total == 0 && sp->str_size != 0)