summaryrefslogtreecommitdiff
path: root/static/netbsd/man9/devsw_attach.9
diff options
context:
space:
mode:
Diffstat (limited to 'static/netbsd/man9/devsw_attach.9')
-rw-r--r--static/netbsd/man9/devsw_attach.9185
1 files changed, 185 insertions, 0 deletions
diff --git a/static/netbsd/man9/devsw_attach.9 b/static/netbsd/man9/devsw_attach.9
new file mode 100644
index 00000000..48ccbbce
--- /dev/null
+++ b/static/netbsd/man9/devsw_attach.9
@@ -0,0 +1,185 @@
+.\" $NetBSD: devsw_attach.9,v 1.6 2023/02/02 14:09:52 uwe Exp $
+.\"
+.\" Copyright (c) 2015 The NetBSD Foundation, Inc.
+.\" All rights reserved.
+.\"
+.\" This code is derived from software contributed to The NetBSD Foundation
+.\" by Kamil Rytarowski.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\" notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\" notice, this list of conditions and the following disclaimer in the
+.\" documentation and/or other materials provided with the distribution.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
+.\" ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+.\" TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+.\" PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
+.\" BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+.\" CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+.\" SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+.\" INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+.\" CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+.\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+.\" POSSIBILITY OF SUCH DAMAGE.
+.\"
+.Dd February 2, 2023
+.Dt DEVSW 9
+.Os
+.Sh NAME
+.Nm devsw ,
+.Nm devsw_attach ,
+.Nm devsw_detach ,
+.Nm bdevsw_lookup ,
+.Nm cdevsw_lookup ,
+.Nm bdevsw_lookup_major ,
+.Nm cdevsw_lookup_major
+.Nd character and block device switch functions
+.Sh SYNOPSIS
+.In sys/conf.h
+.Ft int
+.Fo devsw_attach
+.Fa "const char *devname"
+.Fa "const struct bdevsw *bev"
+.Fa "devmajor_t *bmajor"
+.Fa "const struct cdevsw *cdev"
+.Fa "devmajor_t *cmajor"
+.Fc
+.Ft void
+.Fo devsw_detach
+.Fa "const struct bdevsw *bdev"
+.Fa "const struct cdevsw *cdev"
+.Fc
+.Ft "const struct bdevsw *"
+.Fo bdevsw_lookup
+.Fa "dev_t dev"
+.Fc
+.Ft "const struct cdevsw *"
+.Fo cdevsw_lookup
+.Fa "dev_t dev"
+.Fc
+.Ft devmajor_t
+.Fo bdevsw_lookup_major
+.Fa "const struct bdevsw *bdev"
+.Fc
+.Ft devmajor_t
+.Fo cdevsw_lookup_major
+.Fa "const struct cdevsw *cdev"
+.Fc
+.Sh DESCRIPTION
+If a device driver has character device interfaces accessed from
+userland, the driver must define a
+.Vt cdevsw
+structure.
+If the driver also has block device interfaces, the driver must
+additionally define a
+.Vt bdevsw
+structure.
+These structures are constant, and are defined within the
+.Xr driver 9 .
+.Pp
+For drivers which are included in the kernel via
+.Xr config 1 ,
+the
+.Vt cdevsw
+and
+.Vt bdevsw
+structures are automatically linked into the configuration database.
+For drivers which are separately loaded, the
+.Fn devsw_attach
+function creates the necessary linkage and associates the
+.Fa cdev
+and optional
+.Fa bdev
+with the
+.Xr driver 9 .
+If there is no block device interface needed,
+.Fa bdev
+should be set to
+.Dv NULL
+and
+.Fa bmajor
+to
+.Dv NODEVMAJOR .
+The
+.Fa devname ,
+major number, and device type
+(character or block)
+must correspond to the device file which will be opened by user programs.
+By passing
+.Dv NODEVMAJOR
+to the function for the
+.Fa cmajor
+or
+.Fa bmajor ,
+the major number can be automatically generated.
+It can then be returned to userspace
+.Po
+for example, using
+.Xr sysctl 8
+.Pc
+for creation of the device node.
+.Pp
+The
+.Fn devsw_detach
+function is used to detach the
+.Fa bdev
+and
+.Fa cdev
+structures.
+.Fn devsw_detach
+should be called before a loaded device driver is unloaded.
+The caller must ensure that there are no open instances of the device,
+and that the device's
+.Fa d_open
+function will fail, before calling
+.Fn devsw_detach .
+.Pp
+The
+.Fn bdevsw_lookup
+and
+.Fn cdevsw_lookup
+functions return
+.Vt "const struct bdevsw *"
+and
+.Vt "const struct cdevsw *"
+for the given
+.Fa dev .
+.Pp
+The
+.Fn bdevsw_lookup_major
+and
+.Fn cdevsw_lookup_major
+functions return
+.Vt "devmajor_t"
+for the given
+.Vt "const struct bdevsw *"
+or
+.Vt "const struct cdevsw *" .
+.Sh RETURN VALUES
+Upon successful completion,
+.Fn devsw_attach
+returns 0.
+Otherwise it returns an error value.
+.Pp
+In case of failure,
+.Fn bdevsw_lookup
+and
+.Fn cdevsw_lookup
+return the
+.Dv NULL
+value.
+.Pp
+The
+.Fn bdevsw_lookup_major
+and
+.Fn cdevsw_lookup_major
+functions return
+.Dv NODEVMAJOR
+for an unsuccessful completion.
+.Sh SEE ALSO
+.Xr driver 9