/* Prototype: int powertecscsi_proc_info(char *buffer, char **start, off_t offset, * int length, int host_no, int inout) * Purpose : Return information about the driver to a user process accessing * the /proc filesystem. * Params : buffer - a buffer to write information to * start - a pointer into this buffer set by this routine to the start * of the required information. * offset - offset into information that we have read upto. * length - length of buffer * inout - 0 for reading, 1 for writing. * Returns : length of data written to buffer. */ int powertecscsi_proc_info(struct Scsi_Host *host, char *buffer, char **start, off_t offset, int length, int inout) { struct powertec_info *info; char *p = buffer; int pos; if (inout == 1) return powertecscsi_set_proc_info(host, buffer, length); info = (struct powertec_info *)host->hostdata; p += sprintf(p, "PowerTec SCSI driver v%s\n", VERSION); p += fas216_print_host(&info->info, p); p += sprintf(p, "Term : o%s\n", info->term_ctl ? "n" : "ff"); p += fas216_print_stats(&info->info, p); p += fas216_print_devices(&info->info, p); *start = buffer + offset; pos = p - buffer - offset; if (pos > length) pos = length; return pos; }
/* Prototype: int eesoxscsi_proc_info(char *buffer, char **start, off_t offset, * int length, int host_no, int inout) * Purpose : Return information about the driver to a user process accessing * the /proc filesystem. * Params : buffer - a buffer to write information to * start - a pointer into this buffer set by this routine to the start * of the required information. * offset - offset into information that we have read upto. * length - length of buffer * host_no - host number to return information for * inout - 0 for reading, 1 for writing. * Returns : length of data written to buffer. */ int eesoxscsi_proc_info(struct Scsi_Host *host, char *buffer, char **start, off_t offset, int length, int inout) { struct eesoxscsi_info *info; char *p = buffer; int pos; if (inout == 1) return eesoxscsi_set_proc_info(host, buffer, length); info = (struct eesoxscsi_info *)host->hostdata; p += sprintf(p, "EESOX SCSI driver v%s\n", VERSION); p += fas216_print_host(&info->info, p); p += sprintf(p, "Term : o%s\n", info->control & EESOX_TERM_ENABLE ? "n" : "ff"); p += fas216_print_stats(&info->info, p); p += fas216_print_devices(&info->info, p); *start = buffer + offset; pos = p - buffer - offset; if (pos > length) pos = length; return pos; }
/* Prototype: int powertecscsi_proc_info(char *buffer, char **start, off_t offset, * int length, int host_no, int inout) * Purpose : Return information about the driver to a user process accessing * the /proc filesystem. * Params : buffer - a buffer to write information to * start - a pointer into this buffer set by this routine to the start * of the required information. * offset - offset into information that we have read upto. * length - length of buffer * host_no - host number to return information for * inout - 0 for reading, 1 for writing. * Returns : length of data written to buffer. */ int powertecscsi_proc_info(char *buffer, char **start, off_t offset, int length, int host_no, int inout) { int pos, begin; struct Scsi_Host *host = scsi_hostlist; PowerTecScsi_Info *info; Scsi_Device *scd; while (host) { if (host->host_no == host_no) break; host = host->next; } if (!host) return 0; if (inout == 1) return powertecscsi_set_proc_info(host, buffer, length); info = (PowerTecScsi_Info *)host->hostdata; begin = 0; pos = sprintf(buffer, "PowerTec SCSI driver version %d.%d.%d\n", VER_MAJOR, VER_MINOR, VER_PATCH); pos += sprintf(buffer + pos, "Address: %08lX IRQ : %d DMA : %d\n" "FAS : %-10s TERM: %-3s\n\n" "Statistics:\n", host->io_port, host->irq, host->dma_channel, info->info.scsi.type, info->control.terms ? "on" : "off"); pos += fas216_print_stats(&info->info, buffer + pos); pos += sprintf (buffer+pos, "\nAttached devices:\n"); for (scd = host->host_queue; scd; scd = scd->next) { pos += fas216_print_device(&info->info, scd, buffer + pos); if (pos + begin < offset) { begin += pos; pos = 0; } if (pos + begin > offset + length) break; } *start = buffer + (offset - begin); pos -= offset - begin; if (pos > length) pos = length; return pos; }
static int eesoxscsi_show_info(struct seq_file *m, struct Scsi_Host *host) { struct eesoxscsi_info *info; info = (struct eesoxscsi_info *)host->hostdata; seq_printf(m, "EESOX SCSI driver v%s\n", VERSION); fas216_print_host(&info->info, m); seq_printf(m, "Term : o%s\n", info->control & EESOX_TERM_ENABLE ? "n" : "ff"); fas216_print_stats(&info->info, m); fas216_print_devices(&info->info, m); return 0; }
/* Prototype: int powertecscsi_proc_info(char *buffer, char **start, off_t offset, * int length, int host_no, int inout) * Purpose : Return information about the driver to a user process accessing * the /proc filesystem. * Params : buffer - a buffer to write information to * start - a pointer into this buffer set by this routine to the start * of the required information. * offset - offset into information that we have read upto. * length - length of buffer * host_no - host number to return information for * inout - 0 for reading, 1 for writing. * Returns : length of data written to buffer. */ int powertecscsi_proc_info(char *buffer, char **start, off_t offset, int length, int host_no, int inout) { int pos, begin; struct Scsi_Host *host; struct powertec_info *info; Scsi_Device *scd; host = scsi_host_hn_get(host_no); if (!host) return 0; if (inout == 1) return powertecscsi_set_proc_info(host, buffer, length); info = (struct powertec_info *)host->hostdata; begin = 0; pos = sprintf(buffer, "PowerTec SCSI driver v%s\n", VERSION); pos += fas216_print_host(&info->info, buffer + pos); pos += sprintf(buffer + pos, "Term : o%s\n", info->term_ctl ? "n" : "ff"); pos += fas216_print_stats(&info->info, buffer + pos); pos += sprintf(buffer+pos, "\nAttached devices:\n"); for (scd = host->host_queue; scd; scd = scd->next) { pos += fas216_print_device(&info->info, scd, buffer + pos); if (pos + begin < offset) { begin += pos; pos = 0; } if (pos + begin > offset + length) break; } *start = buffer + (offset - begin); pos -= offset - begin; if (pos > length) pos = length; return pos; }