static inline char *task_name(struct task_struct *p, char *buf) { int i; char *name; char tcomm[sizeof(p->comm)]; get_task_comm(tcomm, p); ADDBUF(buf, "Name:\t"); name = tcomm; i = sizeof(tcomm); do { unsigned char c = *name; name++; i--; *buf = c; if (!c) break; if (c == '\\') { buf[1] = c; buf += 2; continue; } if (c == '\n') { buf[0] = '\\'; buf[1] = 'n'; buf += 2; continue; } buf++; } while (i); *buf = '\n'; return buf+1; }
static int fsreg_read_pfs(char *buffer, char **start, linux_off_t offset, int count, int *eof, void *data) { int len; int i; dm_fsreg_t *fsrp = (dm_fsreg_t*)data; char statebuf[30]; #define CHKFULL if(len >= count) break; #define ADDBUF(a,b) len += sprintf(buffer + len, a, b); CHKFULL; switch (fsrp->fr_state) { case DM_STATE_MOUNTING: sprintf(statebuf, "mounting"); break; case DM_STATE_MOUNTED: sprintf(statebuf, "mounted"); break; case DM_STATE_UNMOUNTING: sprintf(statebuf, "unmounting"); break; case DM_STATE_UNMOUNTED: sprintf(statebuf, "unmounted"); break; default: sprintf(statebuf, "unknown:%d", (int)fsrp->fr_state); break; } len=0; while(1){ ADDBUF("fsrp=0x%p\n", fsrp); ADDBUF("fr_next=0x%p\n", fsrp->fr_next); ADDBUF("fr_vfsp=0x%p\n", fsrp->fr_vfsp); ADDBUF("fr_tevp=0x%p\n", fsrp->fr_tevp); ADDBUF("fr_fsid=%c\n", '?'); ADDBUF("fr_msg=0x%p\n", fsrp->fr_msg); ADDBUF("fr_msgsize=%d\n", fsrp->fr_msgsize); ADDBUF("fr_state=%s\n", statebuf); ADDBUF("fr_dispq=%c\n", '?'); ADDBUF("fr_dispcnt=%d\n", fsrp->fr_dispcnt); ADDBUF("fr_evt_dispq.eq_head=0x%p\n", fsrp->fr_evt_dispq.eq_head); ADDBUF("fr_evt_dispq.eq_tail=0x%p\n", fsrp->fr_evt_dispq.eq_tail); ADDBUF("fr_evt_dispq.eq_count=%d\n", fsrp->fr_evt_dispq.eq_count); ADDBUF("fr_queue=%c\n", '?'); ADDBUF("fr_lock=%c\n", '?'); ADDBUF("fr_hdlcnt=%d\n", fsrp->fr_hdlcnt); ADDBUF("fr_vfscnt=%d\n", fsrp->fr_vfscnt); ADDBUF("fr_unmount=%d\n", fsrp->fr_unmount); len += sprintf(buffer + len, "fr_rattr="); CHKFULL; for(i = 0; i <= DM_ATTR_NAME_SIZE; ++i){ ADDBUF("%c", fsrp->fr_rattr.an_chars[i]); } CHKFULL; len += sprintf(buffer + len, "\n"); CHKFULL; for(i = 0; i < DM_EVENT_MAX; i++){ if( fsrp->fr_sessp[i] != NULL ){ ADDBUF("fr_sessp[%d]=", i); ADDBUF("0x%p\n", fsrp->fr_sessp[i]); } } CHKFULL; break; } if (offset >= len) { *start = buffer; *eof = 1; return 0; } *start = buffer + offset; if ((len -= offset) > count) return count; *eof = 1; return len; }