devbase
struct devbase *d_next; /* linked list */
struct devbase *d_devbase; /* the base device */
struct devbase *i_base;/* e.g., pointer to "sd" base */
struct devbase *i_atdev;/* if "at <devname><unit>", else NULL */
extern struct devbase *allbases; /* list of all devbase structures */
int devbase_has_instances(struct devbase *, int);
struct devbase *dev;
%type <devb> devbase
DEVICE devbase interface_opt attrs_opt
ATTACH devbase AT atlist devattach_opt attrs_opt
PSEUDO_DEVICE devbase attrs_opt { defdev($2,1,NULL,$3); } |
devbase:
devbase '=' NUMBER { setmajor($1, $3); };
struct devbase *devb;
struct devbase *allbases; /* list of all devbase structures */
devbase_has_instances(struct devbase *dev, int unit)
struct devbase *dev;
struct devbase *d;
struct devbase *d;
struct devbase *d;
static int nparents(struct devi **, struct devbase *, int);
nparents(struct devi **p, struct devbase *dev, int unit)
selectbase(struct devbase *d, struct deva *da)
struct devbase *dev;
addtoattr(struct nvlist *l, struct devbase *dev)
defdev(struct devbase *dev, int ispseudo, struct nvlist *loclist,
struct devbase *
struct devbase *dev;
defdevattach(struct deva *deva, struct devbase *dev, struct nvlist *atlist,
setmajor(struct devbase *d, int n)
struct devbase *dev;
newdevi(const char *name, int unit, struct devbase *d)
static struct devbase errdev;
static struct devbase **nextbase;
struct devbase *ib, *ab;
struct devbase *ib; /* i->i_base */
struct devbase *ab; /* not NULL => at another dev */
static struct nvlist *addtoattr(struct nvlist *, struct devbase *);
static struct devi *newdevi(const char *, int, struct devbase *d);
static void selectbase(struct devbase *, struct deva *);
struct devbase *d;
struct devbase *d;
void defdev(struct devbase *, int, struct nvlist *, struct nvlist *);
void defdevattach(struct deva *, struct devbase *,
struct devbase *getdevbase(char *name);
void setmajor(struct devbase *d, int n);