| 1 | #!/bin/ksh | 
|---|
| 2 | # IBM_PROLOG_BEGIN_TAG | 
|---|
| 3 | # This is an automatically generated prolog. | 
|---|
| 4 | # | 
|---|
| 5 | # | 
|---|
| 6 | # | 
|---|
| 7 | # Licensed Materials - Property of IBM | 
|---|
| 8 | # | 
|---|
| 9 | # (C) COPYRIGHT International Business Machines Corp. 2001,2006 | 
|---|
| 10 | # All Rights Reserved | 
|---|
| 11 | # | 
|---|
| 12 | # US Government Users Restricted Rights - Use, duplication or | 
|---|
| 13 | # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. | 
|---|
| 14 | # | 
|---|
| 15 | # IBM_PROLOG_END_TAG | 
|---|
| 16 | # @(#)20 1.6.1.2 src/avs/fs/mmfs/ts/admin/mmdumpkthreads.sh, mmfs, avs_rgpfs24, rgpfs24s007a 10/19/06 18:09:18 | 
|---|
| 17 | ########################################################################## | 
|---|
| 18 | # | 
|---|
| 19 | #  Dump information about the kernel threads. | 
|---|
| 20 | # | 
|---|
| 21 | #  Usage:  mmdumpkthreads [dump [kernelfile]] | 
|---|
| 22 | # | 
|---|
| 23 | #  where | 
|---|
| 24 | #    dump         is the system image file. | 
|---|
| 25 | # | 
|---|
| 26 | #    kernelfile   is a file with the kernel symbol definititions. | 
|---|
| 27 | # | 
|---|
| 28 | ########################################################################## | 
|---|
| 29 |  | 
|---|
| 30 | sourceFile="mmdumpkthreads.sh" | 
|---|
| 31 | [[ -n $DEBUG || -n $DEBUGmmdumpkthreads ]] && set -x | 
|---|
| 32 |  | 
|---|
| 33 | crash=/usr/sbin/crash | 
|---|
| 34 | kdb=/usr/sbin/kdb | 
|---|
| 35 | lcrash=/sbin/lcrash | 
|---|
| 36 | osName=$(/bin/uname -s) | 
|---|
| 37 | if [[ -x $SHARKCLONEROOT/kernext/gpl-linux/kdump ]] | 
|---|
| 38 | then | 
|---|
| 39 | kdump=$SHARKCLONEROOT/kernext/gpl-linux/kdump | 
|---|
| 40 | elif [[ -x /usr/lpp/mmfs/src/gpl-linux/kdump ]] | 
|---|
| 41 | then | 
|---|
| 42 | kdump=/usr/lpp/mmfs/src/gpl-linux/kdump | 
|---|
| 43 | elif [[ -x /usr/lpp/mmfs/kernext/gpl-linux/kdump ]] | 
|---|
| 44 | then | 
|---|
| 45 | kdump=/usr/lpp/mmfs/kernext/gpl-linux/kdump | 
|---|
| 46 | fi | 
|---|
| 47 |  | 
|---|
| 48 | if [[ $1 = '-?' || $1 = '-h' || $1 = '--help' || $1 = '--' ]] | 
|---|
| 49 | then | 
|---|
| 50 | print -u2 "Usage:  mmdumpkthreads [dump [kernelfile]]" | 
|---|
| 51 | exit 1 | 
|---|
| 52 | fi | 
|---|
| 53 |  | 
|---|
| 54 | if [[ -x $lcrash ]] | 
|---|
| 55 | then                               # Linux lcrash debugger | 
|---|
| 56 |  | 
|---|
| 57 | print "task"  |  $lcrash                                 |      \ | 
|---|
| 58 | /bin/awk '                                                    \ | 
|---|
| 59 | /^\s*0x[a-f0-9]+/ {                                         \ | 
|---|
| 60 | print "task ", $1;                                        \ | 
|---|
| 61 | print "bt ", $1;                                          \ | 
|---|
| 62 | }                                                           \ | 
|---|
| 63 | END {                                                       \ | 
|---|
| 64 | print "quit";                                             \ | 
|---|
| 65 | }                                                           \ | 
|---|
| 66 | '                                                      |      \ | 
|---|
| 67 | $lcrash | 
|---|
| 68 |  | 
|---|
| 69 | elif [[ $osName = Linux ]] | 
|---|
| 70 | then | 
|---|
| 71 | ps axuwww | 
|---|
| 72 | [[ $kdump != "" ]] && print "bta" | $kdump /var/mmfs/tmp/complete.map.latest | 
|---|
| 73 | elif [[ -x $crash ]] | 
|---|
| 74 | then                               # AIX pre-rel5 crash debugger | 
|---|
| 75 |  | 
|---|
| 76 | print "th"  |  $crash $1 $2 2>/dev/null                  |      \ | 
|---|
| 77 | /usr/bin/awk '                                                \ | 
|---|
| 78 | /^[ ]*[0-9]+ / {                                            \ | 
|---|
| 79 | print "th", $1;                                           \ | 
|---|
| 80 | print "t -k", $1;                                         \ | 
|---|
| 81 | }                                                           \ | 
|---|
| 82 | '                                                      |      \ | 
|---|
| 83 | $crash $1 $2 2> /dev/null | 
|---|
| 84 |  | 
|---|
| 85 | else                               # AIX rel5 kdb debugger | 
|---|
| 86 |  | 
|---|
| 87 | print "th *"  |  $kdb $1 $2 2>/dev/null  | | 
|---|
| 88 | /usr/bin/awk '{ | 
|---|
| 89 | if ($1=="SLOT") { | 
|---|
| 90 | ok=1; | 
|---|
| 91 | getline; | 
|---|
| 92 | } else if (ok==1 && $2 != "") { | 
|---|
| 93 | print "th", $2+0; | 
|---|
| 94 | print "where", $2+0; | 
|---|
| 95 | } | 
|---|
| 96 | }'                                     | | 
|---|
| 97 |  | 
|---|
| 98 | $kdb $1 $2 2> /dev/null                | | 
|---|
| 99 |  | 
|---|
| 100 | /usr/bin/awk ' /SLOT NAME/ { | 
|---|
| 101 | print ""; print $0; getline; if (NF==0) getline; print $0 | 
|---|
| 102 | while (getline && index($0,"> where ") <= 0) x++ | 
|---|
| 103 | print $0; getline | 
|---|
| 104 | while (getline && index($0,"> th ") <= 0) print $0 | 
|---|
| 105 | }' | 
|---|
| 106 |  | 
|---|
| 107 | fi | 
|---|
| 108 |  | 
|---|
| 109 | exit 0 | 
|---|
| 110 |  | 
|---|