| plan 9 kernel history: overview | file list | diff list |
1997/0327/carrera/devrtc.c (diff list | history)
| 1996/0223/sys/src/9/carrera/devrtc.c:20,26 – 1997/0327/sys/src/9/carrera/devrtc.c:20,26 (short | long | prev | next) | ||
| 1993/0916 | int mon; int year; }; | |
| 1997/0327 | static QLock rtclock; /* mutex on clock operations */ | |
| 1993/0916 | ||
| 1995/0108 | enum | |
| 1996/0223/sys/src/9/carrera/devrtc.c:39,89 – 1997/0327/sys/src/9/carrera/devrtc.c:39,71 | ||
| 1993/0916 | Nvsize = 4096, }; | |
| 1997/0327 | static ulong rtc2sec(Rtc*); static void sec2rtc(ulong, Rtc*); | |
| 1993/0916 |
| |
| 1997/0327 | static Chan* | |
| 1993/0916 | rtcattach(char *spec) { return devattach('r', spec); } | |
| 1997/0327 | static int | |
| 1993/0916 | rtcwalk(Chan *c, char *name) { | |
| 1997/0327 | return devwalk(c, name, rtcdir, nelem(rtcdir), devgen); | |
| 1993/0916 | } | |
| 1997/0327 | static void | |
| 1993/0916 | rtcstat(Chan *c, char *dp) { | |
| 1997/0327 | devstat(c, dp, rtcdir, nelem(rtcdir), devgen); | |
| 1993/0916 | } | |
| 1997/0327 | static Chan* | |
| 1993/0916 | rtcopen(Chan *c, int omode) { omode = openmode(omode); | |
| 1996/0223/sys/src/9/carrera/devrtc.c:96,112 – 1997/0327/sys/src/9/carrera/devrtc.c:78,87 | ||
| 1993/0916 | if(strcmp(up->user, eve)!=0) error(Eperm); } | |
| 1997/0327 | return devopen(c, omode, rtcdir, nelem(rtcdir), devgen); | |
| 1993/0916 | } | |
| 1997/0327 | static void | |
| 1993/0916 | rtcclose(Chan *c) { USED(c); | |
| 1996/0223/sys/src/9/carrera/devrtc.c:151,157 – 1997/0327/sys/src/9/carrera/devrtc.c:126,132 | ||
| 1993/0916 | return rtc2sec(&rtc); } | |
| 1997/0327 | static long | |
| 1993/0916 | rtcread(Chan *c, void *buf, long n, ulong offset) { ulong t, ot; | |
| 1996/0223/sys/src/9/carrera/devrtc.c:158,164 – 1997/0327/sys/src/9/carrera/devrtc.c:133,139 | ||
| 1993/0916 | uchar *f, *to, *e; if(c->qid.path & CHDIR) | |
| 1997/0327 | return devdirread(c, buf, n, rtcdir, nelem(rtcdir), devgen); | |
| 1993/0916 | switch(c->qid.path){ case Qrtc: | |
| 1996/0223/sys/src/9/carrera/devrtc.c:185,196 – 1997/0327/sys/src/9/carrera/devrtc.c:160,165 | ||
| 1993/0916 | return 0; } | |
| 1995/0108 |
| |
| 1993/0916 | static void binary2bcd(int reg, uchar val) { | |
| 1996/0223/sys/src/9/carrera/devrtc.c:201,207 – 1997/0327/sys/src/9/carrera/devrtc.c:170,176 | ||
| 1993/0916 | } | |
| 1997/0327 | static long | |
| 1993/0916 | rtcwrite(Chan *c, void *buf, long n, ulong offset) { Rtc rtc; | |
| 1996/0223/sys/src/9/carrera/devrtc.c:255,280 – 1997/0327/sys/src/9/carrera/devrtc.c:224,247 | ||
| 1993/0916 | return 0; | |
| 1995/0108 | } | |
| 1993/0916 |
| |
| 1997/0327 | Dev rtcdevtab = { devreset, devinit, rtcattach, devclone, rtcwalk, rtcstat, rtcopen, devcreate, rtcclose, rtcread, devbread, rtcwrite, devbwrite, devremove, devwstat, }; | |
| 1993/0916 |
| |
| 1996/0223/sys/src/9/carrera/devrtc.c:294,300 – 1997/0327/sys/src/9/carrera/devrtc.c:261,267 | ||
| 1993/0916 | /* * return the days/month for the given year */ | |
| 1997/0327 | static int* | |
| 1993/0916 | yrsize(int yr) { if((yr % 4) == 0) | |
| 1996/0223/sys/src/9/carrera/devrtc.c:306,312 – 1997/0327/sys/src/9/carrera/devrtc.c:273,279 | ||
| 1993/0916 | /* * compute seconds since Jan 1 1970 */ | |
| 1997/0327 | static ulong | |
| 1993/0916 | rtc2sec(Rtc *rtc) { ulong secs; | |
| 1996/0223/sys/src/9/carrera/devrtc.c:341,347 – 1997/0327/sys/src/9/carrera/devrtc.c:308,314 | ||
| 1993/0916 | /* * compute rtc from seconds since Jan 1 1970 */ | |
| 1997/0327 | static void | |
| 1993/0916 | sec2rtc(ulong secs, Rtc *rtc) { int d; | |