FreeBSD Architecture Handbook
Prev | Chapter 10 ISA device drivers | Next

# 10.3 Device_t pointer

`Device_t` is the pointer type for the device structure. Here we consider only the methods interesting from the device driver writer's standpoint. The methods to manipulate values in the device structure are:

- `device_t device_get_parent(dev)` Get the parent bus of a device.

- `driver_t device_get_driver(dev)` Get pointer to its driver structure.

- `char *device_get_name(dev)` Get the driver name, such as `"xxx"` for our example.

- `int device_get_unit(dev)` Get the unit number (units are numbered from 0 for the devices associated with each driver).

- `char *device_get_nameunit(dev)` Get the device name including the unit number, such as “xxx0”, “xxx1” and so on.

- `char *device_get_desc(dev)` Get the device description. Normally it describes the exact model of device in human-readable form.

- `device_set_desc(dev, desc)` Set the description. This makes the device description point to the string desc which may not be deallocated or changed after that.

- `device_set_desc_copy(dev, desc)` Set the description. The description is copied into an internal dynamically allocated buffer, so the string desc may be changed afterwards without adverse effects.

- `void *device_get_softc(dev)` Get pointer to the device descriptor (struct `xxx_softc`) associated with this device.

- `u_int32_t device_get_flags(dev)` Get the flags specified for the device in the configuration file.

A convenience function `device_printf(dev, fmt, ...)` may be used to print the messages from the device driver. It automatically prepends the unitname and colon to the message.

The device_t methods are implemented in the file `kern/bus_subr.c`.

Prev | Home | Next
Basic information | Up | Configuration file and the order of identifying and probing during auto-configuration

This, and other documents, can be downloaded from ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

For questions about FreeBSD, read the documentation before contacting <questions@FreeBSD.org>.
For questions about this documentation, e-mail <doc@FreeBSD.org>.