|
|
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.