MCPcopy Create free account
hub / github.com/F-Stack/f-stack / prep_cdevsw

Function prep_cdevsw

freebsd/kern/kern_conf.c:627–709  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

625}
626
627static int
628prep_cdevsw(struct cdevsw *devsw, int flags)
629{
630 struct cdevsw *dsw2;
631
632 dev_lock_assert_locked();
633 if (devsw->d_flags & D_INIT)
634 return (0);
635 if (devsw->d_flags & D_NEEDGIANT) {
636 dev_unlock();
637 dsw2 = malloc(sizeof *dsw2, M_DEVT,
638 (flags & MAKEDEV_NOWAIT) ? M_NOWAIT : M_WAITOK);
639 dev_lock();
640 if (dsw2 == NULL && !(devsw->d_flags & D_INIT))
641 return (ENOMEM);
642 } else
643 dsw2 = NULL;
644 if (devsw->d_flags & D_INIT) {
645 if (dsw2 != NULL)
646 cdevsw_free_devlocked(dsw2);
647 return (0);
648 }
649
650 if (devsw->d_version != D_VERSION_04) {
651 printf(
652 "WARNING: Device driver \"%s\" has wrong version %s\n",
653 devsw->d_name == NULL ? "???" : devsw->d_name,
654 "and is disabled. Recompile KLD module.");
655 devsw->d_open = dead_open;
656 devsw->d_close = dead_close;
657 devsw->d_read = dead_read;
658 devsw->d_write = dead_write;
659 devsw->d_ioctl = dead_ioctl;
660 devsw->d_poll = dead_poll;
661 devsw->d_mmap = dead_mmap;
662 devsw->d_mmap_single = dead_mmap_single;
663 devsw->d_strategy = dead_strategy;
664 devsw->d_dump = dead_dump;
665 devsw->d_kqfilter = dead_kqfilter;
666 }
667
668 if (devsw->d_flags & D_NEEDGIANT) {
669 printf("WARNING: Device \"%s\" is Giant locked and may be "
670 "deleted before FreeBSD 14.0.\n",
671 devsw->d_name == NULL ? "???" : devsw->d_name);
672 if (devsw->d_gianttrick == NULL) {
673 memcpy(dsw2, devsw, sizeof *dsw2);
674 devsw->d_gianttrick = dsw2;
675 dsw2 = NULL;
676 }
677 }
678
679#define FIXUP(member, noop, giant) \
680 do { \
681 if (devsw->member == NULL) { \
682 devsw->member = noop; \
683 } else if (devsw->d_flags & D_NEEDGIANT) \
684 devsw->member = giant; \

Callers 2

make_dev_svFunction · 0.85
clone_createFunction · 0.85

Calls 6

dev_unlockFunction · 0.85
mallocFunction · 0.85
dev_lockFunction · 0.85
cdevsw_free_devlockedFunction · 0.85
printfFunction · 0.70
memcpyFunction · 0.50

Tested by

no test coverage detected