Lines Matching refs:lds
98 struct lws_diskcache_scan *lds = lws_malloc(sizeof(*lds), "cachescan");
100 if (!lds)
103 memset(lds, 0, sizeof(*lds));
105 lds->cache_dir_base = cache_dir_base;
106 lds->cache_size_limit = cache_size_limit;
108 return lds;
112 lws_diskcache_destroy(struct lws_diskcache_scan **lds)
114 if ((*lds)->batch)
115 lws_free((*lds)->batch);
116 lws_free(*lds);
117 *lds = NULL;
176 lws_diskcache_query(struct lws_diskcache_scan *lds, int is_bot,
184 if (!lds->cache_dir_base)
188 lds->cache_tries++;
190 n = lws_snprintf(cache, (size_t)cache_len, "%s/%c/%c/%s", lds->cache_dir_base,
200 lds->cache_hits++;
239 lws_diskcache_secs_to_idle(struct lws_diskcache_scan *lds)
241 return lds->secs_waiting;
272 lws_diskcache_trim(struct lws_diskcache_scan *lds)
274 size_t cache_size_limit = (size_t)lds->cache_size_limit;
285 if (!lds->cache_subdir) {
287 if (lds->last_scan_completed + lds->secs_waiting > time(NULL))
290 lds->batch = lws_malloc(sizeof(struct file_entry) *
292 if (!lds->batch) {
297 lds->agg_size = 0;
298 lds->head = NULL;
299 lds->batch_in_use = 0;
300 lds->agg_file_count = 0;
304 lds->cache_dir_base, hex[(lds->cache_subdir >> 4) & 15],
305 hex[lds->cache_subdir & 15]);
310 lds->cache_dir_base);
322 lds->agg_file_count++;
341 lds->agg_size += (uint64_t)s.st_size;
343 if (lds->batch_in_use == BATCH_COUNT) {
349 if (lp_to_fe(lds->head, sorted)->modified < s.st_mtime)
357 p = lds->head;
358 lds->head = p->sorted;
362 p = &lds->batch[lds->batch_in_use++];
370 lws_list_ptr_insert(&lds->head, &p->sorted, fe_modified_sort);
375 lds->cache_subdir++;
376 if (lds->cache_subdir != 0x100)
385 if (lds->agg_size > cache_size_limit) {
389 lp = lds->head;
405 while (lp && lds->agg_size > cache_size_limit) {
409 lds->cache_dir_base, p->name[0],
413 lds->agg_size -= p->size;
426 lds->cache_dir_base, files_trimmed,
428 ((unsigned long long)lds->agg_size) / MIB);
431 if (lds->agg_size && lds->agg_file_count)
432 lds->avg_size = lds->agg_size / (uint64_t)lds->agg_file_count;
439 lds->last_scan_completed = time(NULL);
440 lds->secs_waiting = 1;
442 if (lds->agg_size < cache_size_limit) {
446 if (lds->agg_size && lds->agg_file_count)
447 avg = ((lds->agg_size * 8) / (uint64_t)lds->agg_file_count) / 10;
459 projected = (lds->agg_size * 11) / 10;
462 lds->secs_waiting = (int)((256 / 2) * ((cache_size_limit -
470 if (lds->secs_waiting > 3600)
471 lds->secs_waiting = 3600;
473 lds->secs_waiting = 0;
476 lds->cache_dir_base,
477 (unsigned long long)lds->agg_size / KIB,
479 lds->secs_waiting);
481 lws_free(lds->batch);
482 lds->batch = NULL;
484 lds->cache_subdir = 0;