/* * Test device */ #include "u.h" #include "../port/lib.h" #include "mem.h" #include "dat.h" #include "fns.h" #include "io.h" #include "../port/error.h" #include "libcrypt.h" #include #define DEBUG 0 extern void _startup(void); enum{ Qdir, Qkt5sum, Qkerndate, }; static Dirtab testtab[]={ ".", { Qdir, 0, QTDIR}, 0, 0555, "kt5sum", { Qkt5sum }, 0, 0444, "kerndate", { Qkerndate }, 0, 0444, }; void ktsum(char *digest) { uchar rawdigest[MD5dlen+1]; int i; void *start = _startup; ulong size = (ulong)etext - (ulong) start; md5(start, size, rawdigest, nil); for (i=0; iqid.path) { case Qdir: return devdirread(c, a, n, testtab, nelem(testtab), devgen); case Qkt5sum: ktsum(digest); return readstr(offset, a, n, digest); case Qkerndate: sprint(digest, "%ld\n", kerndate); return readstr(offset, a, n, digest); default: n = 0; break; } return n; } static long testwrite(Chan*, void*, long, vlong) { error(Ebadusefd); return 0; } Dev testdevtab = { 'Z', "test", devreset, devinit, devshutdown, testattach, testwalk, teststat, testopen, devcreate, testclose, testread, devbread, testwrite, devbwrite, devremove, devwstat, };