int vtunerc_read_proc(char *buffer, char **start, off_t offset, int size, int *eof, void *data) { char outbuf[MAXBUF] = "[ vtunerc driver, version " VTUNERC_MODULE_VERSION " ]\n"; int blen, i, pcnt; struct vtunerc_ctx *ctx = (struct vtunerc_ctx *)data; blen = strlen(outbuf); sprintf(outbuf+blen, " sessions: %u\n", ctx->stat_ctrl_sess); blen = strlen(outbuf); sprintf(outbuf+blen, " TS data : %u\n", ctx->stat_wr_data); blen = strlen(outbuf); sprintf(outbuf+blen, " PID tab :"); pcnt = 0; for (i = 0; i < MAX_PIDTAB_LEN; i++) { blen = strlen(outbuf); if (ctx->pidtab[i] != PID_UNKNOWN) { sprintf(outbuf+blen, " %x", ctx->pidtab[i]); pcnt++; } } blen = strlen(outbuf); sprintf(outbuf+blen, " (len=%d)\n", pcnt); blen = strlen(outbuf); sprintf(outbuf+blen, " FE type : %s\n", get_fe_name(ctx->feinfo)); blen = strlen(outbuf); if (size < blen) return -EINVAL; if (offset != 0) return 0; strcpy(buffer, outbuf); /* signal EOF */ *eof = 1; return blen; }
static int vtunerc_read_proc(struct seq_file *seq, void *v) { int i, pcnt = 0; struct vtunerc_ctx *ctx = (struct vtunerc_ctx *)seq->private; seq_printf(seq, "[ vtunerc driver, version " VTUNERC_MODULE_VERSION " ]\n"); seq_printf(seq, " sessions: %u\n", ctx->stat_ctrl_sess); seq_printf(seq, " TS data : %u\n", ctx->stat_wr_data); seq_printf(seq, " PID tab :"); for (i = 0; i < MAX_PIDTAB_LEN; i++) if (ctx->pidtab[i] != PID_UNKNOWN) { seq_printf(seq, " %x", ctx->pidtab[i]); pcnt++; } seq_printf(seq, " (len=%d)\n", pcnt); seq_printf(seq, " FE type : %s\n", get_fe_name(ctx->feinfo)); seq_printf(seq, " msg xchg: %d/%d\n", ctx->ctrldev_request.type, ctx->ctrldev_response.type); return 0; }