1eba00c11SDavid du Colombier #include <u.h>
2eba00c11SDavid du Colombier #include <libc.h>
3eba00c11SDavid du Colombier #include "cec.h"
4eba00c11SDavid du Colombier
5eba00c11SDavid du Colombier static int fd = -1;
6*68de9c93SDavid du Colombier extern char *svc;
7eba00c11SDavid du Colombier
8eba00c11SDavid du Colombier void
rawon(void)9eba00c11SDavid du Colombier rawon(void)
10eba00c11SDavid du Colombier {
11*68de9c93SDavid du Colombier if(svc)
12*68de9c93SDavid du Colombier return;
13eba00c11SDavid du Colombier if((fd = open("/dev/consctl", OWRITE)) == -1 ||
14eba00c11SDavid du Colombier write(fd, "rawon", 5) != 5)
15eba00c11SDavid du Colombier fprint(2, "Can't make console raw\n");
16eba00c11SDavid du Colombier }
17eba00c11SDavid du Colombier
18eba00c11SDavid du Colombier void
rawoff(void)19eba00c11SDavid du Colombier rawoff(void)
20eba00c11SDavid du Colombier {
21*68de9c93SDavid du Colombier if(svc)
22*68de9c93SDavid du Colombier return;
23eba00c11SDavid du Colombier close(fd);
24eba00c11SDavid du Colombier }
25eba00c11SDavid du Colombier
26eba00c11SDavid du Colombier enum {
27eba00c11SDavid du Colombier Perline = 16,
28eba00c11SDavid du Colombier Perch = 3,
29eba00c11SDavid du Colombier };
30eba00c11SDavid du Colombier
31eba00c11SDavid du Colombier char line[Perch*Perline+1];
32eba00c11SDavid du Colombier
33eba00c11SDavid du Colombier static void
format(uchar * buf,int n,int t)34eba00c11SDavid du Colombier format(uchar *buf, int n, int t)
35eba00c11SDavid du Colombier {
36eba00c11SDavid du Colombier int i, r;
37eba00c11SDavid du Colombier
38eba00c11SDavid du Colombier for(i = 0; i < n; i++){
39eba00c11SDavid du Colombier r = (i + t) % Perline;
40eba00c11SDavid du Colombier if(r == 0 && i + t > 0)
41eba00c11SDavid du Colombier fprint(2, "%s\n", line);
42eba00c11SDavid du Colombier sprint(line + r*Perch, "%.2x ", buf[i]);
43eba00c11SDavid du Colombier }
44eba00c11SDavid du Colombier }
45eba00c11SDavid du Colombier
46eba00c11SDavid du Colombier void
dump(uchar * p,int n)47eba00c11SDavid du Colombier dump(uchar *p, int n)
48eba00c11SDavid du Colombier {
49eba00c11SDavid du Colombier format(p, n, 0);
50eba00c11SDavid du Colombier if(n % 16 > 0)
51eba00c11SDavid du Colombier print("%s\n", line);
52eba00c11SDavid du Colombier }
53