xref: /illumos-gate/usr/src/man/man9s/dev_ops.9s (revision 0d1087e85d1cd423a6cbe5358a51a160350e956e)
te
Copyright (c) 2008, Sun Microsystems, Inc., All Rights Reserved
The contents of this file are subject to the terms of the Common Development and Distribution License (the "License"). You may not use this file except in compliance with the License.
You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE or http://www.opensolaris.org/os/licensing. See the License for the specific language governing permissions and limitations under the License.
When distributing Covered Code, include this CDDL HEADER in each file and include the License file at usr/src/OPENSOLARIS.LICENSE. If applicable, add the following below this CDDL HEADER, with the fields enclosed by brackets "[]" replaced with your own identifying information: Portions Copyright [yyyy] [name of copyright owner]
DEV_OPS 9S "Sep 16, 2008"
NAME
dev_ops - device operations structure
SYNOPSIS
#include <sys/conf.h>
#include <sys/devops.h>
INTERFACE LEVEL
illumos DDI specific (illumos DDI).
DESCRIPTION
dev_ops contains driver common fields and pointers to the bus_ops and cb_ops(9S).

Following are the device functions provided in the device operations structure. All fields must be set at compile time. devo_rev

Driver build version. Set this to DEVO_REV.

devo_refcnt

Driver reference count. Set this to 0.

devo_getinfo

Get device driver information (see getinfo(9E)).

devo_identify

This entry point is obsolete. Set to nulldev.

devo_probe

Probe device. See probe(9E).

devo_attach

Attach driver to dev_info. See attach(9E).

devo_detach

Detach/prepare driver to unload. See detach(9E).

devo_reset

Reset device. (Not supported in this release.) Set this to nodev.

devo_cb_ops

Pointer to cb_ops(9S) structure for leaf drivers.

devo_bus_ops

Pointer to bus operations structure for nexus drivers. Set this to NULL if this is for a leaf driver.

devo_power

Power a device attached to system. See power(9E).

devo_quiesce

Quiesce a device attached to system (see quiesce(9E) for more information). This can be set to ddi_quiesce_not_needed() if the driver does not need to implement quiesce.

STRUCTURE MEMBERS
int devo_rev;
int devo_refcnt;
int (*devo_getinfo)(dev_info_t *dip,
 ddi_info_cmd_t infocmd, void *arg, void **result);
int (*devo_identify)(dev_info_t *dip);
int (*devo_probe)(dev_info_t *dip);
int (*devo_attach)(dev_info_t *dip,
 ddi_attach_cmd_t cmd);
int (*devo_detach)(dev_info_t *dip,
 ddi_detach_cmd_t cmd);
int (*devo_reset)(dev_info_t *dip, ddi_reset_cmd_t cmd);
struct cb_ops *devo_cb_ops;
struct bus_ops *devo_bus_ops;
int (*devo_power)(dev_info_t *dip, int component, int level);
int (*devo_quiesce)(dev_info_t *dip);
SEE ALSO
attach(9E), detach(9E), getinfo(9E), probe(9E), power(9E), quiesce(9E), nodev(9F)

Writing Device Drivers