V10/sys/mkconf/subdev.c

/*
 * routines for subdevices
 */

#include "mkconf.h"

static char *subfields[] = {
	"ctl", "unit", NULL
};

#define	a_ctl	addr[0]	/* controller number; arbitrary */
#define	a_unit	addr[1]	/* unit number; also arbitrary */

int
subsyntax(dp, ap, n)
register Dev *dp;
char **ap;
int n;
{
	char *p;

	if ((p = keyread(dp->addr, ap, n, subfields)) != 0) {
		fprint(STDERR, "%s %d: bad field %s\n", dp->mdev->name, dp->id, p);
		errs++;
		return (1);
	}
	return (0);
}

int
subputaddr(fd, dp)
int fd;
register Dev *dp;
{
	register int count;
	register Mdev *mp;

	mp = dp->mdev;
	count = 0;
	fprint(fd, "struct subaddr %saddr[] = {\n", mp->tag);
	for (mp = dp->mdev; dp && dp->mdev == mp; dp = dp->next) {
		while (count++ < dp->id)
			fprint(fd, "\t{-1, -1},\n");
		fprint(fd, "\t{%ld, %ld},\n", dp->a_ctl, dp->a_unit);
	}
	fprint(fd, "};\nint %scnt = %d;\n", mp->tag, count);
	putstrs(fd, mp, count);
}