From 74a4d8c26dd3c1e9febcb717cfd6cb6512991a7a Mon Sep 17 00:00:00 2001 From: "Charles.Forsyth" Date: Fri, 22 Dec 2006 21:39:35 +0000 Subject: 20060303 --- os/port/devtest.c | 125 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 125 insertions(+) create mode 100644 os/port/devtest.c (limited to 'os/port/devtest.c') diff --git a/os/port/devtest.c b/os/port/devtest.c new file mode 100644 index 00000000..2c935014 --- /dev/null +++ b/os/port/devtest.c @@ -0,0 +1,125 @@ +/* + * 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, +}; + -- cgit v1.2.3