void printchan(void (*putch) (int, void **), void **putdat, struct chan *c) { if (! c) return; printfmt(putch, putdat, "(%p): ", c); printfmt(putch, putdat, "%slocked ", spin_locked(&c->lock) ? "":"un"); printfmt(putch, putdat, "refs %p ", kref_refcnt(&c->ref)); // printfmt(putch, putdat, "%p ", struct chan *next, // printfmt(putch, putdat, "%p ", struct chan *link, printfmt(putch, putdat, "off %p ", c->offset); printfmt(putch, putdat, "type %p ", c->type); if (c->type != -1) printfmt(putch, putdat, "(#%s) ", devtab[c->type].name); printfmt(putch, putdat, "dev %p ", c->dev); printfmt(putch, putdat, "mode %p ", c->mode); printfmt(putch, putdat, "flag %p ", c->flag); printfmt(putch, putdat, "qid"); printqid(putch, putdat, &c->qid); printfmt(putch, putdat, " fid %p ", c->fid); printfmt(putch, putdat, "iounit %p ", c->iounit); printfmt(putch, putdat, "umh %p ", c->umh); printfmt(putch, putdat, "umc %p ", c->umc); // printfmt(putch, putdat, "%p ", qlock_t umqlock, printfmt(putch, putdat, "uri %p ", c->uri); printfmt(putch, putdat, "dri %p ", c->dri); printfmt(putch, putdat, "mountid %p ", c->mountid); printfmt(putch, putdat, "mntcache %p ", c->mcp); printfmt(putch, putdat, "mux %p ", c->mux); if (c->mux && c->mux->c) printfmt(putch, putdat, "mux->c %p ", c->mux->c); printfmt(putch, putdat, "aux %p ", c->aux); printfmt(putch, putdat, "mchan %p ", c->mchan); printfmt(putch, putdat, "mqid %p "); printqid(putch, putdat, &c->mqid); printfmt(putch, putdat, " cname "); printcname(putch, putdat, c->name); printfmt(putch, putdat, " ateof %p ", c->ateof); printfmt(putch, putdat, "buf %p ", c->buf); printfmt(putch, putdat, "bufused %p ", c->bufused); }
// peaks in and sees if the list is locked with it's spinlock int checklist_is_locked(checklist_t* list) { return spin_locked(&list->lock); }