DEVSW(9)               NetBSD Kernel Developer's Manual               DEVSW(9)

NAME
     devsw, devsw_attach, devsw_detach, bdevsw_lookup, cdevsw_lookup,
     bdevsw_lookup_major, cdevsw_lookup_major -- character and block device
     switch functions

SYNOPSIS
     #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);

DESCRIPTION
     If a device driver has character device interfaces accessed from user-
     land, the driver must define a cdevsw structure.  If the driver also has
     block device interfaces, the driver must additionally define a bdevsw
     structure.  These structures are constant, and are defined within the
     driver(9).

     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 struc-
     tures.  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 *.

RETURN VALUES
     Upon successful completion, 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.

SEE ALSO
     driver(9)

NetBSD 8.1                      April 30, 2017                      NetBSD 8.1

You can also request any man page by name and (optionally) by section:

Command: 
Section: 
Architecture: 
Collection: 
 

Use the DEFAULT collection to view manual pages for third-party software.


©1994 Man-cgi 1.15, Panagiotis Christias
©1996-2019 Modified for NetBSD by Kimmo Suominen