Lines Matching refs:header

107     SHMCBHeader *header;
114 * The SHMCBHeader header structure stores metadata concerning the
117 * Subcaches is a hash table of header->subcache_num SHMCBSubcache
119 * SHMCBSubcache structure has a fixed size (header->subcache_size),
127 * total size header->subcache_data_size; data inside is referenced
132 * "Indexes" is an array of header->index_num SHMCBIndex structures,
135 * use. Both ->idx_* values have a range of [0, header->index_num)
152 /* This macro takes a pointer to the header and a zero-based index and returns
159 /* This macro takes a pointer to the header and an id and returns a
176 /* This macro takes a pointer to the header and a subcache and returns a
255 static int shmcb_subcache_store(server_rec *s, SHMCBHeader *header,
272 SHMCBHeader *header,
347 SHMCBHeader *header;
398 /* Discount the header */
410 " including header), recommending %u subcaches, "
421 ctx->header = header = shm_segment;
422 header->stat_stores = 0;
423 header->stat_replaced = 0;
424 header->stat_expiries = 0;
425 header->stat_scrolled = 0;
426 header->stat_retrieves_hit = 0;
427 header->stat_retrieves_miss = 0;
428 header->stat_removes_hit = 0;
429 header->stat_removes_miss = 0;
430 header->subcache_num = num_subcache;
433 header->subcache_size = (size_t)(shm_segsize / num_subcache);
434 if (header->subcache_size != APR_ALIGN_DEFAULT(header->subcache_size)) {
435 header->subcache_size = APR_ALIGN_DEFAULT(header->subcache_size) -
438 header->subcache_data_offset = ALIGNED_SUBCACHE_SIZE +
440 header->subcache_data_size = header->subcache_size -
441 header->subcache_data_offset;
442 header->index_num = num_idx;
448 "subcache_num = %u", header->subcache_num);
450 "subcache_size = %u", header->subcache_size);
452 "subcache_data_offset = %u", header->subcache_data_offset);
454 "subcache_data_size = %u", header->subcache_data_size);
456 "index_num = %u", header->index_num);
457 /* The header is done, make the caches empty */
458 for (loop = 0; loop < header->subcache_num; loop++) {
459 SHMCBSubcache *subcache = SHMCB_SUBCACHE(header, loop);
485 SHMCBHeader *header = ctx->header;
486 SHMCBSubcache *subcache = SHMCB_MASK(header, id);
491 SHMCB_MASK_DBG(header, id));
498 tryreplace = shmcb_subcache_remove(s, header, subcache, id, idlen);
499 if (shmcb_subcache_store(s, header, subcache, encoded,
506 header->stat_replaced++;
509 header->stat_stores++;
522 SHMCBHeader *header = ctx->header;
523 SHMCBSubcache *subcache = SHMCB_MASK(header, id);
528 SHMCB_MASK_DBG(header, id));
531 rv = shmcb_subcache_retrieve(s, header, subcache, id, idlen,
534 header->stat_retrieves_hit++;
536 header->stat_retrieves_miss++;
547 SHMCBHeader *header = ctx->header;
548 SHMCBSubcache *subcache = SHMCB_MASK(header, id);
553 SHMCB_MASK_DBG(header, id));
559 if (shmcb_subcache_remove(s, header, subcache, id, idlen) == 0) {
560 header->stat_removes_hit++;
563 header->stat_removes_miss++;
576 SHMCBHeader *header = ctx->header;
583 AP_DEBUG_ASSERT(header->subcache_num > 0);
586 * pointer arithmetic. The rest of our logic uses read-only header data so
589 for (loop = 0; loop < header->subcache_num; loop++) {
590 SHMCBSubcache *subcache = SHMCB_SUBCACHE(header, loop);
591 shmcb_subcache_expire(s, header, subcache, now);
606 index_pct = (100 * total) / (header->index_num *
607 header->subcache_num);
608 cache_pct = (100 * cache_total) / (header->subcache_data_size *
609 header->subcache_num);
616 header->subcache_num, header->index_num);
632 header->stat_stores);
634 header->stat_replaced);
636 header->stat_expiries);
638 "<b>%lu</b><br>", header->stat_scrolled);
640 "<b>%lu</b> miss<br>", header->stat_retrieves_hit,
641 header->stat_retrieves_miss);
643 "<b>%lu</b> miss<br>", header->stat_removes_hit,
644 header->stat_removes_miss);
651 ap_rprintf(r, "CacheSubcaches: %d\n", header->subcache_num);
652 ap_rprintf(r, "CacheIndexesPerSubcaches: %d\n", header->index_num);
664 ap_rprintf(r, "CacheStoreCount: %lu\n", header->stat_stores);
665 ap_rprintf(r, "CacheReplaceCount: %lu\n", header->stat_replaced);
666 ap_rprintf(r, "CacheExpireCount: %lu\n", header->stat_expiries);
667 ap_rprintf(r, "CacheDiscardCount: %lu\n", header->stat_scrolled);
668 ap_rprintf(r, "CacheRetrieveHitCount: %lu\n", header->stat_retrieves_hit);
669 ap_rprintf(r, "CacheRetrieveMissCount: %lu\n", header->stat_retrieves_miss);
670 ap_rprintf(r, "CacheRemoveHitCount: %lu\n", header->stat_removes_hit);
671 ap_rprintf(r, "CacheRemoveMissCount: %lu\n", header->stat_removes_miss);
681 SHMCBHeader *header = instance->header;
689 * pointer arithmetic. The rest of our logic uses read-only header data so
692 for (loop = 0; loop < header->subcache_num && rv == APR_SUCCESS; loop++) {
693 SHMCBSubcache *subcache = SHMCB_SUBCACHE(header, loop);
694 rv = shmcb_subcache_iterate(instance, s, userctx, header, subcache,
704 static void shmcb_subcache_expire(server_rec *s, SHMCBHeader *header,
721 new_idx_pos = SHMCB_CYCLIC_INCREMENT(new_idx_pos, 1, header->index_num);
737 header->subcache_data_size);
745 header->stat_expiries += expired;
750 static int shmcb_subcache_store(server_rec *s, SHMCBHeader *header,
761 if (total_len > header->subcache_data_size) {
764 total_len, header->subcache_data_size);
769 shmcb_subcache_expire(s, header, subcache, apr_time_now());
775 if (header->subcache_data_size - subcache->data_used < total_len
776 || subcache->idx_used == header->index_num) {
788 header->index_num);
798 header->subcache_data_size);
801 header->stat_scrolled++;
805 } while (header->subcache_data_size - subcache->data_used < total_len);
821 header->subcache_data_size);
822 shmcb_cyclic_ntoc_memcpy(header->subcache_data_size,
823 SHMCB_DATA(header, subcache), id_offset,
828 header->subcache_data_size);
829 shmcb_cyclic_ntoc_memcpy(header->subcache_data_size,
830 SHMCB_DATA(header, subcache), data_offset,
835 header->index_num);
854 static int shmcb_subcache_retrieve(server_rec *s, SHMCBHeader *header,
876 && shmcb_cyclic_memcmp(header->subcache_data_size,
877 SHMCB_DATA(header, subcache),
887 header->subcache_data_size);
892 shmcb_cyclic_cton_memcpy(header->subcache_data_size,
893 dest, SHMCB_DATA(header, subcache),
901 header->stat_expiries++;
909 pos = SHMCB_CYCLIC_INCREMENT(pos, 1, header->index_num);
917 static int shmcb_subcache_remove(server_rec *s, SHMCBHeader *header,
932 && shmcb_cyclic_memcmp(header->subcache_data_size,
933 SHMCB_DATA(header, subcache),
946 pos = SHMCB_CYCLIC_INCREMENT(pos, 1, header->index_num);
956 SHMCBHeader *header,
986 header->subcache_data_size);
1005 shmcb_cyclic_cton_memcpy(header->subcache_data_size, id,
1006 SHMCB_DATA(header, subcache),
1010 shmcb_cyclic_cton_memcpy(header->subcache_data_size, dest,
1011 SHMCB_DATA(header, subcache),
1025 header->stat_expiries++;
1032 pos = SHMCB_CYCLIC_INCREMENT(pos, 1, header->index_num);