|
|
researchv10 Norman
/*
* one dkmod per datakit interface
* also any other data common to datakit
*/
#include <sys/param.h>
#include <sys/dkmod.h>
#include <sys/dkstat.h>
#define NDKMOD 4 /* big enough for everyone */
int dkmodcnt = NDKMOD;
struct dkmodule dkmod[NDKMOD];
struct dkstat dkstat;
/*
* find the appropriate dkmod;
* alloc a new one if need be
* dev is the entire device
*/
struct dkmodule *
dkmodall(dev, lo, hi)
dev_t dev;
{
register int i;
register struct dkmodule *dk;
register struct dkmodule *ek;
dev = major(dev);
ek = NULL;
for (dk = dkmod, i = 0; i < NDKMOD; dk++, i++) {
if (dk->dev == 0 && ek == NULL) {
ek = dk;
continue;
}
if (dk->dev == dev && dk->lo == lo && dk->hi == hi)
return (dk);
}
if (ek) {
ek->dev = dev;
ek->lo = lo;
ek->hi = hi;
}
return (ek);
}
struct dkmodule *
getdkmod(dev)
dev_t dev;
{
register int i;
register struct dkmodule *dk;
register maj, min;
maj = major(dev);
min = minor(dev);
for (dk = dkmod, i = 0; i < NDKMOD; dk++, i++)
if (dk->dev == maj && min >= dk->lo && min < dk->hi)
return (dk);
return (NULL);
}
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.