]> git.lizzy.rs Git - plan9front.git/blob - sys/src/cmd/disk/kfs/dat.h
Add Erik Quanstrom's smart tool for ATA SMART.
[plan9front.git] / sys / src / cmd / disk / kfs / dat.h
1 typedef struct  Chan    Chan;
2 typedef struct  Command Command;
3 typedef struct  Conf    Conf;
4 typedef struct  Cons    Cons;
5 typedef struct  Devcall Devcall;
6
7 #define MAXBUFSIZE      (16*1024)       /* max. buffer size */
8
9 #include "portdat.h"
10
11 struct  Chan
12 {
13         int     chan;                   /* fd request came in on */
14         QLock rlock, wlock;             /* lock for reading/writing messages on chan */
15         int     type;
16         int     flags;
17         long    whotime;
18         File*   flist;                  /* base of file structures */
19         Lock    flock;                  /* manipulate flist */
20         RWLock  reflock;                /* lock for Tflush */
21         int     msize;                  /* version */
22         int     authed;         /* someone other than ``none'' has authed */
23
24 /* 9p1 auth */
25         uchar   chal[8];
26         uchar   rchal[8];
27         int     idoffset;
28         int     idvec;
29         Lock    idlock;
30 };
31
32 /*
33  * console cons.flag flags
34  */
35 enum
36 {
37         Fchat   = (1<<0),       /* print out filesys rpc traffic */
38         Fuid    = (1<<2),       /* print out uids */
39                                 /* debugging flags for drivers */
40 };
41
42 struct  Cons
43 {
44         int     flags;          /* overall flags for all channels */
45         int     uid;            /* botch -- used to get uid on cons_create */
46         int     gid;            /* botch -- used to get gid on cons_create */
47         int     allow;          /* no-protection flag */
48         long    offset;         /* used to read files, c.f. fchar */
49         char*   arg;            /* pointer to remaining line */
50
51         Chan    *chan;  /* console channel */
52         Chan    *srvchan;       /* local server channel */
53
54         Filter  work;           /* thruput in messages */
55         Filter  rate;           /* thruput in bytes */
56         Filter  bhit;           /* getbufs that hit */
57         Filter  bread;          /* getbufs that miss and read */
58         Filter  binit;          /* getbufs that miss and dont read */
59         Filter  tags[MAXTAG];   /* reads of each type of block */
60 };
61
62 struct  Conf
63 {
64         ulong   niobuf;         /* number of iobufs to allocate */
65         ulong   nuid;           /* distinct uids */
66         ulong   uidspace;       /* space for uid names -- derrived from nuid */
67         ulong   gidspace;       /* space for gid names -- derrived from nuid */
68         ulong   nserve;         /* server processes */
69         ulong   nfile;          /* number of fid -- system wide */
70         ulong   nwpath;         /* number of active paths, derrived from nfile */
71         ulong   bootsize;       /* number of bytes reserved for booting */
72 };
73
74 struct  Command
75 {
76         char    *string;
77         void    (*func)(void);
78         char    *args;
79 };
80
81 struct Devcall
82 {
83         void    (*init)(Device);
84         void    (*ream)(Device);
85         int     (*check)(Device);
86         long    (*super)(Device);
87         long    (*root)(Device);
88         long    (*size)(Device);
89         int     (*read)(Device, long, void*);
90         int     (*write)(Device, long, void*);
91 };
92
93 /*
94  * device types
95  */
96 enum
97 {
98         Devnone         = 0,
99         Devwren,
100         MAXDEV
101 };
102
103 /*
104  * file systems
105  */
106 enum
107 {
108         MAXFILSYS = 4
109 };
110
111 /*
112  * should be in portdat.h
113  */
114 #define QPDIR   0x80000000L
115 #define QPNONE  0
116 #define QPROOT  1
117 #define QPSUPER 2
118
119 /*
120  * perm argument in p9 create
121  */
122 #define PDIR    (1L<<31)        /* is a directory */
123 #define PAPND   (1L<<30)        /* is append only */
124 #define PLOCK   (1L<<29)        /* is locked on open */
125
126 #define NOF     (-1)
127
128 #define FID1            1
129 #define FID2            2
130 #define FID3            3
131
132 #define SECOND(n)       (n)
133 #define MINUTE(n)       (n*SECOND(60))
134 #define HOUR(n)         (n*MINUTE(60))
135 #define DAY(n)          (n*HOUR(24))
136 #define TLOCK           MINUTE(5)
137
138 #define CHAT(cp)        (chat)
139 #define QID9P1(a,b)     (Qid9p1){a,b}
140
141 extern  Uid*    uid;
142 extern  char*   uidspace;
143 extern  short*  gidspace;
144 extern  char*   errstring[MAXERR];
145 extern  Chan*   chans;
146 extern  RWLock  mainlock;
147 extern  long    boottime;
148 extern  Tlock   *tlocks;
149 extern  Device  devnone;
150 extern  Filsys  filesys[];
151 extern  char    service[];
152 extern  char*   tagnames[];
153 extern  Conf    conf;
154 extern  Cons    cons;
155 extern  Command command[];
156 extern  Chan    *chan;
157 extern  Devcall devcall[];
158 extern  char    *progname;
159 extern  char    *procname;
160 extern  long    niob;
161 extern  long    nhiob;
162 extern  Hiob    *hiob;
163 extern  int     chat;
164 extern  int     writeallow;
165 extern  int     wstatallow;
166 extern  int     allownone;
167 extern  int     noatime;
168 extern  int     writegroup;
169
170 extern Lock wpathlock;