devsw
for (i = 0; devsw[i] != NULL; i++) {
if (devsw[i]->dv_print != NULL) {
if (devsw[i]->dv_print(verbose))
devsw[i]->dv_name);
struct devsw netdev = {
extern struct devsw netdev;
struct devsw md_dev = {
struct devsw vdisk_dev = {
extern struct devsw efipart_dev;
extern struct devsw efipart_fddev;
extern struct devsw efipart_cddev;
extern struct devsw efipart_hddev;
extern struct devsw efihttp_dev;
extern struct devsw efinet_dev;
struct devsw *pd_devsw; /* Back pointer to devsw */
pdinfo_list_t *efiblk_get_pdinfo_list(struct devsw *dev);
int efi_register_handles(struct devsw *, EFI_HANDLE *, EFI_HANDLE *, int);
EFI_HANDLE efi_find_handle(struct devsw *, int);
int efi_handle_lookup(EFI_HANDLE, struct devsw **, int *, uint64_t *);
int efi_handle_update_dev(EFI_HANDLE, struct devsw *, int, uint64_t);
struct devsw efihttp_dev = {
struct devsw efinet_dev = {
extern struct devsw netdev;
efiblk_get_pdinfo_list(struct devsw *dev)
struct devsw efipart_fddev = {
efipart_print_common(struct devsw *dev, pdinfo_list_t *pdlist, int verbose)
struct devsw efipart_cddev = {
struct devsw efipart_hddev = {
efi_handle_update_dev(EFI_HANDLE h, struct devsw *dev, int unit,
struct devsw *dev;
efi_register_handles(struct devsw *sw, EFI_HANDLE *handles,
efi_find_handle(struct devsw *dev, int unit)
efi_handle_lookup(EFI_HANDLE h, struct devsw **dev, int *unit, uint64_t *extra)
extern struct devsw vdisk_dev;
extern struct devsw md_dev;
struct devsw *devsw[] = {
for (i = 0; devsw[i] != NULL; ++i)
if (devsw[i]->dv_cleanup != NULL)
(devsw[i]->dv_cleanup)();
for (i = 0; devsw[i] != NULL; ++i)
if (devsw[i]->dv_cleanup != NULL)
(devsw[i]->dv_cleanup)();
set_currdev_devsw(struct devsw *dev, int unit)
extern struct devsw md_dev;
struct devsw *dev;
struct devsw *devsw[] = {
for (i = 0; devsw[i] != NULL; i++) {
if (devsw[i]->dv_print != NULL) {
if (devsw[i]->dv_print(1))
devsw[i]->dv_name);
struct devsw biosfd = {
struct devsw bioscd = {
struct devsw bioshd = {
bd_get_bdinfo_list(struct devsw *dev)
bd_print_common(struct devsw *dev, bdinfo_list_t *bdi, int verbose)
extern struct devsw bioscd;
extern struct devsw biosfd;
extern struct devsw bioshd;
extern struct devsw pxedisk;
struct devsw pxedisk = {
extern struct devsw netdev;
extern struct devsw vdisk_dev;
struct devsw *devsw[] = {
for (i = 0; devsw[i] != NULL; ++i)
if (devsw[i]->dv_cleanup != NULL)
(devsw[i]->dv_cleanup)();
extern struct devsw hostdisk;
extern struct devsw host_dev;
struct devsw *devsw[] = {
hostdisk_match(struct devsw *devsw, const char *devspec)
static bool hostdisk_match(struct devsw *devsw, const char *devspec);
struct devsw hostdisk = {
extern struct devsw host_dev;
struct devsw host_dev = {
extern struct devsw ofwdisk;
extern struct devsw ofw_netdev;
ofwd_match(struct devsw *devsw, const char *devspec)
return (ofw_path_to_handle(devspec, devsw->dv_name, &path) != -1);
static bool ofwd_match(struct devsw *, const char *);
struct devsw ofwdisk = {
static bool ofwnd_match(struct devsw *, const char *);
struct devsw ofw_netdev = {
ofwnd_match(struct devsw *devsw, const char *devspec)
return (ofw_path_to_handle(devspec, devsw->dv_name, &path) != -1);
struct devsw *dv;
for (i = 0; devsw[i] != NULL; i++) {
dv = devsw[i];
if (devsw[i] == NULL)
for (int i = 0; devsw[i] != NULL; i++) {
if (devsw[i]->dv_init != NULL) {
if ((devsw[i]->dv_init)() != 0) {
for (i = 0; devsw[i] != NULL; ++i)
if (devsw[i]->dv_cleanup != NULL)
(devsw[i]->dv_cleanup)();
static struct devsw geli_devsw = {
bool (*dv_match)(struct devsw *, const char *);
extern struct devsw netdev;
struct devsw *d_dev;
struct devsw *f_dev; /* pointer to device operations */
extern struct devsw *devsw[];
extern struct devsw zfs_dev;
struct devsw zfs_dev = {
struct devsw zfs_dev;
struct devsw *devsw[] = {
struct devsw *devsw[] = {
struct devsw *devsw[] = {
struct devsw *dv;
for (i = 0, dv = NULL; devsw[i] != NULL; i++) {
if (!strncmp(devspec, devsw[i]->dv_name,
strlen(devsw[i]->dv_name))) {
dv = devsw[i];
extern struct devsw uboot_storage;
open_result = devsw[devidx]->dv_open(&f, &currdev);
open_result = devsw[devidx]->dv_open(&f, &currdev);
open_result = devsw[devidx]->dv_open(&f,&currdev);
for (i = 0; devsw[i] != NULL; i++) {
if (devsw[i]->dv_init == NULL)
if ((devsw[i]->dv_init)() != 0)
printf("Found U-Boot device: %s\n", devsw[i]->dv_name);
currdev.dd.d_dev = devsw[i];
strcmp(devsw[i]->dv_name, "disk") == 0) {
strcmp(devsw[i]->dv_name, "net") == 0)
if (devsw[i] == NULL) {
struct devsw uboot_storage = {
struct devsw;
extern struct devsw umass_disk;
struct devsw umass_disk = {
extern struct devsw vdisk_dev;
struct devsw *devsw[] = {
struct devsw host_dev = {
extern struct devsw userboot_disk;
extern struct devsw host_dev;
struct devsw userboot_disk = {
size_t offset, uint32_t magic, struct cdevsw *devsw,
md_args.mda_devsw = devsw;
error = make_dev_s(&md_args, &cd->cdev, "%s", devsw->d_name);
"%#010x eobyte %#010x\n", devsw->d_name, (uintmax_t)pa,
struct cdevsw *devsw;
devsw = dev->si_devsw;
if (!devsw->d_ioctl) {
error = devsw->d_ioctl(dev, DIOCGSECTORSIZE,
error = devsw->d_ioctl(dev, DIOCGMEDIASIZE,
static int make_dev_credv(int flags, struct cdev **dres, struct cdevsw *devsw,
fini_cdevsw(struct cdevsw *devsw)
if (devsw->d_gianttrick != NULL) {
gt = devsw->d_gianttrick;
memcpy(devsw, gt, sizeof *devsw);
devsw->d_gianttrick = NULL;
devsw->d_flags &= ~D_INIT;
prep_cdevsw(struct cdevsw *devsw, int flags)
if (devsw->d_flags & D_INIT)
if (devsw->d_flags & D_NEEDGIANT) {
if (dsw2 == NULL && !(devsw->d_flags & D_INIT))
if (devsw->d_flags & D_INIT) {
if (devsw->d_version != D_VERSION_04) {
devsw->d_name == NULL ? "???" : devsw->d_name,
devsw->d_open = dead_open;
devsw->d_close = dead_close;
devsw->d_read = dead_read;
devsw->d_write = dead_write;
devsw->d_ioctl = dead_ioctl;
devsw->d_poll = dead_poll;
devsw->d_mmap = dead_mmap;
devsw->d_mmap_single = dead_mmap_single;
devsw->d_strategy = dead_strategy;
devsw->d_kqfilter = dead_kqfilter;
if ((devsw->d_flags & D_NEEDGIANT) != 0) {
if ((devsw->d_flags & D_GIANTOK) == 0) {
devsw->d_name == NULL ? "???" : devsw->d_name);
if (devsw->d_gianttrick == NULL) {
memcpy(dsw2, devsw, sizeof *dsw2);
devsw->d_gianttrick = dsw2;
if (devsw->member == NULL) { \
devsw->member = noop; \
} else if (devsw->d_flags & D_NEEDGIANT) \
devsw->member = giant; \
LIST_INIT(&devsw->d_devs);
devsw->d_flags |= D_INIT;
make_dev_credv(int flags, struct cdev **dres, struct cdevsw *devsw, int unit,
args.mda_devsw = devsw;
make_dev(struct cdevsw *devsw, int unit, uid_t uid, gid_t gid, int mode,
res = make_dev_credv(0, &dev, devsw, unit, NULL, uid, gid, mode, fmt,
make_dev_cred(struct cdevsw *devsw, int unit, struct ucred *cr, uid_t uid,
res = make_dev_credv(0, &dev, devsw, unit, cr, uid, gid, mode, fmt, ap);
make_dev_credf(int flags, struct cdevsw *devsw, int unit, struct ucred *cr,
res = make_dev_credv(flags, &dev, devsw, unit, cr, uid, gid, mode,
make_dev_p(int flags, struct cdev **cdev, struct cdevsw *devsw,
res = make_dev_credv(flags, cdev, devsw, 0, cr, uid, gid, mode,