Print this page
patch lower-case-segops


 645 {
 646         ksegtbl_entry_t *ste = &kseg_table[0];
 647         struct seg *tseg;
 648 
 649         for (; ste->st_seg; ste++) {
 650                 tseg = (ste->st_addrtype == KSEG_PTR_ADDR) ?
 651                     *ste->st_seg : (struct seg *)ste->st_seg;
 652 
 653                 if (seg == tseg)
 654                         return (ste);
 655         }
 656 
 657         return ((ksegtbl_entry_t *)NULL);
 658 }
 659 
 660 
 661 /*
 662  * Count pages within each kernel segment; call cpr_sparse_seg_check()
 663  * to find out whether a sparsely filled segment needs special
 664  * treatment (e.g. kvseg).
 665  * Todo: A "SEGOP_CPR" like SEGOP_DUMP should be introduced, the cpr
 666  *       module shouldn't need to know segment details like if it is
 667  *       sparsely filled or not (makes kseg_table obsolete).
 668  */
 669 pgcnt_t
 670 cpr_count_seg_pages(int mapflag, bitfunc_t bitfunc)
 671 {
 672         struct seg *segp;
 673         pgcnt_t pages;
 674         ksegtbl_entry_t *ste;
 675 
 676         pages = 0;
 677         for (segp = AS_SEGFIRST(&kas); segp; segp = AS_SEGNEXT(&kas, segp)) {
 678                 if (ste = cpr_sparse_seg_check(segp)) {
 679                         pages += (ste->st_fcn)(mapflag, bitfunc, segp);
 680                 } else {
 681                         pages += cpr_count_pages(segp->s_base,
 682                             segp->s_size, mapflag, bitfunc, DBG_SHOWRANGE);
 683                 }
 684         }
 685 




 645 {
 646         ksegtbl_entry_t *ste = &kseg_table[0];
 647         struct seg *tseg;
 648 
 649         for (; ste->st_seg; ste++) {
 650                 tseg = (ste->st_addrtype == KSEG_PTR_ADDR) ?
 651                     *ste->st_seg : (struct seg *)ste->st_seg;
 652 
 653                 if (seg == tseg)
 654                         return (ste);
 655         }
 656 
 657         return ((ksegtbl_entry_t *)NULL);
 658 }
 659 
 660 
 661 /*
 662  * Count pages within each kernel segment; call cpr_sparse_seg_check()
 663  * to find out whether a sparsely filled segment needs special
 664  * treatment (e.g. kvseg).
 665  * Todo: A "segop_cpr" like segop_dump should be introduced, the cpr
 666  *       module shouldn't need to know segment details like if it is
 667  *       sparsely filled or not (makes kseg_table obsolete).
 668  */
 669 pgcnt_t
 670 cpr_count_seg_pages(int mapflag, bitfunc_t bitfunc)
 671 {
 672         struct seg *segp;
 673         pgcnt_t pages;
 674         ksegtbl_entry_t *ste;
 675 
 676         pages = 0;
 677         for (segp = AS_SEGFIRST(&kas); segp; segp = AS_SEGNEXT(&kas, segp)) {
 678                 if (ste = cpr_sparse_seg_check(segp)) {
 679                         pages += (ste->st_fcn)(mapflag, bitfunc, segp);
 680                 } else {
 681                         pages += cpr_count_pages(segp->s_base,
 682                             segp->s_size, mapflag, bitfunc, DBG_SHOWRANGE);
 683                 }
 684         }
 685