]> git.lizzy.rs Git - plan9front.git/blob - sys/src/9/xen/devrtc.c
bcm: flush out early boot messages on uart and screen initialization
[plan9front.git] / sys / src / 9 / xen / devrtc.c
1 /*
2  * Xen wall clock
3  */
4
5 #include        "u.h"
6 #include        "../port/lib.h"
7 #include        "mem.h"
8 #include        "dat.h"
9 #include        "fns.h"
10 #include        "../port/error.h"
11
12 enum{
13         Qdir = 0,
14         Qrtc,
15 };
16
17 Dirtab rtcdir[]={
18         ".",    {Qdir, 0, QTDIR},       0,      0555,
19         "rtc",          {Qrtc, 0},      0,      0664,
20 };
21
22 static long
23 rtcread(Chan *c, void *a, long n, vlong offset)
24 {
25         if(c->qid.type & QTDIR)
26                 return devdirread(c, a, n, rtcdir, nelem(rtcdir), devgen);
27
28         switch((ulong)c->qid.path){
29         case Qrtc:
30                 return readnum((ulong)offset, a, n, xenwallclock(), 12);
31         }
32         error(Ebadarg);
33         return 0;
34 }
35
36 static long
37 rtcwrite(Chan*c, void*, long n, vlong)
38 {
39         switch((ulong)c->qid.path){
40         case Qrtc:
41                 return n;
42         }
43         error(Eperm);
44         return 0;
45 }
46
47 static Chan*
48 rtcattach(char* spec)
49 {
50         return devattach('r', spec);
51 }
52
53 static Walkqid*  
54 rtcwalk(Chan* c, Chan *nc, char** name, int nname)
55 {
56         return devwalk(c, nc, name, nname, rtcdir, nelem(rtcdir), devgen);
57 }
58
59 static int       
60 rtcstat(Chan* c, uchar* dp, int n)
61 {
62         return devstat(c, dp, n, rtcdir, nelem(rtcdir), devgen);
63 }
64
65 static Chan*
66 rtcopen(Chan* c, int omode)
67 {
68         return devopen(c, omode, rtcdir, nelem(rtcdir), devgen);
69 }
70
71 static void      
72 rtcclose(Chan*)
73 {
74 }
75
76 Dev rtcdevtab = {
77         'r',
78         "rtc",
79
80         devreset,
81         devinit,
82         devshutdown,
83         rtcattach,
84         rtcwalk,
85         rtcstat,
86         rtcopen,
87         devcreate,
88         rtcclose,
89         rtcread,
90         devbread,
91         rtcwrite,
92         devbwrite,
93         devremove,
94         devwstat,
95 };
96