|
|
1.1 ! root 1: /* ! 2: * routines for subdevices ! 3: */ ! 4: ! 5: #include "mkconf.h" ! 6: ! 7: static char *subfields[] = { ! 8: "ctl", "unit", NULL ! 9: }; ! 10: ! 11: #define a_ctl addr[0] /* controller number; arbitrary */ ! 12: #define a_unit addr[1] /* unit number; also arbitrary */ ! 13: ! 14: int ! 15: subsyntax(dp, ap, n) ! 16: register Dev *dp; ! 17: char **ap; ! 18: int n; ! 19: { ! 20: char *p; ! 21: ! 22: if ((p = keyread(dp->addr, ap, n, subfields)) != 0) { ! 23: fprint(STDERR, "%s %d: bad field %s\n", dp->mdev->name, dp->id, p); ! 24: errs++; ! 25: return (1); ! 26: } ! 27: return (0); ! 28: } ! 29: ! 30: int ! 31: subputaddr(fd, dp) ! 32: int fd; ! 33: register Dev *dp; ! 34: { ! 35: register int count; ! 36: register Mdev *mp; ! 37: ! 38: mp = dp->mdev; ! 39: count = 0; ! 40: fprint(fd, "struct subaddr %saddr[] = {\n", mp->tag); ! 41: for (mp = dp->mdev; dp && dp->mdev == mp; dp = dp->next) { ! 42: while (count++ < dp->id) ! 43: fprint(fd, "\t{-1, -1},\n"); ! 44: fprint(fd, "\t{%ld, %ld},\n", dp->a_ctl, dp->a_unit); ! 45: } ! 46: fprint(fd, "};\nint %scnt = %d;\n", mp->tag, count); ! 47: putstrs(fd, mp, count); ! 48: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.