1<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Chapter 2. Device drivers infrastructure</title><meta name="generator" content="DocBook XSL Stylesheets V1.78.1"><link rel="home" href="index.html" title="Linux Device Drivers"><link rel="up" href="index.html" title="Linux Device Drivers"><link rel="prev" href="API-devm-free-pages.html" title="devm_free_pages"><link rel="next" href="API-struct-bus-type.html" title="struct bus_type"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 2. Device drivers infrastructure</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="API-devm-free-pages.html">Prev</a> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a accesskey="n" href="API-struct-bus-type.html">Next</a></td></tr></table><hr></div><div class="chapter"><div class="titlepage"><div><div><h1 class="title"><a name="devdrivers"></a>Chapter 2. Device drivers infrastructure</h1></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl class="toc"><dt><span class="sect1"><a href="devdrivers.html#id-1.4.2">The Basic Device Driver-Model Structures </a></span></dt><dt><span class="sect1"><a href="ch02s02.html">Device Drivers Base</a></span></dt><dt><span class="sect1"><a href="ch02s03.html">Device Drivers DMA Management</a></span></dt><dt><span class="sect1"><a href="ch02s04.html">Device Drivers Power Management</a></span></dt><dt><span class="sect1"><a href="ch02s05.html">Device Drivers ACPI Support</a></span></dt><dt><span class="sect1"><a href="ch02s06.html">Device drivers PnP support</a></span></dt><dt><span class="sect1"><a href="ch02s07.html">Userspace IO devices</a></span></dt></dl></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id-1.4.2"></a>The Basic Device Driver-Model Structures </h2></div></div></div><div class="toc"><dl class="toc"><dt><span class="refentrytitle"><a href="API-struct-bus-type.html"><span class="phrase">struct bus_type</span></a></span><span class="refpurpose"> — 
2  The bus type of the device
3 </span></dt><dt><span class="refentrytitle"><a href="API-enum-probe-type.html"><span class="phrase">enum probe_type</span></a></span><span class="refpurpose"> — 
4     device driver probe type to try Device drivers may opt in for special handling of their respective probe routines. This tells the core what to expect and prefer.
5 </span></dt><dt><span class="refentrytitle"><a href="API-struct-device-driver.html"><span class="phrase">struct device_driver</span></a></span><span class="refpurpose"> — 
6     The basic device driver structure
7 </span></dt><dt><span class="refentrytitle"><a href="API-struct-subsys-interface.html"><span class="phrase">struct subsys_interface</span></a></span><span class="refpurpose"> — 
8     interfaces to device functions
9 </span></dt><dt><span class="refentrytitle"><a href="API-struct-class.html"><span class="phrase">struct class</span></a></span><span class="refpurpose"> — 
10     device classes
11 </span></dt><dt><span class="refentrytitle"><a href="API-struct-device.html"><span class="phrase">struct device</span></a></span><span class="refpurpose"> — 
12     The basic device structure
13 </span></dt><dt><span class="refentrytitle"><a href="API-module-driver.html"><span class="phrase">module_driver</span></a></span><span class="refpurpose"> — 
14     Helper macro for drivers that don't do anything special in module init/exit. This eliminates a lot of boilerplate. Each module may only use this macro once, and calling it replaces <code class="function">module_init</code> and <code class="function">module_exit</code>.
15 </span></dt><dt><span class="refentrytitle"><a href="API-builtin-driver.html"><span class="phrase">builtin_driver</span></a></span><span class="refpurpose">
16     Helper macro for drivers that don't do anything special in init and have no exit. This eliminates some boilerplate. Each driver may only use this macro once, and calling it replaces device_initcall (or in some cases, the legacy __initcall). This is meant to be a direct parallel of module_driver above but without the __exit stuff that is not used for builtin cases.
17 </span></dt></dl></div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="API-devm-free-pages.html">Prev</a> </td><td width="20%" align="center"> </td><td width="40%" align="right"> <a accesskey="n" href="API-struct-bus-type.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top"><span class="phrase">devm_free_pages</span> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> <span class="phrase">struct bus_type</span></td></tr></table></div></body></html>
18