Lines Matching refs:sd

113 	ps_sd *sd;  in ps_sd_new()  local
115 sd = mm_malloc(data->mm, sizeof(ps_sd) + ZSTR_LEN(key)); in ps_sd_new()
116 if (!sd) { in ps_sd_new()
125 sd->ctime = 0; in ps_sd_new()
126 sd->hv = hv; in ps_sd_new()
127 sd->data = NULL; in ps_sd_new()
128 sd->alloclen = sd->datalen = 0; in ps_sd_new()
130 sd->key = zend_string_copy(key); in ps_sd_new()
132 sd->next = data->hash[slot]; in ps_sd_new()
133 data->hash[slot] = sd; in ps_sd_new()
137 if (!sd->next) { in ps_sd_new()
143 ps_mm_debug(("inserting %s(%p) into slot %d\n", ZSTR_VAL(key), sd, slot)); in ps_sd_new()
145 return sd; in ps_sd_new()
148 static void ps_sd_destroy(ps_mm *data, ps_sd *sd) in ps_sd_destroy() argument
152 slot = ps_sd_hash(sd->key) & data->hash_max; in ps_sd_destroy()
154 if (data->hash[slot] == sd) { in ps_sd_destroy()
155 data->hash[slot] = sd->next; in ps_sd_destroy()
160 for (prev = data->hash[slot]; prev->next != sd; prev = prev->next); in ps_sd_destroy()
161 prev->next = sd->next; in ps_sd_destroy()
166 if (sd->data) { in ps_sd_destroy()
167 mm_free(data->mm, sd->data); in ps_sd_destroy()
169 zend_string_release(sd->key); in ps_sd_destroy()
171 mm_free(data->mm, sd); in ps_sd_destroy()
205 ps_sd *sd; in ps_mm_key_exists() local
210 sd = ps_sd_lookup(data, key, 0); in ps_mm_key_exists()
211 if (sd) { in ps_mm_key_exists()
244 ps_sd *sd, *next; in ps_mm_destroy() local
254 for (sd = data->hash[h]; sd; sd = next) { in ps_mm_destroy()
255 next = sd->next; in ps_mm_destroy()
256 ps_sd_destroy(data, sd); in ps_mm_destroy()
344 ps_sd *sd; in PS_READ_FUNC() local
368 sd = ps_sd_lookup(data, PS(id), 0); in PS_READ_FUNC()
369 if (sd) { in PS_READ_FUNC()
370 *val = zend_string_init(sd->data, sd->datalen, 0); in PS_READ_FUNC()
382 ps_sd *sd; in PS_WRITE_FUNC() local
386 sd = ps_sd_lookup(data, key, 1); in PS_WRITE_FUNC()
387 if (!sd) { in PS_WRITE_FUNC()
388 sd = ps_sd_new(data, key); in PS_WRITE_FUNC()
392 if (sd) { in PS_WRITE_FUNC()
393 if (val->len >= sd->alloclen) { in PS_WRITE_FUNC()
395 mm_free(data->mm, sd->data); in PS_WRITE_FUNC()
397 sd->alloclen = val->len + 1; in PS_WRITE_FUNC()
398 sd->data = mm_malloc(data->mm, sd->alloclen); in PS_WRITE_FUNC()
400 if (!sd->data) { in PS_WRITE_FUNC()
401 ps_sd_destroy(data, sd); in PS_WRITE_FUNC()
403 sd = NULL; in PS_WRITE_FUNC()
406 if (sd) { in PS_WRITE_FUNC()
407 sd->datalen = val->len; in PS_WRITE_FUNC()
408 memcpy(sd->data, val->val, val->len); in PS_WRITE_FUNC()
409 time(&sd->ctime); in PS_WRITE_FUNC()
415 return sd ? SUCCESS : FAILURE; in PS_WRITE_FUNC()
421 ps_sd *sd; in PS_DESTROY_FUNC() local
425 sd = ps_sd_lookup(data, key, 0); in PS_DESTROY_FUNC()
426 if (sd) { in PS_DESTROY_FUNC()
427 ps_sd_destroy(data, sd); in PS_DESTROY_FUNC()
440 ps_sd *sd, *next; in PS_GC_FUNC() local
453 for (sd = *ohash; sd; sd = next) { in PS_GC_FUNC()
454 next = sd->next; in PS_GC_FUNC()
455 if (sd->ctime < limit) { in PS_GC_FUNC()
456 ps_mm_debug(("purging %s\n", ZSTR_VAL(sd->key))); in PS_GC_FUNC()
457 ps_sd_destroy(data, sd); in PS_GC_FUNC()