|
@@ -2977,11 +2977,10 @@ static void show_queues(struct Scsi_Host *shpnt)
|
|
|
}
|
|
|
|
|
|
#undef SPRINTF
|
|
|
-#define SPRINTF(args...) pos += sprintf(pos, ## args)
|
|
|
+#define SPRINTF(args...) seq_printf(m, ##args)
|
|
|
|
|
|
-static int get_command(char *pos, Scsi_Cmnd * ptr)
|
|
|
+static void get_command(struct seq_file *m, Scsi_Cmnd * ptr)
|
|
|
{
|
|
|
- char *start = pos;
|
|
|
int i;
|
|
|
|
|
|
SPRINTF("%p: target=%d; lun=%d; cmnd=( ",
|
|
@@ -3011,13 +3010,10 @@ static int get_command(char *pos, Scsi_Cmnd * ptr)
|
|
|
if (ptr->SCp.phase & syncneg)
|
|
|
SPRINTF("syncneg|");
|
|
|
SPRINTF("; next=0x%p\n", SCNEXT(ptr));
|
|
|
-
|
|
|
- return (pos - start);
|
|
|
}
|
|
|
|
|
|
-static int get_ports(struct Scsi_Host *shpnt, char *pos)
|
|
|
+static void get_ports(struct seq_file *m, struct Scsi_Host *shpnt)
|
|
|
{
|
|
|
- char *start = pos;
|
|
|
int s;
|
|
|
|
|
|
SPRINTF("\n%s: %s(%s) ", CURRENT_SC ? "on bus" : "waiting", states[STATE].name, states[PREVSTATE].name);
|
|
@@ -3273,11 +3269,9 @@ static int get_ports(struct Scsi_Host *shpnt, char *pos)
|
|
|
if (s & ENREQINIT)
|
|
|
SPRINTF("ENREQINIT ");
|
|
|
SPRINTF(")\n");
|
|
|
-
|
|
|
- return (pos - start);
|
|
|
}
|
|
|
|
|
|
-static int aha152x_set_info(char *buffer, int length, struct Scsi_Host *shpnt)
|
|
|
+static int aha152x_set_info(struct Scsi_Host *shpnt, char *buffer, int length)
|
|
|
{
|
|
|
if(!shpnt || !buffer || length<8 || strncmp("aha152x ", buffer, 8)!=0)
|
|
|
return -EINVAL;
|
|
@@ -3320,26 +3314,11 @@ static int aha152x_set_info(char *buffer, int length, struct Scsi_Host *shpnt)
|
|
|
return length;
|
|
|
}
|
|
|
|
|
|
-#undef SPRINTF
|
|
|
-#define SPRINTF(args...) \
|
|
|
- do { if(pos < buffer + length) pos += sprintf(pos, ## args); } while(0)
|
|
|
-
|
|
|
-static int aha152x_proc_info(struct Scsi_Host *shpnt, char *buffer, char **start,
|
|
|
- off_t offset, int length, int inout)
|
|
|
+static int aha152x_show_info(struct seq_file *m, struct Scsi_Host *shpnt)
|
|
|
{
|
|
|
int i;
|
|
|
- char *pos = buffer;
|
|
|
Scsi_Cmnd *ptr;
|
|
|
unsigned long flags;
|
|
|
- int thislength;
|
|
|
-
|
|
|
- DPRINTK(debug_procinfo,
|
|
|
- KERN_DEBUG "aha152x_proc_info: buffer=%p offset=%ld length=%d hostno=%d inout=%d\n",
|
|
|
- buffer, offset, length, shpnt->host_no, inout);
|
|
|
-
|
|
|
-
|
|
|
- if (inout)
|
|
|
- return aha152x_set_info(buffer, length, shpnt);
|
|
|
|
|
|
SPRINTF(AHA152X_REVID "\n");
|
|
|
|
|
@@ -3392,25 +3371,25 @@ static int aha152x_proc_info(struct Scsi_Host *shpnt, char *buffer, char **start
|
|
|
if (ISSUE_SC) {
|
|
|
SPRINTF("not yet issued commands:\n");
|
|
|
for (ptr = ISSUE_SC; ptr; ptr = SCNEXT(ptr))
|
|
|
- pos += get_command(pos, ptr);
|
|
|
+ get_command(m, ptr);
|
|
|
} else
|
|
|
SPRINTF("no not yet issued commands\n");
|
|
|
DO_UNLOCK(flags);
|
|
|
|
|
|
if (CURRENT_SC) {
|
|
|
SPRINTF("current command:\n");
|
|
|
- pos += get_command(pos, CURRENT_SC);
|
|
|
+ get_command(m, CURRENT_SC);
|
|
|
} else
|
|
|
SPRINTF("no current command\n");
|
|
|
|
|
|
if (DISCONNECTED_SC) {
|
|
|
SPRINTF("disconnected commands:\n");
|
|
|
for (ptr = DISCONNECTED_SC; ptr; ptr = SCNEXT(ptr))
|
|
|
- pos += get_command(pos, ptr);
|
|
|
+ get_command(m, ptr);
|
|
|
} else
|
|
|
SPRINTF("no disconnected commands\n");
|
|
|
|
|
|
- pos += get_ports(shpnt, pos);
|
|
|
+ get_ports(m, shpnt);
|
|
|
|
|
|
#if defined(AHA152X_STAT)
|
|
|
SPRINTF("statistics:\n"
|
|
@@ -3440,24 +3419,7 @@ static int aha152x_proc_info(struct Scsi_Host *shpnt, char *buffer, char **start
|
|
|
HOSTDATA(shpnt)->time[i]);
|
|
|
}
|
|
|
#endif
|
|
|
-
|
|
|
- DPRINTK(debug_procinfo, KERN_DEBUG "aha152x_proc_info: pos=%p\n", pos);
|
|
|
-
|
|
|
- thislength = pos - (buffer + offset);
|
|
|
- DPRINTK(debug_procinfo, KERN_DEBUG "aha152x_proc_info: length=%d thislength=%d\n", length, thislength);
|
|
|
-
|
|
|
- if(thislength<0) {
|
|
|
- DPRINTK(debug_procinfo, KERN_DEBUG "aha152x_proc_info: output too short\n");
|
|
|
- *start = NULL;
|
|
|
- return 0;
|
|
|
- }
|
|
|
-
|
|
|
- thislength = thislength<length ? thislength : length;
|
|
|
-
|
|
|
- DPRINTK(debug_procinfo, KERN_DEBUG "aha152x_proc_info: return %d\n", thislength);
|
|
|
-
|
|
|
- *start = buffer + offset;
|
|
|
- return thislength < length ? thislength : length;
|
|
|
+ return 0;
|
|
|
}
|
|
|
|
|
|
static int aha152x_adjust_queue(struct scsi_device *device)
|
|
@@ -3470,7 +3432,8 @@ static struct scsi_host_template aha152x_driver_template = {
|
|
|
.module = THIS_MODULE,
|
|
|
.name = AHA152X_REVID,
|
|
|
.proc_name = "aha152x",
|
|
|
- .proc_info = aha152x_proc_info,
|
|
|
+ .show_info = aha152x_show_info,
|
|
|
+ .write_info = aha152x_set_info,
|
|
|
.queuecommand = aha152x_queue,
|
|
|
.eh_abort_handler = aha152x_abort,
|
|
|
.eh_device_reset_handler = aha152x_device_reset,
|