DEVSW(9) | Kernel Developer's Manual | DEVSW(9) |
devsw
, devsw_attach
,
devsw_detach
, bdevsw_lookup
,
cdevsw_lookup
,
bdevsw_lookup_major
,
cdevsw_lookup_major
—
#include <sys/conf.h>
int
devsw_attach
(const char
*devname, const struct bdevsw *bev,
devmajor_t *bmajor, const struct
cdevsw *cdev, devmajor_t *cmajor);
int
devsw_detach
(const struct bdevsw
*bdev, const struct cdevsw *cdev);
const struct bdevsw *
bdevsw_lookup
(dev_t dev);
const struct cdevsw *
cdevsw_lookup
(dev_t dev);
devmajor_t
bdevsw_lookup_major
(const struct
bdevsw *bdev);
devmajor_t
cdevsw_lookup_major
(const struct
cdevsw *cdev);
For drivers which are included in the kernel via
config(1), the
cdevsw and bdevsw structures are
automatically linked into the configuration database. For drivers which are
separately loaded, the devsw_attach
() function
creates the necessary linkage and associates the cdev and
optional bdev with the
driver(9). If there is no
block device interface needed, bdev should be set to
NULL
and bmajor to
-1
. The devname, major number, and
device type (character or block) must correspond to the device file which
will be opened by user programs. By passing -1
to
the function for the cmajor or bmajor,
the major number can be automatically generated. It can then be returned to
userspace (for example, using
sysctl(8)) for creation of the
device node.
The devsw_detach
() function is used to
detach the bdev and cdev structures.
devsw_detach
() should be called before a loaded
device driver is unloaded.
The bdevsw_lookup
() and
cdevsw_lookup
() functions return const
struct bdevsw * and const struct cdevsw * for the
given dev.
The bdevsw_lookup_major
() and
cdevsw_lookup_major
() functions return
devmajor_t for the given const struct bdevsw
* or const struct cdevsw *.
devsw_attach
() and
devsw_detach
() return 0. Otherwise they return an
error value.
In case of failure, bdevsw_lookup
() and
cdevsw_lookup
() return the
NULL
value.
The bdevsw_lookup_major
() and
cdevsw_lookup_major
() functions return
NODEVMAJOR
for an unsuccessful completion.
April 30, 2017 | NetBSD 9.0 |