CTC++ Coverage Report - Execution Profile    #798/1532

Files Summary | Functions Summary | Execution Profile | Index | No Index
First | Previous | Next | Last


File: drivers/usb/storage/debug.c
Instrumentation mode: function-decision-multicondition
TER: 12 % ( 22/189)

Start/ End/    
True False - Line Source

  1 /* Driver for USB Mass Storage compliant devices
  2  * Debugging Functions Source Code File
  3  *
  4  * $Id: debug.c,v 1.9 2002/04/22 03:39:43 mdharm Exp $
  5  *
  6  * Current development and maintenance by:
  7  *   (c) 1999-2002 Matthew Dharm (mdharm-usb@one-eyed-alien.net)
  8  *
  9  * Developed with the assistance of:
  10  *   (c) 2002 Alan Stern <stern@rowland.org>
  11  *
  12  * Initial work by:
  13  *   (c) 1999 Michael Gee (michael@linuxspecific.com)
  14  *
  15  * This driver is based on the 'USB Mass Storage Class' document. This
  16  * describes in detail the protocol used to communicate with such
  17  * devices.  Clearly, the designers had SCSI and ATAPI commands in
  18  * mind when they created this document.  The commands are all very
  19  * similar to commands in the SCSI-II and ATAPI specifications.
  20  *
  21  * It is important to note that in a number of cases this class
  22  * exhibits class-specific exemptions from the USB specification.
  23  * Notably the usage of NAK, STALL and ACK differs from the norm, in
  24  * that they are used to communicate wait, failed and OK on commands.
  25  *
  26  * Also, for certain devices, the interrupt endpoint is used to convey
  27  * status of a command.
  28  *
  29  * Please see http://www.one-eyed-alien.net/~mdharm/linux-usb for more
  30  * information about this driver.
  31  *
  32  * This program is free software; you can redistribute it and/or modify it
  33  * under the terms of the GNU General Public License as published by the
  34  * Free Software Foundation; either version 2, or (at your option) any
  35  * later version.
  36  *
  37  * This program is distributed in the hope that it will be useful, but
  38  * WITHOUT ANY WARRANTY; without even the implied warranty of
  39  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  40  * General Public License for more details.
  41  *
  42  * You should have received a copy of the GNU General Public License along
  43  * with this program; if not, write to the Free Software Foundation, Inc.,
  44  * 675 Mass Ave, Cambridge, MA 02139, USA.
  45  */
  46 
  47 #include <linux/cdrom.h>
  48 #include <scsi/scsi.h>
  49 #include <scsi/scsi_cmnd.h>
  50 #include <scsi/scsi_dbg.h>
  51 
  52 #include "debug.h"
  53 #include "scsi.h"
  54 
  55 
 
2056 2056   56 void usb_stor_show_command(struct scsi_cmnd *srb)
  57 {
  58    char *what = NULL;
  59    int i;
  60 
    61    switch (srb->cmnd[0]) {
21    62    case TEST_UNIT_READY: what = "TEST_UNIT_READY"; break;
21    62   break
 - 63    case REZERO_UNIT: what = "REZERO_UNIT"; break;
 - 63   break
 - 64    case REQUEST_SENSE: what = "REQUEST_SENSE"; break;
 - 64   break
 - 65    case FORMAT_UNIT: what = "FORMAT_UNIT"; break;
 - 65   break
 - 66    case READ_BLOCK_LIMITS: what = "READ_BLOCK_LIMITS"; break;
 - 66   break
 - 67    case REASSIGN_BLOCKS: what = "REASSIGN_BLOCKS"; break;
 - 67   break
 - 68    case READ_6: what = "READ_6"; break;
 - 68   break
 - 69    case WRITE_6: what = "WRITE_6"; break;
 - 69   break
 - 70    case SEEK_6: what = "SEEK_6"; break;
 - 70   break
 - 71    case READ_REVERSE: what = "READ_REVERSE"; break;
 - 71   break
 - 72    case WRITE_FILEMARKS: what = "WRITE_FILEMARKS"; break;
 - 72   break
 - 73    case SPACE: what = "SPACE"; break;
 - 73   break
   74    case INQUIRY: what = "INQUIRY"; break;
   74   break
 - 75    case RECOVER_BUFFERED_DATA: what = "RECOVER_BUFFERED_DATA"; break;
 - 75   break
 - 76    case MODE_SELECT: what = "MODE_SELECT"; break;
 - 76   break
 - 77    case RESERVE: what = "RESERVE"; break;
 - 77   break
 - 78    case RELEASE: what = "RELEASE"; break;
 - 78   break
 - 79    case COPY: what = "COPY"; break;
 - 79   break
 - 80    case ERASE: what = "ERASE"; break;
 - 80   break
   81    case MODE_SENSE: what = "MODE_SENSE"; break;
   81   break
 - 82    case START_STOP: what = "START_STOP"; break;
 - 82   break
 - 83    case RECEIVE_DIAGNOSTIC: what = "RECEIVE_DIAGNOSTIC"; break;
 - 83   break
 - 84    case SEND_DIAGNOSTIC: what = "SEND_DIAGNOSTIC"; break;
 - 84   break
   85    case ALLOW_MEDIUM_REMOVAL: what = "ALLOW_MEDIUM_REMOVAL"; break;
   85   break
 - 86    case SET_WINDOW: what = "SET_WINDOW"; break;
 - 86   break
   87    case READ_CAPACITY: what = "READ_CAPACITY"; break;
   87   break
2002    88    case READ_10: what = "READ_10"; break;
2002    88   break
21    89    case WRITE_10: what = "WRITE_10"; break;
21    89   break
 - 90    case SEEK_10: what = "SEEK_10"; break;
 - 90   break
 - 91    case WRITE_VERIFY: what = "WRITE_VERIFY"; break;
 - 91   break
 - 92    case VERIFY: what = "VERIFY"; break;
 - 92   break
 - 93    case SEARCH_HIGH: what = "SEARCH_HIGH"; break;
 - 93   break
 - 94    case SEARCH_EQUAL: what = "SEARCH_EQUAL"; break;
 - 94   break
 - 95    case SEARCH_LOW: what = "SEARCH_LOW"; break;
 - 95   break
 - 96    case SET_LIMITS: what = "SET_LIMITS"; break;
 - 96   break
 - 97    case READ_POSITION: what = "READ_POSITION"; break;
 - 97   break
 - 98    case SYNCHRONIZE_CACHE: what = "SYNCHRONIZE_CACHE"; break;
 - 98   break
 - 99    case LOCK_UNLOCK_CACHE: what = "LOCK_UNLOCK_CACHE"; break;
 - 99   break
 - 100    case READ_DEFECT_DATA: what = "READ_DEFECT_DATA"; break;
 - 100   break
 - 101    case MEDIUM_SCAN: what = "MEDIUM_SCAN"; break;
 - 101   break
 - 102    case COMPARE: what = "COMPARE"; break;
 - 102   break
 - 103    case COPY_VERIFY: what = "COPY_VERIFY"; break;
 - 103   break
 - 104    case WRITE_BUFFER: what = "WRITE_BUFFER"; break;
 - 104   break
 - 105    case READ_BUFFER: what = "READ_BUFFER"; break;
 - 105   break
 - 106    case UPDATE_BLOCK: what = "UPDATE_BLOCK"; break;
 - 106   break
 - 107    case READ_LONG: what = "READ_LONG"; break;
 - 107   break
 - 108    case WRITE_LONG: what = "WRITE_LONG"; break;
 - 108   break
 - 109    case CHANGE_DEFINITION: what = "CHANGE_DEFINITION"; break;
 - 109   break
 - 110    case WRITE_SAME: what = "WRITE_SAME"; break;
 - 110   break
 - 111    case GPCMD_READ_SUBCHANNEL: what = "READ SUBCHANNEL"; break;
 - 111   break
 - 112    case READ_TOC: what = "READ_TOC"; break;
 - 112   break
 - 113    case GPCMD_READ_HEADER: what = "READ HEADER"; break;
 - 113   break
 - 114    case GPCMD_PLAY_AUDIO_10: what = "PLAY AUDIO (10)"; break;
 - 114   break
 - 115    case GPCMD_PLAY_AUDIO_MSF: what = "PLAY AUDIO MSF"; break;
 - 115   break
 - 116    case GPCMD_GET_EVENT_STATUS_NOTIFICATION:
 - 117       what = "GET EVENT/STATUS NOTIFICATION"; break;
 - 118    case GPCMD_PAUSE_RESUME: what = "PAUSE/RESUME"; break;
 - 118   break
 - 119    case LOG_SELECT: what = "LOG_SELECT"; break;
 - 119   break
 - 120    case LOG_SENSE: what = "LOG_SENSE"; break;
 - 120   break
 - 121    case GPCMD_STOP_PLAY_SCAN: what = "STOP PLAY/SCAN"; break;
 - 121   break
 - 122    case GPCMD_READ_DISC_INFO: what = "READ DISC INFORMATION"; break;
 - 122   break
 - 123    case GPCMD_READ_TRACK_RZONE_INFO:
 - 124       what = "READ TRACK INFORMATION"; break;
 - 125    case GPCMD_RESERVE_RZONE_TRACK: what = "RESERVE TRACK"; break;
 - 125   break
 - 126    case GPCMD_SEND_OPC: what = "SEND OPC"; break;
 - 126   break
 - 127    case MODE_SELECT_10: what = "MODE_SELECT_10"; break;
 - 127   break
 - 128    case GPCMD_REPAIR_RZONE_TRACK: what = "REPAIR TRACK"; break;
 - 128   break
 - 129    case 0x59: what = "READ MASTER CUE"; break;
 - 129   break
 - 130    case MODE_SENSE_10: what = "MODE_SENSE_10"; break;
 - 130   break
 - 131    case GPCMD_CLOSE_TRACK: what = "CLOSE TRACK/SESSION"; break;
 - 131   break
 - 132    case 0x5C: what = "READ BUFFER CAPACITY"; break;
 - 132   break
 - 133    case 0x5D: what = "SEND CUE SHEET"; break;
 - 133   break
 - 134    case GPCMD_BLANK: what = "BLANK"; break;
 - 134   break
 - 135    case REPORT_LUNS: what = "REPORT LUNS"; break;
 - 135   break
 - 136    case MOVE_MEDIUM: what = "MOVE_MEDIUM or PLAY AUDIO (12)"; break;
 - 136   break
 - 137    case READ_12: what = "READ_12"; break;
 - 137   break
 - 138    case WRITE_12: what = "WRITE_12"; break;
 - 138   break
 - 139    case WRITE_VERIFY_12: what = "WRITE_VERIFY_12"; break;
 - 139   break
 - 140    case SEARCH_HIGH_12: what = "SEARCH_HIGH_12"; break;
 - 140   break
 - 141    case SEARCH_EQUAL_12: what = "SEARCH_EQUAL_12"; break;
 - 141   break
 - 142    case SEARCH_LOW_12: what = "SEARCH_LOW_12"; break;
 - 142   break
 - 143    case SEND_VOLUME_TAG: what = "SEND_VOLUME_TAG"; break;
 - 143   break
 - 144    case READ_ELEMENT_STATUS: what = "READ_ELEMENT_STATUS"; break;
 - 144   break
 - 145    case GPCMD_READ_CD_MSF: what = "READ CD MSF"; break;
 - 145   break
 - 146    case GPCMD_SCAN: what = "SCAN"; break;
 - 146   break
 - 147    case GPCMD_SET_SPEED: what = "SET CD SPEED"; break;
 - 147   break
 - 148    case GPCMD_MECHANISM_STATUS: what = "MECHANISM STATUS"; break;
 - 148   break
 - 149    case GPCMD_READ_CD: what = "READ CD"; break;
 - 149   break
 - 150    case 0xE1: what = "WRITE CONTINUE"; break;
 - 150   break
 - 151    case WRITE_LONG_2: what = "WRITE_LONG_2"; break;
 - 151   break
 - 152    default: what = "(unknown command)"; break;
 - 152   break
  153    }
  154    US_DEBUGP("Command %s (%d bytes)\n", what, srb->cmd_len);
  155    US_DEBUGP("");
20436 2056   156    for (i = 0; i < srb->cmd_len && i < 16; i++)
20436    156   T && T
 - 156   T && F
 2056   156   F && _
  157       US_DEBUGPX(" %02x", srb->cmnd[i]);
  158    US_DEBUGPX("\n");
  159 }
  160 
 
19 19   161 void usb_stor_show_sense(
  162       unsigned char key,
  163       unsigned char asc,
  164       unsigned char ascq) {
  165 
  166    const char *what, *keystr;
  167 
  168    keystr = scsi_sense_key_string(key);
  169    what = scsi_extd_sense_format(asc, ascq);
  170 
19 - 171    if (keystr == NULL)
  172       keystr = "(Unknown Key)";
19 - 173    if (what == NULL)
  174       what = "(unknown ASC/ASCQ)";
  175 
  176    US_DEBUGP("%s: ", keystr);
  177    US_DEBUGPX(what, ascq);
  178    US_DEBUGPX("\n");
  179 }
***TER 12% (22/189) of SOURCE FILE debug.c

Files Summary | Functions Summary | Execution Profile | Index | No Index
First | Previous | Next | Last | Top