Print this page
patch lower-case-segops


 643 
 644 /*
 645  * Mark 'pfn' in the bitmap
 646  */
 647 void
 648 dump_page(pfn_t pfn)
 649 {
 650         pgcnt_t bitnum;
 651 
 652         if ((bitnum = dump_pfn_to_bitnum(pfn)) != (pgcnt_t)-1) {
 653                 if (!BT_TEST(dumpcfg.bitmap, bitnum)) {
 654                         dumphdr->dump_npages++;
 655                         BT_SET(dumpcfg.bitmap, bitnum);
 656                 }
 657         }
 658         dump_timeleft = dump_timeout;
 659 }
 660 
 661 /*
 662  * Dump the <as, va, pfn> information for a given address space.
 663  * SEGOP_DUMP() will call dump_addpage() for each page in the segment.
 664  */
 665 static void
 666 dump_as(struct as *as)
 667 {
 668         struct seg *seg;
 669 
 670         AS_LOCK_ENTER(as, &as->a_lock, RW_READER);
 671         for (seg = AS_SEGFIRST(as); seg; seg = AS_SEGNEXT(as, seg)) {
 672                 if (seg->s_as != as)
 673                         break;
 674                 if (seg->s_ops == NULL)
 675                         continue;
 676                 SEGOP_DUMP(seg);
 677         }
 678         AS_LOCK_EXIT(as, &as->a_lock);
 679 
 680         if (seg != NULL)
 681                 cmn_err(CE_WARN, "invalid segment %p in address space %p",
 682                     (void *)seg, (void *)as);
 683 }
 684 
 685 static int
 686 dump_process(pid_t pid)
 687 {
 688         proc_t *p = sprlock(pid);
 689 
 690         if (p == NULL)
 691                 return (-1);
 692         if (p->p_as != &kas) {
 693                 mutex_exit(&p->p_lock);
 694                 dump_as(p->p_as);
 695                 mutex_enter(&p->p_lock);
 696         }




 643 
 644 /*
 645  * Mark 'pfn' in the bitmap
 646  */
 647 void
 648 dump_page(pfn_t pfn)
 649 {
 650         pgcnt_t bitnum;
 651 
 652         if ((bitnum = dump_pfn_to_bitnum(pfn)) != (pgcnt_t)-1) {
 653                 if (!BT_TEST(dumpcfg.bitmap, bitnum)) {
 654                         dumphdr->dump_npages++;
 655                         BT_SET(dumpcfg.bitmap, bitnum);
 656                 }
 657         }
 658         dump_timeleft = dump_timeout;
 659 }
 660 
 661 /*
 662  * Dump the <as, va, pfn> information for a given address space.
 663  * segop_dump() will call dump_addpage() for each page in the segment.
 664  */
 665 static void
 666 dump_as(struct as *as)
 667 {
 668         struct seg *seg;
 669 
 670         AS_LOCK_ENTER(as, &as->a_lock, RW_READER);
 671         for (seg = AS_SEGFIRST(as); seg; seg = AS_SEGNEXT(as, seg)) {
 672                 if (seg->s_as != as)
 673                         break;
 674                 if (seg->s_ops == NULL)
 675                         continue;
 676                 segop_dump(seg);
 677         }
 678         AS_LOCK_EXIT(as, &as->a_lock);
 679 
 680         if (seg != NULL)
 681                 cmn_err(CE_WARN, "invalid segment %p in address space %p",
 682                     (void *)seg, (void *)as);
 683 }
 684 
 685 static int
 686 dump_process(pid_t pid)
 687 {
 688         proc_t *p = sprlock(pid);
 689 
 690         if (p == NULL)
 691                 return (-1);
 692         if (p->p_as != &kas) {
 693                 mutex_exit(&p->p_lock);
 694                 dump_as(p->p_as);
 695                 mutex_enter(&p->p_lock);
 696         }