Home | History | Annotate | Download | only in ksmutils

Lines Matching refs:kp

62 static int read_pages(struct ksm_pages *kp, pm_map_t **maps, size_t num_maps, uint8_t pr_flags);
63 static void print_pages(struct ksm_pages *kp, uint8_t pr_flags);
64 static void free_pages(struct ksm_pages *kp, uint8_t pr_flags);
81 struct ksm_pages kp;
83 memset(&kp, 0, sizeof(kp));
168 if (read_pages(&kp, maps, num_maps, pr_flags) < 0) {
180 qsort(kp.pages, kp.len, sizeof(*kp.pages), cmp_pages);
182 print_pages(&kp, pr_flags);
185 free_pages(&kp, pr_flags);
190 static int read_pages(struct ksm_pages *kp, pm_map_t **maps, size_t num_maps, uint8_t pr_flags) {
262 for (k = 0; k < kp->len; k++) {
263 if (kp->pages[k].hash == hash) break;
266 if (k == kp->len) {
267 if (kp->len == kp->size) {
268 struct ksm_page *tmp = realloc(kp->pages,
269 (kp->size + GROWTH_FACTOR) * sizeof(*kp->pages));
277 kp->pages = tmp;
278 kp->size += GROWTH_FACTOR;
280 rc = pm_kernel_count(ker, PM_PAGEMAP_PFN(pagemap[j]), &kp->pages[kp->len].count);
286 kp->pages[kp->len].hash = hash;
287 kp->pages[kp->len].pattern =
290 kp->len++;
293 cur_page = &kp->pages[k];
331 for (i = 0; i < kp->len; i++) {
332 free(kp->pages[i].vaddr);
335 free(kp->pages);
344 static void print_pages(struct ksm_pages *kp, uint8_t pr_flags) {
349 for (i = 0; i < kp->len; i++) {
350 if (kp->pages[i].pattern != NO_PATTERN) {
351 printf("0x%02x byte pattern: ", kp->pages[i].pattern);
353 printf("KSM CRC 0x%08x:", kp->pages[i].hash);
355 printf(" %4zu page", kp->pages[i].vaddr_count);
356 if (kp->pages[i].vaddr_count > 1) {
360 printf(" (%" PRIu64 " reference", kp->pages[i].count);
361 if (kp->pages[i].count > 1) {
370 while (j < kp->pages[i].vaddr_len) {
372 for (k = 0; k < 8 && j < kp->pages[i].vaddr_len; k++, j++) {
373 printf(" 0x%08lx", kp->pages[i].vaddr[j].addr);
376 kp->pages[i].vaddr[j].num_pages);
379 kp->pages[i].vaddr[j].pid);
389 static void free_pages(struct ksm_pages *kp, uint8_t pr_flags) {
393 for (i = 0; i < kp->len; i++) {
394 free(kp->pages[i].vaddr);
397 free(kp->pages);