Lines Matching refs:lpc
124 get_valid_victim(lcollection_t *lcol, lprocess_t *lpc) in get_valid_victim() argument
126 if (lpc == NULL || !lcollection_member(lcol, lpc)) in get_valid_victim()
127 lpc = lcol->lcol_lprocess; in get_valid_victim()
132 while (lpc != NULL && lpc->lpc_unscannable != 0) in get_valid_victim()
133 lpc = lpc->lpc_next; in get_valid_victim()
135 return (lpc); in get_valid_victim()
226 unrm_size(lprocess_t *lpc) in unrm_size() argument
228 return (count_pages(lpc->lpc_prpageheader, CP_CLEAR, in unrm_size()
375 lprocess_t *lpc = rfd->rfd_data; in revoke_pagedata() local
377 st_debug(STDL_NORMAL, lpc->lpc_collection, "revoking pagedata for" in revoke_pagedata()
378 " process %d\n", (int)lpc->lpc_pid); in revoke_pagedata()
379 ASSERT(lpc->lpc_pgdata_fd != -1); in revoke_pagedata()
380 lpc->lpc_pgdata_fd = -1; in revoke_pagedata()
469 merge_current_pagedata(lprocess_t *lpc, in merge_current_pagedata() argument
476 if (lpc->lpc_pgdata_fd < 0 || get_pagedata(&pghp, lpc->lpc_pgdata_fd) != in merge_current_pagedata()
481 (int)lpc->lpc_pid); in merge_current_pagedata()
482 if ((lpc->lpc_pgdata_fd = rfd_open(pathbuf, 1, RFD_PAGEDATA, in merge_current_pagedata()
483 revoke_pagedata, lpc, O_RDONLY, 0)) < 0 || in merge_current_pagedata()
484 get_pagedata(&pghp, lpc->lpc_pgdata_fd) != 0) in merge_current_pagedata()
487 (int)lpc->lpc_pid); in merge_current_pagedata()
491 if (cnt != 0 || lpc->lpc_rss != 0) in merge_current_pagedata()
493 (int)lpc->lpc_pid, (unsigned long long)cnt, in merge_current_pagedata()
494 (unsigned long long)lpc->lpc_rss); in merge_current_pagedata()
495 if (lpc->lpc_prpageheader != NULL) { in merge_current_pagedata()
504 mklmapping(&old, lpc->lpc_prpageheader); in merge_current_pagedata()
506 OR_pagedata(lpc->lpc_prpageheader, pghp, &mappings_changed); in merge_current_pagedata()
516 lmapping_dump(lpc->lpc_ignore); in merge_current_pagedata()
522 free(lpc->lpc_prpageheader); in merge_current_pagedata()
525 lpc->lpc_prpageheader = pghp; in merge_current_pagedata()
528 if (cnt != 0 || lpc->lpc_rss != 0) in merge_current_pagedata()
530 (int)lpc->lpc_pid, (unsigned long long)cnt, in merge_current_pagedata()
531 (unsigned long long)lpc->lpc_rss); in merge_current_pagedata()
533 debug("process %d: mappings changed\n", (int)lpc->lpc_pid); in merge_current_pagedata()
535 mappings_changed_cb(lpc); in merge_current_pagedata()
596 unignore_mappings(lprocess_t *lpc) in unignore_mappings() argument
598 lmapping_free(&lpc->lpc_ignore); in unignore_mappings()
602 unignore_referenced_mappings(lprocess_t *lpc) in unignore_referenced_mappings() argument
607 vicaddr = set_prpageheader_cur(&cur, lpc->lpc_prpageheader, NULL, -1); in unignore_referenced_mappings()
611 if (lmapping_remove(&lpc->lpc_ignore, cur.pr_addr, in unignore_referenced_mappings()
632 lprocess_t *vic, *lpc; in scan() local
670 lpc = vic; in scan()
671 while (lpc != NULL && should_run) { in scan()
672 if (merge_current_pagedata(lpc, unignore_mappings) != 0) { in scan()
675 (int)lpc->lpc_pid); in scan()
678 debug("process %d: %llu/%llukB scannable\n", (int)lpc->lpc_pid, in scan()
679 (unsigned long long)(lpc->lpc_unrm = unrm_size(lpc)), in scan()
680 (unsigned long long)lpc->lpc_size); in scan()
681 col_unrm_size += lpc->lpc_unrm = unrm_size(lpc); in scan()
693 unignore_mappings(lpc); in scan()
700 unignore_referenced_mappings(lpc); in scan()
703 lpc = lpc->lpc_next != NULL ? get_valid_victim(lcol, in scan()
704 lpc->lpc_next) : NULL; in scan()
707 lpc = vic; in scan()
709 while (lpc != NULL && should_run) { in scan()
710 if (lpc->lpc_prpageheader != NULL) { in scan()
711 (void) count_pages(lpc->lpc_prpageheader, in scan()
713 if (lpc->lpc_pgdata_fd >= 0) { in scan()
714 if (rfd_close(lpc->lpc_pgdata_fd) != 0) in scan()
717 (int)lpc->lpc_pid, in scan()
718 lpc->lpc_pgdata_fd); in scan()
719 lpc->lpc_pgdata_fd = -1; in scan()
722 lpc = lpc->lpc_next != NULL ? get_valid_victim(lcol, in scan()
723 lpc->lpc_next) : NULL; in scan()
1000 lprocess_t *lpc = rfd->rfd_data; in revoke_xmap() local
1002 debug("revoking xmap for process %d\n", (int)lpc->lpc_pid); in revoke_xmap()
1003 ASSERT(lpc->lpc_xmap_fd != -1); in revoke_xmap()
1004 lpc->lpc_xmap_fd = -1; in revoke_xmap()
1012 lpc_xmap_update(lprocess_t *lpc) in lpc_xmap_update() argument
1017 free(lpc->lpc_xmap); in lpc_xmap_update()
1018 lpc->lpc_xmap = NULL; in lpc_xmap_update()
1019 lpc->lpc_nxmap = -1; in lpc_xmap_update()
1021 if (lpc->lpc_xmap_fd == -1) { in lpc_xmap_update()
1025 (int)lpc->lpc_pid); in lpc_xmap_update()
1026 if ((lpc->lpc_xmap_fd = rfd_open(pathbuf, 1, RFD_XMAP, in lpc_xmap_update()
1027 revoke_xmap, lpc, O_RDONLY, 0)) < 0) in lpc_xmap_update()
1033 if (fstat(lpc->lpc_xmap_fd, &st) != 0) { in lpc_xmap_update()
1035 (void) rfd_close(lpc->lpc_xmap_fd); in lpc_xmap_update()
1036 lpc->lpc_xmap_fd = -1; in lpc_xmap_update()
1040 if ((st.st_size % sizeof (*lpc->lpc_xmap)) != 0) { in lpc_xmap_update()
1042 (void) rfd_close(lpc->lpc_xmap_fd); in lpc_xmap_update()
1043 lpc->lpc_xmap_fd = -1; in lpc_xmap_update()
1047 lpc->lpc_xmap = malloc(st.st_size); in lpc_xmap_update()
1048 if (lpc->lpc_xmap == NULL) { in lpc_xmap_update()
1050 (void) rfd_close(lpc->lpc_xmap_fd); in lpc_xmap_update()
1051 lpc->lpc_xmap_fd = -1; in lpc_xmap_update()
1055 if ((res = pread(lpc->lpc_xmap_fd, lpc->lpc_xmap, st.st_size, 0)) != in lpc_xmap_update()
1057 free(lpc->lpc_xmap); in lpc_xmap_update()
1058 lpc->lpc_xmap = NULL; in lpc_xmap_update()
1067 lpc->lpc_nxmap = st.st_size / sizeof (*lpc->lpc_xmap); in lpc_xmap_update()