-int cmount(struct chan*, struct chan*, int unused_int, char *unused_char_p_t);
-void cnameclose(struct cname*);
-struct block* concatblock(struct block*);
-void confinit(void);
-void copen(struct chan*);
-struct block* copyblock(struct block*, int);
-int cread(struct chan*, uint8_t *unused_uint8_p_t, int unused_int, int64_t);
-struct chan* cunique(struct chan*);
-struct chan* createdir(struct chan*, struct mhead*);
-void cunmount(struct chan*, struct chan*);
-void cupdate(struct chan*, uint8_t *unused_uint8_p_t, int unused_int, int64_t);
-void cursorenable(void);
-void cursordisable(void);
-int cursoron(int);
-void cursoroff(int);
-void cwrite(struct chan*, uint8_t *unused_uint8_p_t, int unused_int, int64_t);
-struct chan* devattach( int unused_int, char *unused_char_p_t);
-struct block* devbread(struct chan*, long, uint32_t);
-long devbwrite(struct chan*, struct block*, uint32_t);
-struct chan* devclone(struct chan*);
-void devcreate(struct chan*, char *unused_char_p_t, int unused_int, uint32_t);
-void devdir(struct chan*, struct qid, char *unused_char_p_t, int64_t, char*, long,
- struct dir*);
-long devdirread(struct chan*, char *unused_char_p_t, long,
- struct dirtab*, int unused_int, Devgen*);
-Devgen devgen;
-void devinit(void);
-int devno( int unused_int, int);
-void devpower(int);
-struct dev* devbyname( char *unused_char_p_t);
-struct chan* devopen(struct chan*, int unused_int,
- struct dirtab*, int unused_int2, Devgen*);
-void devpermcheck( char *unused_char_p_t, uint32_t, int);
-void devremove(struct chan*);
-void devreset(void);
-void devshutdown(void);
-int devstat(struct chan*, uint8_t *unused_uint8_p_t, int unused_int,
- struct dirtab*, int unused_int2, Devgen*);
-struct walkqid* devwalk(struct chan*,
- struct chan*, char **unused_char_pp_t, int unused_int,
- struct dirtab*, int unused_intw, Devgen*);
-int devwstat(struct chan*, uint8_t *unused_uint8_p_t, int);
-void disinit(void*);
-void disfault(void*, char *unused_char_p_t);
-int domount(struct chan**, struct mhead**);
-void drawactive(int);
-void drawcmap(void);
-void dumpstack(void);
-struct fgrp* dupfgrp(struct fgrp*);
-void egrpcpy(struct egrp*, struct egrp*);
-int emptystr( char *unused_char_p_t);
-int eqchan(struct chan*, struct chan*, int);
-int eqqid(struct qid, struct qid);
-
-void errstr( char *unused_char_p_t, int);
-void excinit(void);
-void exit(int);
-void reboot(void);
-void halt(void);
-int export( int unused_int, char *unused_char_p_t, int);
-uint64_t fastticks(uint64_t*);
-uint64_t fastticks2ns(uint64_t);
-void fdclose(struct fgrp*, int);
-struct chan* fdtochan(struct fgrp*, int unused_int, int, int, int);
-int findmount(struct chan**,
- struct mhead**, int unused_int, int, struct qid);
-void free(void*);
-void freeb(struct block*);
-void freeblist(struct block*);
-void freeskey(struct signerkey*);
-void getcolor(uint32_t, uint32_t*, uint32_t*, uint32_t*);
-uint32_t getmalloctag(void*);
-uint32_t getrealloctag(void*);
-void hnputl(void*, uint32_t);
-void hnputs(void*, uint16_t);
-struct block* iallocb(int);
-void iallocsummary(void);
-void ilock(spinlock_t*);
-int iprint( char *unused_char_p_t, ...);
-void isdir(struct chan*);
-int islo(void);
-void iunlock(spinlock_t*);
-void ixsummary(void);
-void kbdclock(void);
-int kbdcr2nl(struct queue*, int);
-int kbdputc(struct queue*, int);
-void kbdrepeat(int);
-void kproc( char *unused_char_p_t, void(*)(void*), void*, int);
-int fgrpclose(struct fgrp*, int);
-void kprocchild(struct proc*, void (*)(void*), void*);
-void (*kproftick)(uint32_t);
-void ksetenv( char *unused_char_p_t, char*, int);
-//void kstrncpy( char *unused_char_p_t, char*, int unused_int, sizeof(char*, char*));
-void kstrdup( char **unused_char_pp_t, char *unused_char_p_t);
-
-struct cmdtab* lookupcmd(struct cmdbuf*, struct cmdtab*, int);
-struct block* mem2bl( uint8_t *unused_uint8_p_t, int);
-int memusehigh(void);
-void microdelay(int);
-uint64_t mk64fract(uint64_t, uint64_t);
-void mkqid(struct qid*, int64_t, uint32_t, int);
-void modinit(void);
-struct chan* mntauth(struct chan*, char *unused_char_p_t);
-long mntversion(struct chan*, char *unused_char_p_t, int unused_int, int);
-void mountfree(struct mount*);
-void mousetrack( int unused_int, int, int, int);
-uint64_t ms2fastticks(uint32_t);
-void mul64fract(uint64_t*, uint64_t, uint64_t);
-void muxclose(struct mnt*);
-struct chan* namec( char *unused_char_p_t, int unused_int, int, uint32_t);
-struct chan* newchan(void);
-struct egrp* newegrp(void);
-struct fgrp* newfgrp(void);
-struct mount* newmount(struct mhead*, struct chan*, int unused_int, char *unused_char_p_t);
-struct pgrp* newpgrp(void);
-struct proc* newproc(void);
-char* nextelem( char *unused_char_p_t, char*);
-
-struct cname* newcname( char *unused_char_p_t);
-void notkilled(void);
-int nrand(int);
-uint64_t ns2fastticks(uint64_t);
-int okaddr(uint32_t, uint32_t, int);
-int openmode(uint32_t);
-struct block* packblock(struct block*);
-struct block* padblock(struct block*, int);
-
-struct cmdbuf* parsecmd( char *unused_char_p_t, int);
-
-void pgrpcpy(struct pgrp*, struct pgrp*);
-
-int progfdprint(struct chan*, int unused_int, int, char *unused_char_p_t, int i);
-int pullblock(struct block**, int);
-struct block* pullupblock(struct block*, int);
-struct block* pullupqueue(struct queue*, int);
-void putmhead(struct mhead*);
-void putstrn( char *unused_char_p_t, int);
-void qaddlist(struct queue*, struct block*);
-struct block* qbread(struct queue*, int);
-long qbwrite(struct queue*, struct block*);
-struct queue* qbypass(void (*)(void*, struct block*), void*);
-int qcanread(struct queue*);
-void qclose(struct queue*);
-int qconsume(struct queue*, void*, int);
-struct block* qcopy(struct queue*, int unused_int, uint32_t);
-int qdiscard(struct queue*, int);
-void qflush(struct queue*);
-void qfree(struct queue*);
-int qfull(struct queue*);
-struct block* qget(struct queue*);
-void qhangup(struct queue*, char *unused_char_p_t);
-int qisclosed(struct queue*);
-int qiwrite(struct queue*, void*, int);
-int qlen(struct queue*);
-void qnoblock(struct queue*, int);
-struct queue* qopen( int unused_int, int, void (*)(void*), void*);
-int qpass(struct queue*, struct block*);
-int qpassnolim(struct queue*, struct block*);
-int qproduce(struct queue*, void*, int);
-void qputback(struct queue*, struct block*);
-long qread(struct queue*, void*, int);
-struct block* qremove(struct queue*);
-void qreopen(struct queue*);
-void qsetlimit(struct queue*, int);
-int qwindow(struct queue*);
-int qwrite(struct queue*, void*, int);
-void randominit(void);
-uint32_t randomread(void*, uint32_t);
-void* realloc(void*, uint32_t);
+int cmount(struct chan *, struct chan *, int unused_int, char *unused_char_p_t);
+void cnameclose(struct cname *);
+struct block *concatblock(struct block *);
+struct block *linearizeblock(struct block *b);
+void confinit(void);
+void copen(struct chan *);
+struct block *copyblock(struct block *, int);
+int cread(struct chan *, uint8_t * unused_uint8_p_t, int unused_int, int64_t);
+struct chan *cunique(struct chan *);
+struct chan *createdir(struct chan *, struct mhead *);
+void cunmount(struct chan *, struct chan *);
+void cupdate(struct chan *, uint8_t * unused_uint8_p_t, int unused_int,
+ int64_t);
+void cursorenable(void);
+void cursordisable(void);
+int cursoron(int);
+void cursoroff(int);
+void cwrite(struct chan *, uint8_t * unused_uint8_p_t, int unused_int, int64_t);
+struct chan *devattach(int unused_int, char *unused_char_p_t);
+struct block *devbread(struct chan *, long, uint32_t);
+long devbwrite(struct chan *, struct block *, uint32_t);
+struct chan *devclone(struct chan *);
+void devcreate(struct chan *, char *name, int mode, uint32_t perm);
+void devdir(struct chan *, struct qid, char *, int64_t, char *, long,
+ struct dir *);
+long devdirread(struct chan *, char *, long, struct dirtab *, int, Devgen *);
+Devgen devgen;
+void devinit(void);
+int devno(int unused_int, int);
+void devpower(int);
+struct dev *devbyname(char *unused_char_p_t);
+struct chan *devopen(struct chan *, int unused_int,
+ struct dirtab *, int unused_int2, Devgen *);
+void devpermcheck(char *unused_char_p_t, uint32_t, int);
+void devremove(struct chan *);
+void devreset(void);
+void devshutdown(void);
+int devstat(struct chan *, uint8_t * unused_uint8_p_t, int unused_int,
+ struct dirtab *, int unused_int2, Devgen *);
+struct walkqid *devwalk(struct chan *,
+ struct chan *, char **unused_char_pp_t, int unused_int,
+ struct dirtab *, int unused_intw, Devgen *);
+int devwstat(struct chan *, uint8_t * unused_uint8_p_t, int);
+char *devchaninfo(struct chan *chan, char *ret, size_t ret_l);
+void disinit(void *);
+void disfault(void *, char *unused_char_p_t);
+int domount(struct chan **, struct mhead **);
+void drawactive(int);
+void drawcmap(void);
+void dumpstack(void);
+struct fgrp *dupfgrp(struct proc *, struct fgrp *);
+void egrpcpy(struct egrp *, struct egrp *);
+int emptystr(char *unused_char_p_t);
+int eqchan(struct chan *, struct chan *, int);
+int eqqid(struct qid, struct qid);
+
+void errstr(char *unused_char_p_t, int);
+void excinit(void);
+void exit(int);
+void reboot(void);
+void halt(void);
+int export(int unused_int, char *unused_char_p_t, int);
+uint64_t fastticks(uint64_t *);
+uint64_t fastticks2ns(uint64_t);
+void fdclose(struct fgrp *, int);
+struct chan *fdtochan(struct fgrp *, int unused_int, int, int, int);
+int findmount(struct chan **, struct mhead **, int unused_int, int, struct qid);
+void free(void *);
+void freeb(struct block *);
+void freeblist(struct block *);
+void freeskey(struct signerkey *);
+void getcolor(uint32_t, uint32_t *, uint32_t *, uint32_t *);
+uint32_t getmalloctag(void *);
+uint32_t getrealloctag(void *);
+void hnputl(void *, uint32_t);
+void hnputs(void *, uint16_t);
+struct block *iallocb(int);
+void iallocsummary(void);
+void printblock(struct block *b);
+void ilock(spinlock_t *);
+int iprint(char *unused_char_p_t, ...);
+void isdir(struct chan *);
+int islo(void);
+void iunlock(spinlock_t *);
+void ixsummary(void);
+void kbdclock(void);
+int kbdcr2nl(struct queue *, int);
+int kbdputc(struct queue *, int);
+void kbdrepeat(int);
+void kproc(char *unused_char_p_t, void (*)(void *), void *, int);
+int fgrpclose(struct fgrp *, int);
+void kprocchild(struct proc *, void (*)(void *), void *);
+void (*kproftick) (uint32_t);
+void ksetenv(char *unused_char_p_t, char *, int);
+//void kstrncpy( char *unused_char_p_t, char*, int unused_int, sizeof(char*, char*));
+void kstrdup(char **unused_char_pp_t, char *unused_char_p_t);
+
+struct cmdtab *lookupcmd(struct cmdbuf *, struct cmdtab *, int);
+struct block *mem2bl(uint8_t * unused_uint8_p_t, int);
+int memusehigh(void);
+void microdelay(int);
+uint64_t mk64fract(uint64_t, uint64_t);
+void mkqid(struct qid *, int64_t, uint32_t, int);
+void modinit(void);
+struct chan *mntauth(struct chan *, char *unused_char_p_t);
+long mntversion(struct chan *, char *unused_char_p_t, int unused_int, int);
+void mountfree(struct mount *);
+void mousetrack(int unused_int, int, int, int);
+uint64_t ms2fastticks(uint32_t);
+void mul64fract(uint64_t *, uint64_t, uint64_t);
+void muxclose(struct mnt *);
+struct chan *namec(char *unused_char_p_t, int unused_int, int, uint32_t);
+struct chan *newchan(void);
+struct egrp *newegrp(void);
+struct fgrp *newfgrp(void);
+struct mount *newmount(struct mhead *, struct chan *, int unused_int,
+ char *unused_char_p_t);
+struct pgrp *newpgrp(void);
+struct proc *newproc(void);
+char *nextelem(char *unused_char_p_t, char *);
+
+struct cname *newcname(char *unused_char_p_t);
+void notkilled(void);
+int nrand(int);
+uint64_t ns2fastticks(uint64_t);
+int okaddr(uint32_t, uint32_t, int);
+int openmode(uint32_t);
+struct block *packblock(struct block *);
+struct block *padblock(struct block *, int);
+
+struct cmdbuf *parsecmd(char *unused_char_p_t, int);
+
+void pgrpcpy(struct pgrp *, struct pgrp *);
+
+int progfdprint(struct chan *, int unused_int, int, char *unused_char_p_t,
+ int i);
+int pullblock(struct block **, int);
+struct block *pullupblock(struct block *, int);
+struct block *pullupqueue(struct queue *, int);
+void putmhead(struct mhead *);
+void putstrn(char *unused_char_p_t, int);
+void qaddlist(struct queue *, struct block *);
+struct block *qbread(struct queue *, int);
+long qbwrite(struct queue *, struct block *);
+long qibwrite(struct queue *q, struct block *b);
+struct queue *qbypass(void (*)(void *, struct block *), void *);
+int qcanread(struct queue *);
+void qclose(struct queue *);
+int qconsume(struct queue *, void *, int);
+struct block *qcopy(struct queue *, int unused_int, uint32_t);
+struct block *qclone(struct queue *q, int header_len, int len,
+ uint32_t offset);
+struct block *blist_clone(struct block *blist, int header_len, int len,
+ uint32_t offset);
+int qdiscard(struct queue *, int);
+void qflush(struct queue *);
+void qfree(struct queue *);
+int qfull(struct queue *);
+struct block *qget(struct queue *);
+void qhangup(struct queue *, char *unused_char_p_t);
+int qisclosed(struct queue *);
+int qiwrite(struct queue *, void *, int);
+int qlen(struct queue *);
+void qnoblock(struct queue *, int);
+struct queue *qopen(int unused_int, int, void (*)(void *), void *);
+int qpass(struct queue *, struct block *);
+int qpassnolim(struct queue *, struct block *);
+int qproduce(struct queue *, void *, int);
+void qputback(struct queue *, struct block *);
+long qread(struct queue *, void *, int);
+struct block *qremove(struct queue *);
+void qreopen(struct queue *);
+void qsetlimit(struct queue *, int);
+int qwindow(struct queue *);
+int qwrite(struct queue *, void *, int);
+void randominit(void);
+uint32_t randomread(void *, uint32_t);
+void *realloc(void *, uint32_t);