Sophie

Sophie

distrib > CentOS > 6 > i386 > by-pkgid > cf93d8a8acdcc6fe2225039da0502495 > files > 2181

kernel-doc-2.6.32-131.17.1.el6.centos.plus.noarch.rpm

<?xml version="1.0" encoding="ANSI_X3.4-1968" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=ANSI_X3.4-1968" /><title>__initcall()/module_init() include/linux/init.h</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><link rel="home" href="index.html" title="Unreliable Guide To Hacking The Linux Kernel" /><link rel="up" href="ch06.html" title="Chapter&#160;6.&#160;Common Routines" /><link rel="prev" href="ch06s10.html" title="__init/__exit/__initdata include/linux/init.h" /><link rel="next" href="ch06s12.html" title="module_exit() include/linux/init.h" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center"><code class="function">__initcall()</code>/<code class="function">module_init()</code>
    <code class="filename">include/linux/init.h</code></th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch06s10.html">Prev</a>&#160;</td><th width="60%" align="center">Chapter&#160;6.&#160;Common Routines</th><td width="20%" align="right">&#160;<a accesskey="n" href="ch06s12.html">Next</a></td></tr></table><hr /></div><div class="sect1" title="__initcall()/module_init() include/linux/init.h"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="routines-init-again"></a><code class="function">__initcall()</code>/<code class="function">module_init()</code>
    <code class="filename">include/linux/init.h</code></h2></div></div></div><p>
    Many parts of the kernel are well served as a module
    (dynamically-loadable parts of the kernel).  Using the
    <code class="function">module_init()</code> and
    <code class="function">module_exit()</code> macros it is easy to write code
    without #ifdefs which can operate both as a module or built into
    the kernel.
   </p><p>
    The <code class="function">module_init()</code> macro defines which
    function is to be called at module insertion time (if the file is
    compiled as a module), or at boot time: if the file is not
    compiled as a module the <code class="function">module_init()</code> macro
    becomes equivalent to <code class="function">__initcall()</code>, which
    through linker magic ensures that the function is called on boot.
   </p><p>
    The function can return a negative error number to cause
    module loading to fail (unfortunately, this has no effect if
    the module is compiled into the kernel).  This function is
    called in user context with interrupts enabled, so it can sleep.
   </p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch06s10.html">Prev</a>&#160;</td><td width="20%" align="center"><a accesskey="u" href="ch06.html">Up</a></td><td width="40%" align="right">&#160;<a accesskey="n" href="ch06s12.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top"><span class="type">__init</span>/<span class="type">__exit</span>/<span class="type">__initdata</span>
    <code class="filename">include/linux/init.h</code>&#160;</td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top">&#160; <code class="function">module_exit()</code>
    <code class="filename">include/linux/init.h</code> </td></tr></table></div></body></html>