1*9ef1f84bSDavid du Colombier /*
2*9ef1f84bSDavid du Colombier * Stub.
3*9ef1f84bSDavid du Colombier */
4*9ef1f84bSDavid du Colombier #include "u.h"
5*9ef1f84bSDavid du Colombier #include "../port/lib.h"
6*9ef1f84bSDavid du Colombier #include "mem.h"
7*9ef1f84bSDavid du Colombier #include "dat.h"
8*9ef1f84bSDavid du Colombier #include "fns.h"
9*9ef1f84bSDavid du Colombier #include "../port/error.h"
10*9ef1f84bSDavid du Colombier
11*9ef1f84bSDavid du Colombier extern Dev* devtab[];
12*9ef1f84bSDavid du Colombier
13*9ef1f84bSDavid du Colombier void
devtabreset(void)14*9ef1f84bSDavid du Colombier devtabreset(void)
15*9ef1f84bSDavid du Colombier {
16*9ef1f84bSDavid du Colombier int i;
17*9ef1f84bSDavid du Colombier
18*9ef1f84bSDavid du Colombier for(i = 0; devtab[i] != nil; i++)
19*9ef1f84bSDavid du Colombier devtab[i]->reset();
20*9ef1f84bSDavid du Colombier }
21*9ef1f84bSDavid du Colombier
22*9ef1f84bSDavid du Colombier void
devtabinit(void)23*9ef1f84bSDavid du Colombier devtabinit(void)
24*9ef1f84bSDavid du Colombier {
25*9ef1f84bSDavid du Colombier int i;
26*9ef1f84bSDavid du Colombier
27*9ef1f84bSDavid du Colombier for(i = 0; devtab[i] != nil; i++)
28*9ef1f84bSDavid du Colombier devtab[i]->init();
29*9ef1f84bSDavid du Colombier }
30*9ef1f84bSDavid du Colombier
31*9ef1f84bSDavid du Colombier void
devtabshutdown(void)32*9ef1f84bSDavid du Colombier devtabshutdown(void)
33*9ef1f84bSDavid du Colombier {
34*9ef1f84bSDavid du Colombier int i;
35*9ef1f84bSDavid du Colombier
36*9ef1f84bSDavid du Colombier /*
37*9ef1f84bSDavid du Colombier * Shutdown in reverse order.
38*9ef1f84bSDavid du Colombier */
39*9ef1f84bSDavid du Colombier for(i = 0; devtab[i] != nil; i++)
40*9ef1f84bSDavid du Colombier ;
41*9ef1f84bSDavid du Colombier for(i--; i >= 0; i--)
42*9ef1f84bSDavid du Colombier devtab[i]->shutdown();
43*9ef1f84bSDavid du Colombier }
44*9ef1f84bSDavid du Colombier
45*9ef1f84bSDavid du Colombier
46*9ef1f84bSDavid du Colombier Dev*
devtabget(int dc,int user)47*9ef1f84bSDavid du Colombier devtabget(int dc, int user)
48*9ef1f84bSDavid du Colombier {
49*9ef1f84bSDavid du Colombier int i;
50*9ef1f84bSDavid du Colombier
51*9ef1f84bSDavid du Colombier for(i = 0; devtab[i] != nil; i++){
52*9ef1f84bSDavid du Colombier if(devtab[i]->dc == dc)
53*9ef1f84bSDavid du Colombier return devtab[i];
54*9ef1f84bSDavid du Colombier }
55*9ef1f84bSDavid du Colombier
56*9ef1f84bSDavid du Colombier if(user == 0)
57*9ef1f84bSDavid du Colombier panic("devtabget %C\n", dc);
58*9ef1f84bSDavid du Colombier
59*9ef1f84bSDavid du Colombier return nil;
60*9ef1f84bSDavid du Colombier }
61*9ef1f84bSDavid du Colombier
62*9ef1f84bSDavid du Colombier long
devtabread(Chan *,void * buf,long n,vlong off)63*9ef1f84bSDavid du Colombier devtabread(Chan*, void* buf, long n, vlong off)
64*9ef1f84bSDavid du Colombier {
65*9ef1f84bSDavid du Colombier int i;
66*9ef1f84bSDavid du Colombier Dev *dev;
67*9ef1f84bSDavid du Colombier char *alloc, *e, *p;
68*9ef1f84bSDavid du Colombier
69*9ef1f84bSDavid du Colombier alloc = malloc(READSTR);
70*9ef1f84bSDavid du Colombier if(alloc == nil)
71*9ef1f84bSDavid du Colombier error(Enomem);
72*9ef1f84bSDavid du Colombier
73*9ef1f84bSDavid du Colombier p = alloc;
74*9ef1f84bSDavid du Colombier e = p + READSTR;
75*9ef1f84bSDavid du Colombier for(i = 0; devtab[i] != nil; i++){
76*9ef1f84bSDavid du Colombier dev = devtab[i];
77*9ef1f84bSDavid du Colombier p = seprint(p, e, "#%C %s\n", dev->dc, dev->name);
78*9ef1f84bSDavid du Colombier }
79*9ef1f84bSDavid du Colombier
80*9ef1f84bSDavid du Colombier if(waserror()){
81*9ef1f84bSDavid du Colombier free(alloc);
82*9ef1f84bSDavid du Colombier nexterror();
83*9ef1f84bSDavid du Colombier }
84*9ef1f84bSDavid du Colombier n = readstr(off, buf, n, alloc);
85*9ef1f84bSDavid du Colombier free(alloc);
86*9ef1f84bSDavid du Colombier poperror();
87*9ef1f84bSDavid du Colombier
88*9ef1f84bSDavid du Colombier return n;
89*9ef1f84bSDavid du Colombier }
90