Changeset View
Changeset View
Standalone View
Standalone View
sys/kern/kern_conf.c
Show First 20 Lines • Show All 295 Lines • ▼ Show 20 Lines | |||||
static void | static void | ||||
dead_strategy(struct bio *bp) | dead_strategy(struct bio *bp) | ||||
{ | { | ||||
biofinish(bp, NULL, ENXIO); | biofinish(bp, NULL, ENXIO); | ||||
} | } | ||||
#define dead_dump (dumper_t *)enxio | |||||
#define dead_kqfilter (d_kqfilter_t *)enxio | #define dead_kqfilter (d_kqfilter_t *)enxio | ||||
#define dead_mmap_single (d_mmap_single_t *)enodev | #define dead_mmap_single (d_mmap_single_t *)enodev | ||||
static struct cdevsw dead_cdevsw = { | static struct cdevsw dead_cdevsw = { | ||||
.d_version = D_VERSION, | .d_version = D_VERSION, | ||||
.d_open = dead_open, | .d_open = dead_open, | ||||
.d_close = dead_close, | .d_close = dead_close, | ||||
.d_read = dead_read, | .d_read = dead_read, | ||||
.d_write = dead_write, | .d_write = dead_write, | ||||
.d_ioctl = dead_ioctl, | .d_ioctl = dead_ioctl, | ||||
.d_poll = dead_poll, | .d_poll = dead_poll, | ||||
.d_mmap = dead_mmap, | .d_mmap = dead_mmap, | ||||
.d_strategy = dead_strategy, | .d_strategy = dead_strategy, | ||||
.d_name = "dead", | .d_name = "dead", | ||||
.d_dump = dead_dump, | |||||
.d_kqfilter = dead_kqfilter, | .d_kqfilter = dead_kqfilter, | ||||
.d_mmap_single = dead_mmap_single | .d_mmap_single = dead_mmap_single | ||||
}; | }; | ||||
/* Default methods if driver does not specify method */ | /* Default methods if driver does not specify method */ | ||||
#define null_open (d_open_t *)nullop | #define null_open (d_open_t *)nullop | ||||
#define null_close (d_close_t *)nullop | #define null_close (d_close_t *)nullop | ||||
Show All 13 Lines | |||||
static int | static int | ||||
no_poll(struct cdev *dev __unused, int events, struct thread *td __unused) | no_poll(struct cdev *dev __unused, int events, struct thread *td __unused) | ||||
{ | { | ||||
return (poll_no_poll(events)); | return (poll_no_poll(events)); | ||||
} | } | ||||
#define no_dump (dumper_t *)enodev | |||||
static int | static int | ||||
giant_open(struct cdev *dev, int oflags, int devtype, struct thread *td) | giant_open(struct cdev *dev, int oflags, int devtype, struct thread *td) | ||||
{ | { | ||||
struct cdevsw *dsw; | struct cdevsw *dsw; | ||||
int ref, retval; | int ref, retval; | ||||
dsw = dev_refthread(dev, &ref); | dsw = dev_refthread(dev, &ref); | ||||
if (dsw == NULL) | if (dsw == NULL) | ||||
▲ Show 20 Lines • Show All 298 Lines • ▼ Show 20 Lines | if (devsw->d_version != D_VERSION_04) { | ||||
devsw->d_close = dead_close; | devsw->d_close = dead_close; | ||||
devsw->d_read = dead_read; | devsw->d_read = dead_read; | ||||
devsw->d_write = dead_write; | devsw->d_write = dead_write; | ||||
devsw->d_ioctl = dead_ioctl; | devsw->d_ioctl = dead_ioctl; | ||||
devsw->d_poll = dead_poll; | devsw->d_poll = dead_poll; | ||||
devsw->d_mmap = dead_mmap; | devsw->d_mmap = dead_mmap; | ||||
devsw->d_mmap_single = dead_mmap_single; | devsw->d_mmap_single = dead_mmap_single; | ||||
devsw->d_strategy = dead_strategy; | devsw->d_strategy = dead_strategy; | ||||
devsw->d_dump = dead_dump; | |||||
devsw->d_kqfilter = dead_kqfilter; | devsw->d_kqfilter = dead_kqfilter; | ||||
} | } | ||||
if ((devsw->d_flags & D_NEEDGIANT) != 0) { | if ((devsw->d_flags & D_NEEDGIANT) != 0) { | ||||
if ((devsw->d_flags & D_GIANTOK) == 0) { | if ((devsw->d_flags & D_GIANTOK) == 0) { | ||||
printf( | printf( | ||||
"WARNING: Device \"%s\" is Giant locked and may be " | "WARNING: Device \"%s\" is Giant locked and may be " | ||||
"deleted before FreeBSD 14.0.\n", | "deleted before FreeBSD 14.0.\n", | ||||
Show All 21 Lines | #define FIXUP(member, noop, giant) \ | ||||
FIXUP(d_read, no_read, giant_read); | FIXUP(d_read, no_read, giant_read); | ||||
FIXUP(d_write, no_write, giant_write); | FIXUP(d_write, no_write, giant_write); | ||||
FIXUP(d_ioctl, no_ioctl, giant_ioctl); | FIXUP(d_ioctl, no_ioctl, giant_ioctl); | ||||
FIXUP(d_poll, no_poll, giant_poll); | FIXUP(d_poll, no_poll, giant_poll); | ||||
FIXUP(d_mmap, no_mmap, giant_mmap); | FIXUP(d_mmap, no_mmap, giant_mmap); | ||||
FIXUP(d_strategy, no_strategy, giant_strategy); | FIXUP(d_strategy, no_strategy, giant_strategy); | ||||
FIXUP(d_kqfilter, no_kqfilter, giant_kqfilter); | FIXUP(d_kqfilter, no_kqfilter, giant_kqfilter); | ||||
FIXUP(d_mmap_single, no_mmap_single, giant_mmap_single); | FIXUP(d_mmap_single, no_mmap_single, giant_mmap_single); | ||||
if (devsw->d_dump == NULL) devsw->d_dump = no_dump; | |||||
LIST_INIT(&devsw->d_devs); | LIST_INIT(&devsw->d_devs); | ||||
devsw->d_flags |= D_INIT; | devsw->d_flags |= D_INIT; | ||||
if (dsw2 != NULL) | if (dsw2 != NULL) | ||||
cdevsw_free_devlocked(dsw2); | cdevsw_free_devlocked(dsw2); | ||||
return (0); | return (0); | ||||
▲ Show 20 Lines • Show All 891 Lines • Show Last 20 Lines |