| [16] | 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 |  | 
|---|