/* * /proc/capi/controller: * cnr driver cardstate name driverinfo */ static int proc_controller_read_proc(char *page, char **start, off_t off, int count, int *eof, void *data) { struct capi_ctr *cp; int i; int len = 0; for (i=0; i < CAPI_MAXCONTR; i++) { cp = &cards[i]; if (cp->cardstate == CARD_FREE) continue; len += sprintf(page+len, "%d %-10s %-8s %-16s %s\n", cp->cnr, cp->driver->name, cardstate2str(cp->cardstate), cp->name, cp->driver->procinfo ? cp->driver->procinfo(cp) : "" ); if (len <= off) { off -= len; len = 0; } else { if (len-off > count) goto endloop; } } endloop: *start = page+off; if (len < count) *eof = 1; if (len>count) len = count; if (len<0) len = 0; return len; }
static int controller_show(struct seq_file *seq, void *v) { struct capi_ctr *ctr = *(struct capi_ctr **) v; if (!ctr) return 0; seq_printf(seq, "%d %-10s %-8s %-16s %s\n", ctr->cnr, ctr->driver_name, cardstate2str(ctr->cardstate), ctr->name, ctr->procinfo ? ctr->procinfo(ctr) : ""); return 0; }