[ Next Article | Previous Article | Book Contents | Library Home | Legal | Search ]
Kernel Extensions and Device Support Programming Concepts

System Table Subcommands for the KDB Kernel Debugger and kdb Command


var Subcommand

The var subcommand prints the var structure and the system configuration of the machine.

Example

   KDB(7)> var print var information
   var_hdr.var_vers..... 00000000 var_hdr.var_gen...... 00000045
   var_hdr.var_size..... 00000030
   v_iostrun............ 00000001 v_leastpriv.......... 00000000
   v_autost............. 00000001 v_memscrub........... 00000000
   v_maxup..............      200
   v_bufhw..............       20 v_mbufhw.............    32768
   v_maxpout............        0 v_minpout............        0
   v_clist..............    16384 v_fullcore........... 00000000
   v_ncpus..............        8 v_ncpus_cfg..........        8
   v_initlvl............  0  0  0  0
   v_lock...............      200 ve_lock.............. 00D3FA18 flox+003200
   v_file...............     2303 ve_file.............. 0042EFE8 file+01AFD0
   v_proc...............   131072 ve_proc.............. E305D000 proc+05D000
   vb_proc.............. E3000000 proc+000000
   v_thread.............   262144 ve_thread............ E6046F80 thread+046F80
   vb_thread............ E6000000 thread+000000
   
   VMM Tunable Variables:
   
   minfree..............      120 maxfree..............      128
   minperm..............    12872 maxperm..............    51488
   pfrsvdblks...........    13076
   (7)> more (^C to quit) ? continue
   npswarn..............      512 npskill..............      128
   minpgahead...........        2 maxpgahead...........        8
   maxpdtblks...........        4 numsched.............        4
   htabscale............ FFFFFFFF aptscale............. 00000000
   pd_npages............ 00080000

   _SYSTEM_CONFIGURATION:
   
   architecture..... 00000002 POWER_PC
   implementation... 00000010 POWER_604
   version.......... 00040004 
   width............ 00000020 ncpus............ 00000008
   cache_attrib..... 00000001 CACHE separate I and D
   icache_size...... 00004000 dcache_size...... 00004000
   icache_asc....... 00000004 dcache_asc....... 00000004
   icache_block..... 00000020 dcache_block..... 00000020
   icache_line...... 00000040 dcache_line...... 00000040
   L2_cache_size.... 00100000 L2_cache_asc..... 00000001
   tlb_attrib....... 00000001 TLB separate I and D
   itlb_size........ 00000040 dtlb_size........ 00000040
   itlb_asc......... 00000002 dtlb_asc......... 00000002
   priv_lck_cnt..... 00000000 prob_lck_cnt..... 00000000
   resv_size........ 00000020 rtc_type......... 00000002
   virt_alias....... 00000000 cach_cong........ 00000000
   model_arch....... 00000001 model_impl....... 00000002
   Xint............. 000000A0 Xfrac............ 00000003

devsw Subcommand

The dev subcommand shows the device switch table ala lldb.

Example

   KDB(0)> dev
   Slot address 054F5040
   MAJ#001  OPEN            CLOSE           READ            WRITE
            .syopen         .nulldev        .syread         .sywrite
            IOCTL           STRATEGY        TTY             SELECT
            .syioctl        .nodev          00000000        .syselect
            CONFIG          PRINT           DUMP            MPX
            .nodev          .nodev          .nodev          .nodev
            REVOKE          DSDPTR          SELPTR          OPTS
            .nodev          00000000        00000000        00000002
      
   Slot address 054F5080
   MAJ#002  OPEN            CLOSE           READ            WRITE
            .nulldev        .nulldev        .mmread         .mmwrite
            IOCTL           STRATEGY        TTY             SELECT
            .nodev          .nodev          00000000        .nodev
            CONFIG          PRINT           DUMP            MPX
            .nodev          .nodev          .nodev          .nodev
            REVOKE          DSDPTR          SELPTR          OPTS
            .nodev          00000000        00000000        00000002
   
   (0)> more (^C to quit) ? ^C quit
   KDB(0)> devsw 4 device switch of major 0x4
   Slot address 05640100
   MAJ#004  OPEN            CLOSE           READ            WRITE
            .conopen        .conclose       .conread        .conwrite       
            IOCTL           STRATEGY        TTY             SELECT
            .conioctl       .nodev          00000000        .conselect      
            CONFIG          PRINT           DUMP            MPX
            .conconfig      .nodev          .nodev          .conmpx         
            REVOKE          DSDPTR          SELPTR          OPTS
            .conrevoke      00000000        00000000        00000006        

timer Subcommand

The trb subcommand displays timer request block ala lldb. Subcommand option are selected thru the menu, or directly entered.

Example

   KDB(4)> trb timer request block subcommand usage
   Usage: trb [CPU selector] [1-9]
    CPU selector is '*' for all CPUs, 'cpu n' for CPU n, default is current CPU
   
   Timer Request Block Information Menu
     1. TRB Maintenance Structure - Routine Addresses
     2. System TRB
     3. Thread Specified TRB
     4. Current Thread TRB's
     5. Address Specified TRB
     6. Active TRB Chain
     7. Free TRB Chain
     8. Clock Interrupt Handler Information
     9. Current System Time - System Timer Constants
   Please enter an option number: <CR/LF>
   KDB(4)> trb * 6 print all active timer request blocks
   
   CPU #0 Active List
             CPU  PRI       ID    SECS     NSECS     DATA FUNC
   05689080 0000 0005 FFFFFFFE 00003BBA 23C3B080 05689080 sys_timer+000000
   05689600 0000 0003 FFFFFFFE 00003BBA 27DAC680 00000000 pffastsched+000000
   05689580 0000 0003 FFFFFFFE 00003BBA 2911BD80 00000000 pfslowsched+000000
   0B05A600 0000 0005 00001751 00003BBA 2ADBC480 0B05A618 rtsleep_end+000000
   05689500 0000 0003 FFFFFFFE 00003BBB 23186B00 00000000 if_slowsched+000000
   0B05A480 0000 0003 FFFFFFFE 00003BBF 2D5B4980 00000000 01B633F0
   
   CPU #1 Active List
             CPU  PRI       ID    SECS     NSECS     DATA FUNC
   05689100 0001 0005 FFFFFFFE 00003BBA 23C38E80 05689100 sys_timer+000000
   
   CPU #2 Active List
             CPU  PRI       ID    SECS     NSECS     DATA FUNC
   05689180 0002 0005 FFFFFFFE 00003BBA 23C37380 05689180 sys_timer+000000
   0B05A500 0002 0005 00001525 00003BE6 0CFF9500 0B05A518 rtsleep_end+000000
   
   CPU #3 Active List
             CPU  PRI       ID    SECS     NSECS     DATA FUNC
   05689200 0003 0005 FFFFFFFE 00003BBA 23C39F80 05689200 sys_timer+000000
   (4)> more (^C to quit) ? continue
   05689880 0003 0005 00000003 00003BBB 01B73180 00000000 sched_timer_post+000000
   0B05A580 0003 0005 00000001 00003BBB 0BCA7300 0000000E interval_end+000000
   
   CPU #4 Active List
             CPU  PRI       ID    SECS     NSECS     DATA FUNC
   05689280 0004 0005 FFFFFFFE 00003BBA 23C3A980 05689280 sys_timer+000000
   
   CPU #5 Active List
             CPU  PRI       ID    SECS     NSECS     DATA FUNC
   05689300 0005 0005 FFFFFFFE 00003BBA 23C39800 05689300 sys_timer+000000
   05689780 0005 0005 FFFFFFFF 00003BBF 1B052C00 05C62C40 01ADD6FC
   
   CPU #6 Active List
             CPU  PRI       ID    SECS     NSECS     DATA FUNC
   05689380 0006 0005 FFFFFFFE 00003BBA 23C3C200 05689380 sys_timer+000000
   
   CPU #7 Active List
             CPU  PRI       ID    SECS     NSECS     DATA FUNC
   05689400 0007 0005 FFFFFFFE 00003BBA 23C38180 05689400 sys_timer+000000
   05689680 0007 0003 FFFFFFFE 00003BBA 2DDD3480 00000000 threadtimer+000000
   KDB(4)> trb cpu 1 6 print active list of processor 1
   CPU #1 TRB #1 on Active List
    Timer address......................05689100
    trb->to_next.......................00000000
    trb->knext.........................00000000
    trb->kprev.........................00000000
    Owner id (-1 for dev drv)..........FFFFFFFE
    Owning processor...................00000001
    Timer flags........................00000013   PENDING ACTIVE INCINTERVAL
    trb->timerid.......................00000000
    trb->eventlist.....................FFFFFFFF
    trb->timeout.it_interval.tv_sec....00000000
    trb->timeout.it_interval.tv_nsec...00000000
    Next scheduled timeout (secs)......00003BBA
    Next scheduled timeout (nanosecs)..23C38E80
    Completion handler.................000B3BA4  sys_timer+000000
    Completion handler data............05689100
    Int. priority .....................00000005
    Timeout function...................00000000  00000000
    KDB(4)>

slk and clk Subcommands

The slk and clk subcommands print the specified simple or complex lock. If instrumentation is set at boot time, intrumentation information are displayed.

Example

   KDB(1)> slk B69F2DF0 print simple lock
   Simple Lock Instrumented: vmmdseg+69F2DF0
                     _slock: 00011C99  thread_owner: 0011C99
   .....acquisitions number:       16
   ...........misses number:        0
   ..sleeping misses number:        0
   ................lockname: 00FA097D  flox+206165
   ...link register of lock: 0007CFCC  .pfget+00023C
   ..........caller of lock: 00011C99
   ..........cpu id of lock: 00000002
   .link register of unlock: 0007D8EC  .pfget+000B5C
   ........caller of unlock: 00011C99
   ........cpu id of unlock: 00000002
   KDB(0)> clk ndd_lock print complex lock
   Complex Lock Instrumented: ndd_lock
   ...._clock.status: 20001553 _clock.flags 0000 _clock.rdepth 0000
   ...........status: WANT_WRITE
   .....thread_owner: 0001553
   .....acquisitions number:        2
   ...........misses number:        0
   ..sleeping misses number:        0
   ................lockname: 00D2FFFF  file+8BDFE7
   ...link register of lock: 00047874  .ns_init+00002C
   ..........caller of lock: 00000003
   ..........cpu id of lock: 00000000
   .link register of unlock: 00000000  00000000
   ........caller of unlock: 00000000
   ........cpu id of unlock: 00000000
   KDB(1)>

iplcb Subcommand

The ipl subcommand prints processor info tables, or the specified one.

Example

   KDB(4)> ipl * print ipl control blocks
            INDEX  PHYS_ID INT_AREA ARCHITEC IMPLEMEN  VERSION
   
   0038ECD0     0 00000000 FF100000 00000002 00000008 00010005 
   0038ED98     1 00000001 FF100080 00000002 00000008 00010005 
   0038EE60     2 00000002 FF100100 00000002 00000008 00010005 
   0038EF28     3 00000003 FF100180 00000002 00000008 00010005 
   0038EFF0     4 00000004 FF100200 00000002 00000008 00010005 
   0038F0B8     5 00000005 FF100280 00000002 00000008 00010005 
   0038F180     6 00000006 FF100300 00000002 00000008 00010005 
   0038F248     7 00000007 FF100380 00000002 00000008 00010005 
   KDB(4)> ipl print current processor information
   
   Processor Info 4 [0038EFF0]
   
   num_of_structs.........00000008 index..................00000004
   struct_size............000000C8 per_buc_info_offset....0001D5D0
   proc_int_area..........FF100200 proc_int_area_size.....00000010
   processor_present......00000001 test_run...............0000006A
   test_stat..............00000000 link...................00000000
   link_address...........00000000 phys_id................00000004
   architecture...........00000002 implementation.........00000008
   version................00010005 width..................00000020
   cache_attrib...........00000003 coherency_size.........00000020
   resv_size..............00000020 icache_block...........00000020
   dcache_block...........00000020 icache_size............00008000
   dcache_size............00008000 icache_line............00000040
   dcache_line............00000040 icache_asc.............00000008
   dcache_asc.............00000008 L2_cache_size..........00100000
   L2_cache_asc...........00000001 tlb_attrib.............00000003
   itlb_size..............00000100 dtlb_size..............00000100
   itlb_asc...............00000002 dtlb_asc...............00000002
   slb_attrib.............00000000 islb_size..............00000000
   dslb_size..............00000000 islb_asc...............00000000
   (4)> more (^C to quit) ? continue 
   dslb_asc...............00000000 priv_lck_cnt...........00000000
   prob_lck_cnt...........00000000 rtc_type...............00000001
   rtcXint................00000000 rtcXfrac...............00000000
   busCfreq_HZ............00000000 tbCfreq_HZ.............00000000
   
   System info [0038E534]
   num_of_procs...........00000008 coherency_size.........00000020
   resv_size..............00000020 arb_cr_addr............00000000
   phys_id_reg_addr.......00000000 num_of_bsrr............00000000
   bsrr_addr..............00000000 tod_type...............00000000
   todr_addr..............FF0000C0 rsr_addr...............FF62006C
   pksr_addr..............FF620064 prcr_addr..............FF620060
   sssr_addr..............FF001000 sir_addr...............FF100000
   scr_addr...............00000000 dscr_addr..............00000000
   nvram_size.............00022000 nvram_addr.............FF600000
   vpd_rom_addr...........00000000 ipl_rom_size...........00100000
   ipl_rom_addr...........07F00000 g_mfrr_addr............FF107F80
   g_tb_addr..............00000000 g_tb_type..............00000000
   g_tb_mult..............00000000 SP_Error_Log_Table.....0001C000
   pcccr_addr.............00000000 spocr_addr.............FF620068
   pfeivr_addr............FF00100C access_id_waddr........00000000
   loc_waddr..............00000000 access_id_raddr........00000000
   (4)> more (^C to quit) ? continue 
   loc_raddr..............00000000 architecture...........00000001
   implementation.........00000002 pkg_descriptor.........rs6ksmp
   KDB(4)> 

trace Subcommand

This displays data in the kernel trace buffers. Data is entered into these buffers via the shell subcommand "trace", if the shell subcommand has not been invoked prior to using the debugger subcommand then the trace buffers will be empty.

A search facility has been added to trace which allows specification of certain search criteria which will be used to restrict the set of displayed trace entries. The subcommand line to trace now has the form:

trace [-h] [hook[:subhook]]... [#data]... [-c channel]

Where:

-h
displays the trace headers, which are trace driver data structures.
-c
selects the channel number from the subcommand line, otherwise it will be prompted for.

The trace subcommand displays the contents of the specified channel, based on any search criteria which was entered on the subcommand line.

Example

   KDB(0)> trace -c 0 1b0 1b1 1b2 1b3 1b4 1b5 1b6 1b7 1b8 1b9
		  trace VMM hooks only
   Trace Channel 0  (253 entries)
   Current queue starts at 0x0A919000 and ends at 0x0A939000
   Current entry is #128 of 128 at 0x0A92CDB4
   
      Hook ID: VMM_DELETE (0x000001B1)    Hook Type: HKTY_GT (0x0000000E)
      ThreadIdent: 0x0000ECE5
      Subhook ID/HookData: 0x0000
      D0: 0x0000DD1B
      D1: 0xA0801020
      D2: 0x000000D3
      D3: 0x00019AC0
      D4: 0x00000000
   Current queue starts at 0x0A919000 and ends at 0x0A939000
   Current entry is #127 of 128 at 0x0A92CD84
   
      Hook ID: VMM_DELETE (0x000001B1)    Hook Type: HKTY_GT (0x0000000E)
      ThreadIdent: 0x0000ECE5
      Subhook ID/HookData: 0x0000
      D0: 0x0000DD1B
      D1: 0xA0801020
      D2: 0x000000D6
      D3: 0x0001BF3A
   (0)> more (^C to quit) ? continue 
      D4: 0x00000000
   Current queue starts at 0x0A919000 and ends at 0x0A939000
   Current entry is #126 of 128 at 0x0A92CD04
   
      Hook ID: VMM_DELETE (0x000001B1)    Hook Type: HKTY_GT (0x0000000E)
      ThreadIdent: 0x0000ECE5
      Subhook ID/HookData: 0x0000
      D0: 0x0000DD1B
      D1: 0xA0801020
      D2: 0x000000D8
      D3: 0x00019AA2
      D4: 0x00000000
   Current queue starts at 0x0A919000 and ends at 0x0A939000
   Current entry is #125 of 128 at 0x0A92CC74
   
      Hook ID: VMM_DELETE (0x000001B1)    Hook Type: HKTY_GT (0x0000000E)
      ThreadIdent: 0x0000ECE5
      Subhook ID/HookData: 0x0000
      D0: 0x0000DD1B
      D1: 0xA0801020
      D2: 0x000000D7
      D3: 0x0001A643
   (0)> more (^C to quit) ? continue 
      D4: 0x00000000
   Current queue starts at 0x0A919000 and ends at 0x0A939000
   Current entry is #124 of 128 at 0x0A92CBF4
   
      Hook ID: VMM_DELETE (0x000001B1)    Hook Type: HKTY_GT (0x0000000E)
      ThreadIdent: 0x0000ECE5
      Subhook ID/HookData: 0x0000
      D0: 0x0000DD1B
      D1: 0xA0801020
      D2: 0x000000BA
      D3: 0x0001A947
      D4: 0x00000000
   Current queue starts at 0x0A919000 and ends at 0x0A939000
   Current entry is #123 of 128 at 0x0A92CBD4
   
      Hook ID: VMM_GETPARENT (0x000001B6)    Hook Type: HKTY_GT (0x0000000E)
      ThreadIdent: 0x0000CE27
      Subhook ID/HookData: 0x0000
      D0: 0x000023A4
      D1: 0xA0801020
      D2: 0x000000E0
      D3: 0x0001D42E
   (0)> more (^C to quit) ? continue 
      D4: 0x00000000
   Current queue starts at 0x0A919000 and ends at 0x0A939000
   Current entry is #122 of 128 at 0x0A92CBB4
   
      Hook ID: VMM (0x000001B0)    Hook Type: HKTY_GT (0x0000000E)
      ThreadIdent: 0x0000CE27
      Subhook ID/HookData: 0x0000
      D0: 0x000023A4
      D1: 0xA0801020
      D2: 0x000000E0
      D3: 0x0001D42E
      D4: 0x00000000
   Current queue starts at 0x0A919000 and ends at 0x0A939000
   Current entry is #121 of 128 at 0x0A92CB94
   
      Hook ID: VMM_DELETE (0x000001B1)    Hook Type: HKTY_GT (0x0000000E)
      ThreadIdent: 0x0000ECE5
      Subhook ID/HookData: 0x0000
      D0: 0x0000DD1B
      D1: 0xA0801020
      D2: 0x000000B9
      D3: 0x000181B4
   ...
   
      Hook ID: VMM_PGEXCT (0x000001B2)    Hook Type: HKTY_GT (0x0000000E)
      ThreadIdent: 0x000114ED
      Subhook ID/HookData: 0x0000
      D0: 0x00009D93
      D1: 0xA1801000
      D2: 0x0000FF99
      D3: 0x00000000
   (0)> more (^C to quit) ? continue 
      D4: 0x00000000
   
   End of Trace

[ Next Article | Previous Article | Book Contents | Library Home | Legal | Search ]