Print this page
patch lower-case-segops


1383 
1384 /*
1385  * Mark 'pfn' in the bitmap
1386  */
1387 void
1388 dump_page(pfn_t pfn)
1389 {
1390         pgcnt_t bitnum;
1391 
1392         if ((bitnum = dump_pfn_to_bitnum(pfn)) != (pgcnt_t)-1) {
1393                 if (!BT_TEST(dumpcfg.bitmap, bitnum)) {
1394                         dumphdr->dump_npages++;
1395                         BT_SET(dumpcfg.bitmap, bitnum);
1396                 }
1397         }
1398         dump_timeleft = dump_timeout;
1399 }
1400 
1401 /*
1402  * Dump the <as, va, pfn> information for a given address space.
1403  * SEGOP_DUMP() will call dump_addpage() for each page in the segment.
1404  */
1405 static void
1406 dump_as(struct as *as)
1407 {
1408         struct seg *seg;
1409 
1410         AS_LOCK_ENTER(as, &as->a_lock, RW_READER);
1411         for (seg = AS_SEGFIRST(as); seg; seg = AS_SEGNEXT(as, seg)) {
1412                 if (seg->s_as != as)
1413                         break;
1414                 if (seg->s_ops == NULL)
1415                         continue;
1416                 SEGOP_DUMP(seg);
1417         }
1418         AS_LOCK_EXIT(as, &as->a_lock);
1419 
1420         if (seg != NULL)
1421                 cmn_err(CE_WARN, "invalid segment %p in address space %p",
1422                     (void *)seg, (void *)as);
1423 }
1424 
1425 static int
1426 dump_process(pid_t pid)
1427 {
1428         proc_t *p = sprlock(pid);
1429 
1430         if (p == NULL)
1431                 return (-1);
1432         if (p->p_as != &kas) {
1433                 mutex_exit(&p->p_lock);
1434                 dump_as(p->p_as);
1435                 mutex_enter(&p->p_lock);
1436         }




1383 
1384 /*
1385  * Mark 'pfn' in the bitmap
1386  */
1387 void
1388 dump_page(pfn_t pfn)
1389 {
1390         pgcnt_t bitnum;
1391 
1392         if ((bitnum = dump_pfn_to_bitnum(pfn)) != (pgcnt_t)-1) {
1393                 if (!BT_TEST(dumpcfg.bitmap, bitnum)) {
1394                         dumphdr->dump_npages++;
1395                         BT_SET(dumpcfg.bitmap, bitnum);
1396                 }
1397         }
1398         dump_timeleft = dump_timeout;
1399 }
1400 
1401 /*
1402  * Dump the <as, va, pfn> information for a given address space.
1403  * segop_dump() will call dump_addpage() for each page in the segment.
1404  */
1405 static void
1406 dump_as(struct as *as)
1407 {
1408         struct seg *seg;
1409 
1410         AS_LOCK_ENTER(as, &as->a_lock, RW_READER);
1411         for (seg = AS_SEGFIRST(as); seg; seg = AS_SEGNEXT(as, seg)) {
1412                 if (seg->s_as != as)
1413                         break;
1414                 if (seg->s_ops == NULL)
1415                         continue;
1416                 segop_dump(seg);
1417         }
1418         AS_LOCK_EXIT(as, &as->a_lock);
1419 
1420         if (seg != NULL)
1421                 cmn_err(CE_WARN, "invalid segment %p in address space %p",
1422                     (void *)seg, (void *)as);
1423 }
1424 
1425 static int
1426 dump_process(pid_t pid)
1427 {
1428         proc_t *p = sprlock(pid);
1429 
1430         if (p == NULL)
1431                 return (-1);
1432         if (p->p_as != &kas) {
1433                 mutex_exit(&p->p_lock);
1434                 dump_as(p->p_as);
1435                 mutex_enter(&p->p_lock);
1436         }