Changeset View
Changeset View
Standalone View
Standalone View
sys/geom/geom_dev.c
Show First 20 Lines • Show All 340 Lines • ▼ Show 20 Lines | g_dev_taste(struct g_class *mp, struct g_provider *pp, int insist __unused) | ||||
g_topology_assert(); | g_topology_assert(); | ||||
gp = g_new_geomf(mp, "%s", pp->name); | gp = g_new_geomf(mp, "%s", pp->name); | ||||
sc = g_malloc(sizeof(*sc), M_WAITOK | M_ZERO); | sc = g_malloc(sizeof(*sc), M_WAITOK | M_ZERO); | ||||
mtx_init(&sc->sc_mtx, "g_dev", NULL, MTX_DEF); | mtx_init(&sc->sc_mtx, "g_dev", NULL, MTX_DEF); | ||||
cp = g_new_consumer(gp); | cp = g_new_consumer(gp); | ||||
cp->private = sc; | cp->private = sc; | ||||
cp->flags |= G_CF_DIRECT_SEND | G_CF_DIRECT_RECEIVE; | cp->flags |= G_CF_DIRECT_SEND | G_CF_DIRECT_RECEIVE; | ||||
error = g_attach(cp, pp); | error = g_attach(cp, pp); | ||||
KASSERT(error == 0, | KASSERT(error == 0 || error == ENXIO, | ||||
("g_dev_taste(%s) failed to g_attach, err=%d", pp->name, error)); | ("g_dev_taste(%s) failed to g_attach, err=%d", pp->name, error)); | ||||
make_dev_args_init(&args); | make_dev_args_init(&args); | ||||
args.mda_flags = MAKEDEV_CHECKNAME | MAKEDEV_WAITOK; | args.mda_flags = MAKEDEV_CHECKNAME | MAKEDEV_WAITOK; | ||||
args.mda_devsw = &g_dev_cdevsw; | args.mda_devsw = &g_dev_cdevsw; | ||||
args.mda_cr = NULL; | args.mda_cr = NULL; | ||||
args.mda_uid = UID_ROOT; | args.mda_uid = UID_ROOT; | ||||
args.mda_gid = GID_OPERATOR; | args.mda_gid = GID_OPERATOR; | ||||
▲ Show 20 Lines • Show All 539 Lines • Show Last 20 Lines |