|
|
1.1 root 1: /*
2: * one dkmod per datakit interface
3: * also any other data common to datakit
4: */
5:
6: #include <sys/param.h>
7: #include <sys/dkmod.h>
8: #include <sys/dkstat.h>
9:
10: #define NDKMOD 4 /* big enough for everyone */
11:
12: int dkmodcnt = NDKMOD;
13:
14: struct dkmodule dkmod[NDKMOD];
15: struct dkstat dkstat;
16:
17: /*
18: * find the appropriate dkmod;
19: * alloc a new one if need be
20: * dev is the entire device
21: */
22:
23: struct dkmodule *
24: dkmodall(dev, lo, hi)
25: dev_t dev;
26: {
27: register int i;
28: register struct dkmodule *dk;
29: register struct dkmodule *ek;
30:
31: dev = major(dev);
32: ek = NULL;
33: for (dk = dkmod, i = 0; i < NDKMOD; dk++, i++) {
34: if (dk->dev == 0 && ek == NULL) {
35: ek = dk;
36: continue;
37: }
38: if (dk->dev == dev && dk->lo == lo && dk->hi == hi)
39: return (dk);
40: }
41: if (ek) {
42: ek->dev = dev;
43: ek->lo = lo;
44: ek->hi = hi;
45: }
46: return (ek);
47: }
48:
49: struct dkmodule *
50: getdkmod(dev)
51: dev_t dev;
52: {
53: register int i;
54: register struct dkmodule *dk;
55: register maj, min;
56:
57: maj = major(dev);
58: min = minor(dev);
59: for (dk = dkmod, i = 0; i < NDKMOD; dk++, i++)
60: if (dk->dev == maj && min >= dk->lo && min < dk->hi)
61: return (dk);
62: return (NULL);
63: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.