<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML ><HEAD ><TITLE >Index</TITLE ><META NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK REL="HOME" TITLE="The Linux Kernel Module Programming Guide" HREF="index.html"><LINK REL="PREVIOUS" TITLE="Where From Here?" HREF="x1537.html"></HEAD ><BODY CLASS="INDEX" BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#0000FF" VLINK="#840084" ALINK="#0000FF" ><DIV CLASS="NAVHEADER" ><TABLE SUMMARY="Header navigation table" WIDTH="100%" BORDER="0" CELLPADDING="0" CELLSPACING="0" ><TR ><TH COLSPAN="3" ALIGN="center" >The Linux Kernel Module Programming Guide</TH ></TR ><TR ><TD WIDTH="10%" ALIGN="left" VALIGN="bottom" ><A HREF="x1537.html" ACCESSKEY="P" >Prev</A ></TD ><TD WIDTH="80%" ALIGN="center" VALIGN="bottom" ></TD ><TD WIDTH="10%" ALIGN="right" VALIGN="bottom" > </TD ></TR ></TABLE ><HR ALIGN="LEFT" WIDTH="100%"></DIV ><DIV CLASS="INDEX" ><H1 ><A NAME="DOC-INDEX" ></A >Index</H1 ><DIV CLASS="INDEXDIV" ><H2 CLASS="INDEXDIV" ><A NAME="AEN1546" ></A >Symbols</H2 ><DL ><DT >/etc/conf.modules, <A HREF="x49.htm" >How Do Modules Get Into The Kernel?</A > </DT ><DT >/etc/modules.conf, <A HREF="x49.htm" >How Do Modules Get Into The Kernel?</A > </DT ><DT >/proc filesystem, <A HREF="c745.htm#AEN747" >The /proc File System</A > </DT ><DT >/proc/interrupts, <A HREF="c1256.htm#AEN1265" >Interrupt Handlers</A > </DT ><DT >/proc/kallsyms, <A HREF="c464.htm#AEN480" >Functions available to modules</A >, <A HREF="c464.htm#AEN522" >Name Space</A >, <A HREF="c1369.htm#AEN1371" >Common Pitfalls</A > </DT ><DT >/proc/meminfo, <A HREF="c745.htm#AEN747" >The /proc File System</A > </DT ><DT >/proc/modules, <A HREF="x49.htm" >How Do Modules Get Into The Kernel?</A >, <A HREF="c745.htm#AEN747" >The /proc File System</A > </DT ><DT >2.2 changes, <A HREF="a1406.htm#AEN1408" >Changes between 2.0 and 2.2</A > </DT ><DT >_IO, <A HREF="c883.htm#AEN885" >Talking to Device Files (writes and IOCTLs)}</A > </DT ><DT >_IOR, <A HREF="c883.htm#AEN885" >Talking to Device Files (writes and IOCTLs)}</A > </DT ><DT >_IOW, <A HREF="c883.htm#AEN885" >Talking to Device Files (writes and IOCTLs)}</A > </DT ><DT >_IOWR, <A HREF="c883.htm#AEN885" >Talking to Device Files (writes and IOCTLs)}</A > </DT ><DT >_NSIG_WORDS, <A HREF="a1406.htm#AEN1415" >Changes between 2.0 and 2.2</A > </DT ><DT >__exit, <A HREF="x264.htm" >Hello World (part 3): The __init and __exit Macros</A > </DT ><DT >__init, <A HREF="x264.htm" >Hello World (part 3): The __init and __exit Macros</A > </DT ><DT >__initdata, <A HREF="x264.htm" >Hello World (part 3): The __init and __exit Macros</A > </DT ><DT >__initfunction(), <A HREF="x264.htm" >Hello World (part 3): The __init and __exit Macros</A > </DT ><DT >__NO_VERSION__, <A HREF="x365.htm" >Modules Spanning Multiple Files</A > </DT ></DL ></DIV ><DIV CLASS="INDEXDIV" ><H2 CLASS="INDEXDIV" ><A NAME="AEN1605" ></A >A</H2 ><DL ><DT >asm </DT ><DD ><DL ><DT >uaccess.h, <A HREF="a1406.htm#AEN1415" >Changes between 2.0 and 2.2</A > </DT ><DD ><DL ></DL ></DD ></DL ></DD ><DT >asm/uaccess.h, <A HREF="a1406.htm#AEN1415" >Changes between 2.0 and 2.2</A > </DT ></DL ></DIV ><DIV CLASS="INDEXDIV" ><H2 CLASS="INDEXDIV" ><A NAME="AEN1614" ></A >B</H2 ><DL ><DT >BH_IMMEDIATE, <A HREF="c1256.htm#AEN1265" >Interrupt Handlers</A > </DT ><DT >blocking processes, <A HREF="c1043.htm#AEN1045" >Blocking Processes</A > </DT ><DT >blocking, how to avoid, <A HREF="c1043.htm#AEN1052" >Enter Sandman</A > </DT ><DT >bottom half, <A HREF="c1256.htm#AEN1265" >Interrupt Handlers</A > </DT ><DT >busy, <A HREF="c1043.htm#AEN1052" >Enter Sandman</A > </DT ></DL ></DIV ><DIV CLASS="INDEXDIV" ><H2 CLASS="INDEXDIV" ><A NAME="AEN1631" ></A >C</H2 ><DL ><DT >carnivore </DT ><DD ><DL ><DT >large, <A HREF="c1369.htm#AEN1371" >Common Pitfalls</A > </DT ><DD ><DL ></DL ></DD ></DL ></DD ><DT >cleanup_module(), <A HREF="c147.htm#AEN149" >Hello, World (part 1): The Simplest Module</A > </DT ><DT >close, <A HREF="a1406.htm#AEN1415" >Changes between 2.0 and 2.2</A > </DT ><DT >code space, <A HREF="c464.htm#AEN539" >Code space</A > </DT ><DT >coffee, <A HREF="c464.htm#AEN569" >Major and Minor Numbers</A > </DT ><DT >CPU </DT ><DD ><DL ><DT >multiple, <A HREF="c1343.htm#AEN1345" >Symmetrical Multi-Processing</A > </DT ><DD ><DL ></DL ></DD ></DL ></DD ><DT >crontab, <A HREF="c1196.htm#AEN1198" >Scheduling Tasks</A > </DT ><DT >ctrl-c, <A HREF="c1043.htm#AEN1052" >Enter Sandman</A > </DT ><DT >current task, <A HREF="c1146.htm#AEN1148" >Replacing printk</A > </DT ></DL ></DIV ><DIV CLASS="INDEXDIV" ><H2 CLASS="INDEXDIV" ><A NAME="AEN1662" ></A >D</H2 ><DL ><DT >DEFAULT_MESSAGE_LOGLEVEL, <A HREF="c147.htm#INTRODUCINGPRINTK" >Introducing printk()</A > </DT ><DT >defining ioctls, <A HREF="c883.htm#AEN885" >Talking to Device Files (writes and IOCTLs)}</A > </DT ><DT >device file </DT ><DD ><DL ><DT >character, <A HREF="c606.htm#AEN608" >Character Device Drivers</A > </DT ><DD ><DL ></DL ></DD ></DL ></DD ><DT >device files </DT ><DD ><DL ><DT >input to, <A HREF="c883.htm#AEN885" >Talking to Device Files (writes and IOCTLs)}</A > </DT ><DD ><DL ></DL ></DD ><DT >write to, <A HREF="c883.htm#AEN885" >Talking to Device Files (writes and IOCTLs)}</A > </DT ><DD ><DL ></DL ></DD ></DL ></DD ></DL ></DIV ><DIV CLASS="INDEXDIV" ><H2 CLASS="INDEXDIV" ><A NAME="AEN1680" ></A >E</H2 ><DL ><DT >EAGAIN, <A HREF="c1043.htm#AEN1052" >Enter Sandman</A > </DT ><DT >EINTR, <A HREF="c1043.htm#AEN1052" >Enter Sandman</A > </DT ><DT >elf_i386, <A HREF="x365.htm" >Modules Spanning Multiple Files</A > </DT ><DT >ENTRY(system call), <A HREF="c969.htm#AEN971" >System Calls</A > </DT ><DT >entry.S, <A HREF="c969.htm#AEN971" >System Calls</A > </DT ></DL ></DIV ><DIV CLASS="INDEXDIV" ><H2 CLASS="INDEXDIV" ><A NAME="AEN1697" ></A >F</H2 ><DL ><DT >file, <A HREF="c606.htm#AEN638" >The file structure</A > </DT ><DT >filesystem </DT ><DD ><DL ><DT >/proc, <A HREF="c745.htm#AEN747" >The /proc File System</A > </DT ><DD ><DL ></DL ></DD ><DT >registration, <A HREF="c792.htm#AEN794" >Using /proc For Input</A > </DT ><DD ><DL ></DL ></DD ></DL ></DD ><DT >filesystem registration, <A HREF="c792.htm#AEN794" >Using /proc For Input</A > </DT ><DT >file_operations, <A HREF="c606.htm#AEN613" >The file_operations Structure</A > </DT ><DT >file_operations structure, <A HREF="c792.htm#AEN794" >Using /proc For Input</A > </DT ><DT >flush, <A HREF="a1406.htm#AEN1415" >Changes between 2.0 and 2.2</A > </DT ></DL ></DIV ><DIV CLASS="INDEXDIV" ><H2 CLASS="INDEXDIV" ><A NAME="AEN1720" ></A >G</H2 ><DL ><DT >get_user, <A HREF="c792.htm#AEN794" >Using /proc For Input</A >, <A HREF="a1406.htm#AEN1415" >Changes between 2.0 and 2.2</A > </DT ></DL ></DIV ><DIV CLASS="INDEXDIV" ><H2 CLASS="INDEXDIV" ><A NAME="AEN1726" ></A >H</H2 ><DL ><DT >handlers </DT ><DD ><DL ><DT >interrupt, <A HREF="c1256.htm#AEN1258" >Interrupt Handlers</A > </DT ><DD ><DL ></DL ></DD ></DL ></DD ><DT >housekeeping, <A HREF="c1196.htm#AEN1198" >Scheduling Tasks</A > </DT ><DT >Hurd, <A HREF="c464.htm#AEN539" >Code space</A > </DT ></DL ></DIV ><DIV CLASS="INDEXDIV" ><H2 CLASS="INDEXDIV" ><A NAME="AEN1738" ></A >I</H2 ><DL ><DT >inb, <A HREF="c1256.htm#KEYBOARD" >Keyboards on the Intel Architecture</A > </DT ><DT >init_module(), <A HREF="c147.htm#AEN149" >Hello, World (part 1): The Simplest Module</A > </DT ><DT >inode, <A HREF="c606.htm#AEN638" >The file structure</A >, <A HREF="c745.htm#AEN747" >The /proc File System</A > </DT ><DT >inode_operations structure, <A HREF="c792.htm#AEN794" >Using /proc For Input</A > </DT ><DT >input </DT ><DD ><DL ><DT >using /proc for, <A HREF="c792.htm#AEN794" >Using /proc For Input</A > </DT ><DD ><DL ></DL ></DD ></DL ></DD ><DT >insmod, <A HREF="x209.htm" >Compiling Kernel Modules</A >, <A HREF="c969.htm#AEN971" >System Calls</A > </DT ><DT >Intel architecture </DT ><DD ><DL ><DT >keyboard, <A HREF="c1256.htm#KEYBOARD" >Keyboards on the Intel Architecture</A > </DT ><DD ><DL ></DL ></DD ></DL ></DD ><DT >interrupt 0x80, <A HREF="c969.htm#AEN971" >System Calls</A > </DT ><DT >interrupt handlers, <A HREF="c1256.htm#AEN1258" >Interrupt Handlers</A > </DT ><DT >interruptible_sleep_on, <A HREF="c1043.htm#AEN1052" >Enter Sandman</A > </DT ><DT >interrupts, <A HREF="a1406.htm#AEN1415" >Changes between 2.0 and 2.2</A > </DT ><DD ><DL ><DT >disabling, <A HREF="c1369.htm#AEN1371" >Common Pitfalls</A > </DT ><DD ><DL ></DL ></DD ></DL ></DD ><DT >ioctl, <A HREF="c883.htm#AEN885" >Talking to Device Files (writes and IOCTLs)}</A > </DT ><DD ><DL ><DT >defining, <A HREF="c883.htm#AEN885" >Talking to Device Files (writes and IOCTLs)}</A > </DT ><DD ><DL ></DL ></DD ><DT >official assignment, <A HREF="c883.htm#AEN885" >Talking to Device Files (writes and IOCTLs)}</A > </DT ><DD ><DL ></DL ></DD ></DL ></DD ><DT >irqs, <A HREF="a1406.htm#AEN1415" >Changes between 2.0 and 2.2</A > </DT ></DL ></DIV ><DIV CLASS="INDEXDIV" ><H2 CLASS="INDEXDIV" ><A NAME="AEN1789" ></A >K</H2 ><DL ><DT >kernel </DT ><DD ><DL ><DT >versions, <A HREF="a1406.htm#AEN1408" >Changes between 2.0 and 2.2</A > </DT ><DD ><DL ></DL ></DD ></DL ></DD ><DT >kernel versions, <A HREF="c606.htm#AEN730" >Writing Modules for Multiple Kernel Versions</A > </DT ><DT >kerneld, <A HREF="x49.htm" >How Do Modules Get Into The Kernel?</A > </DT ><DT >kernel\_version, <A HREF="x365.htm" >Modules Spanning Multiple Files</A > </DT ><DT >KERNEL_VERSION, <A HREF="c606.htm#AEN730" >Writing Modules for Multiple Kernel Versions</A > </DT ><DT >keyboard, <A HREF="c1256.htm#KEYBOARD" >Keyboards on the Intel Architecture</A > </DT ><DT >keyboard LEDs </DT ><DD ><DL ><DT >flashing, <A HREF="x1181.htm" >Flashing keyboard LEDs</A > </DT ><DD ><DL ></DL ></DD ></DL ></DD ><DT >kmod, <A HREF="x49.htm" >How Do Modules Get Into The Kernel?</A > </DT ></DL ></DIV ><DIV CLASS="INDEXDIV" ><H2 CLASS="INDEXDIV" ><A NAME="AEN1817" ></A >L</H2 ><DL ><DT >ld, <A HREF="x365.htm" >Modules Spanning Multiple Files</A > </DT ><DT >libraries </DT ><DD ><DL ><DT >standard, <A HREF="c1369.htm#AEN1371" >Common Pitfalls</A > </DT ><DD ><DL ></DL ></DD ></DL ></DD ><DT >library function, <A HREF="c464.htm#AEN480" >Functions available to modules</A > </DT ><DT >LINUX_VERSION_CODE, <A HREF="c606.htm#AEN730" >Writing Modules for Multiple Kernel Versions</A > </DT ></DL ></DIV ><DIV CLASS="INDEXDIV" ><H2 CLASS="INDEXDIV" ><A NAME="AEN1832" ></A >M</H2 ><DL ><DT >major number, <A HREF="c464.htm#AEN569" >Major and Minor Numbers</A > </DT ><DD ><DL ><DT >dynamic allocation, <A HREF="c606.htm#AEN660" >Registering A Device</A > </DT ><DD ><DL ></DL ></DD ></DL ></DD ><DT >mark_bh, <A HREF="c1256.htm#AEN1265" >Interrupt Handlers</A > </DT ><DT >memory segments, <A HREF="c792.htm#AEN794" >Using /proc For Input</A > </DT ><DT >microkernel, <A HREF="c464.htm#AEN539" >Code space</A > </DT ><DT >minor number, <A HREF="c464.htm#AEN569" >Major and Minor Numbers</A > </DT ><DT >mknod, <A HREF="c464.htm#AEN569" >Major and Minor Numbers</A > </DT ><DT >modem, <A HREF="c883.htm#AEN885" >Talking to Device Files (writes and IOCTLs)}</A > </DT ><DT >module </DT ><DD ><DL ><DT >parameters, <A HREF="a1406.htm#AEN1415" >Changes between 2.0 and 2.2</A > </DT ><DD ><DL ></DL ></DD ></DL ></DD ><DT >module parameters, <A HREF="a1406.htm#AEN1415" >Changes between 2.0 and 2.2</A > </DT ><DT >module.h, <A HREF="x365.htm" >Modules Spanning Multiple Files</A > </DT ><DT >modules.conf </DT ><DD ><DL ><DT >alias, <A HREF="x49.htm" >How Do Modules Get Into The Kernel?</A > </DT ><DD ><DL ></DL ></DD ><DT >comment, <A HREF="x49.htm" >How Do Modules Get Into The Kernel?</A > </DT ><DD ><DL ></DL ></DD ><DT >keep, <A HREF="x49.htm" >How Do Modules Get Into The Kernel?</A > </DT ><DD ><DL ></DL ></DD ><DT >options, <A HREF="x49.htm" >How Do Modules Get Into The Kernel?</A > </DT ><DD ><DL ></DL ></DD ><DT >path, <A HREF="x49.htm" >How Do Modules Get Into The Kernel?</A > </DT ><DD ><DL ></DL ></DD ></DL ></DD ><DT >MODULE_AUTHOR(), <A HREF="x298.htm" >Hello World (part 4): Licensing and Module Documentation</A > </DT ><DT >module_cleanup, <A HREF="c1196.htm#AEN1198" >Scheduling Tasks</A > </DT ><DT >MODULE_DESCRIPTION(), <A HREF="x298.htm" >Hello World (part 4): Licensing and Module Documentation</A > </DT ><DT >module_exit, <A HREF="x236.htm" >Hello World (part 2)</A > </DT ><DT >module_init, <A HREF="x236.htm" >Hello World (part 2)</A > </DT ><DT >module_interruptible_sleep_on, <A HREF="c1043.htm#AEN1052" >Enter Sandman</A > </DT ><DT >MODULE_LICENSE(), <A HREF="x298.htm" >Hello World (part 4): Licensing and Module Documentation</A > </DT ><DT >MODULE_PARM, <A HREF="a1406.htm#AEN1415" >Changes between 2.0 and 2.2</A > </DT ><DT >module_permissions, <A HREF="c792.htm#AEN794" >Using /proc For Input</A > </DT ><DT >module_sleep_on, <A HREF="c1043.htm#AEN1052" >Enter Sandman</A >, <A HREF="c1196.htm#AEN1198" >Scheduling Tasks</A > </DT ><DT >MODULE_SUPPORTED_DEVICE(), <A HREF="x298.htm" >Hello World (part 4): Licensing and Module Documentation</A > </DT ><DT >module_wake_up, <A HREF="c1043.htm#AEN1052" >Enter Sandman</A > </DT ><DT >MOD_DEC_USE_COUNT, <A HREF="c606.htm#AEN690" >Unregistering A Device</A > </DT ><DT >MOD_INC_USE_COUNT, <A HREF="c606.htm#AEN690" >Unregistering A Device</A > </DT ><DT >MOD_IN_USE, <A HREF="c606.htm#AEN690" >Unregistering A Device</A > </DT ><DT >monolithic kernel, <A HREF="c464.htm#AEN539" >Code space</A > </DT ><DT >multi-processing, <A HREF="c1343.htm#AEN1345" >Symmetrical Multi-Processing</A > </DT ><DT >multi-tasking, <A HREF="c1043.htm#AEN1052" >Enter Sandman</A > </DT ><DT >multitasking, <A HREF="c1043.htm#AEN1052" >Enter Sandman</A > </DT ></DL ></DIV ><DIV CLASS="INDEXDIV" ><H2 CLASS="INDEXDIV" ><A NAME="AEN1937" ></A >N</H2 ><DL ><DT >namespace pollution, <A HREF="c464.htm#AEN522" >Name Space</A > </DT ><DT >Neutrino, <A HREF="c464.htm#AEN539" >Code space</A > </DT ><DT >non-blocking, <A HREF="c1043.htm#AEN1052" >Enter Sandman</A > </DT ></DL ></DIV ><DIV CLASS="INDEXDIV" ><H2 CLASS="INDEXDIV" ><A NAME="AEN1948" ></A >O</H2 ><DL ><DT >official ioctl assignment, <A HREF="c883.htm#AEN885" >Talking to Device Files (writes and IOCTLs)}</A > </DT ><DT >O_NONBLOCK, <A HREF="c1043.htm#AEN1052" >Enter Sandman</A > </DT ></DL ></DIV ><DIV CLASS="INDEXDIV" ><H2 CLASS="INDEXDIV" ><A NAME="AEN1956" ></A >P</H2 ><DL ><DT >permission, <A HREF="c792.htm#AEN794" >Using /proc For Input</A > </DT ><DT >pointer </DT ><DD ><DL ><DT >current, <A HREF="c792.htm#AEN794" >Using /proc For Input</A > </DT ><DD ><DL ></DL ></DD ></DL ></DD ><DT >printk </DT ><DD ><DL ><DT >replacing, <A HREF="c1146.htm#AEN1148" >Replacing printk</A > </DT ><DD ><DL ></DL ></DD ></DL ></DD ><DT >printk(), <A HREF="c147.htm#INTRODUCINGPRINTK" >Introducing printk()</A > </DT ><DT >proc </DT ><DD ><DL ><DT >using for input, <A HREF="c792.htm#AEN794" >Using /proc For Input</A > </DT ><DD ><DL ></DL ></DD ></DL ></DD ><DT >proc file </DT ><DD ><DL ><DT >kallsyms, <A HREF="c1369.htm#AEN1371" >Common Pitfalls</A > </DT ><DD ><DL ></DL ></DD ></DL ></DD ><DT >processes </DT ><DD ><DL ><DT >blocking, <A HREF="c1043.htm#AEN1045" >Blocking Processes</A > </DT ><DD ><DL ></DL ></DD ><DT >killing, <A HREF="c1043.htm#AEN1052" >Enter Sandman</A > </DT ><DD ><DL ></DL ></DD ><DT >waking up, <A HREF="c1043.htm#AEN1052" >Enter Sandman</A > </DT ><DD ><DL ></DL ></DD ></DL ></DD ><DT >processing </DT ><DD ><DL ><DT >multi, <A HREF="c1343.htm#AEN1345" >Symmetrical Multi-Processing</A > </DT ><DD ><DL ></DL ></DD ></DL ></DD ><DT >proc_dir_entry, <A HREF="c792.htm#AEN794" >Using /proc For Input</A > </DT ><DT >proc_register, <A HREF="c745.htm#AEN747" >The /proc File System</A >, <A HREF="a1406.htm#AEN1415" >Changes between 2.0 and 2.2</A > </DT ><DT >proc_register_dynamic, <A HREF="c745.htm#AEN747" >The /proc File System</A >, <A HREF="a1406.htm#AEN1415" >Changes between 2.0 and 2.2</A > </DT ><DT >putting processes to sleep, <A HREF="c1043.htm#AEN1052" >Enter Sandman</A > </DT ><DT >put_user, <A HREF="c792.htm#AEN794" >Using /proc For Input</A >, <A HREF="a1406.htm#AEN1415" >Changes between 2.0 and 2.2</A > </DT ></DL ></DIV ><DIV CLASS="INDEXDIV" ><H2 CLASS="INDEXDIV" ><A NAME="AEN2010" ></A >Q</H2 ><DL ><DT >queue_task, <A HREF="c1196.htm#AEN1198" >Scheduling Tasks</A >, <A HREF="c1256.htm#AEN1265" >Interrupt Handlers</A >, <A HREF="a1406.htm#AEN1415" >Changes between 2.0 and 2.2</A > </DT ><DT >queue_task_irq, <A HREF="c1256.htm#AEN1265" >Interrupt Handlers</A >, <A HREF="a1406.htm#AEN1415" >Changes between 2.0 and 2.2</A > </DT ></DL ></DIV ><DIV CLASS="INDEXDIV" ><H2 CLASS="INDEXDIV" ><A NAME="AEN2021" ></A >R</H2 ><DL ><DT >read, <A HREF="a1406.htm#AEN1415" >Changes between 2.0 and 2.2</A > </DT ><DD ><DL ><DT >in the kernel, <A HREF="c792.htm#AEN794" >Using /proc For Input</A > </DT ><DD ><DL ></DL ></DD ></DL ></DD ><DT >reference count, <A HREF="c1196.htm#AEN1198" >Scheduling Tasks</A > </DT ><DT >refund policy, <A HREF="c1369.htm#AEN1371" >Common Pitfalls</A > </DT ><DT >register_chrdev, <A HREF="c606.htm#AEN660" >Registering A Device</A > </DT ><DT >request_irq(), <A HREF="c1256.htm#AEN1265" >Interrupt Handlers</A > </DT ><DT >rmmod, <A HREF="c969.htm#AEN971" >System Calls</A >, <A HREF="c1196.htm#AEN1198" >Scheduling Tasks</A > </DT ><DD ><DL ><DT >preventing, <A HREF="c606.htm#AEN690" >Unregistering A Device</A > </DT ><DD ><DL ></DL ></DD ></DL ></DD ></DL ></DIV ><DIV CLASS="INDEXDIV" ><H2 CLASS="INDEXDIV" ><A NAME="AEN2046" ></A >S</H2 ><DL ><DT >SA_INTERRUPT, <A HREF="c1256.htm#AEN1265" >Interrupt Handlers</A > </DT ><DT >SA_SHIRQ, <A HREF="c1256.htm#AEN1265" >Interrupt Handlers</A > </DT ><DT >scheduler, <A HREF="c1043.htm#AEN1052" >Enter Sandman</A > </DT ><DT >scheduling tasks, <A HREF="c1196.htm#AEN1198" >Scheduling Tasks</A > </DT ><DT >segment </DT ><DD ><DL ><DT >memory, <A HREF="c792.htm#AEN794" >Using /proc For Input</A > </DT ><DD ><DL ></DL ></DD ></DL ></DD ><DT >serial port, <A HREF="c883.htm#AEN885" >Talking to Device Files (writes and IOCTLs)}</A > </DT ><DT >shutdown, <A HREF="c969.htm#AEN971" >System Calls</A > </DT ><DT >SIGINT, <A HREF="c1043.htm#AEN1052" >Enter Sandman</A > </DT ><DT >signal, <A HREF="c1043.htm#AEN1052" >Enter Sandman</A > </DT ><DT >signals, <A HREF="a1406.htm#AEN1415" >Changes between 2.0 and 2.2</A > </DT ><DT >sleep </DT ><DD ><DL ><DT >putting processes to, <A HREF="c1043.htm#AEN1052" >Enter Sandman</A > </DT ><DD ><DL ></DL ></DD ></DL ></DD ><DT >sleep_on, <A HREF="c1043.htm#AEN1052" >Enter Sandman</A >, <A HREF="c1196.htm#AEN1198" >Scheduling Tasks</A > </DT ><DT >SMP, <A HREF="c1343.htm#AEN1345" >Symmetrical Multi-Processing</A >, <A HREF="a1406.htm#AEN1415" >Changes between 2.0 and 2.2</A > </DT ><DT >source file </DT ><DD ><DL ><DT >chardev.c, <A HREF="c883.htm#AEN885" >Talking to Device Files (writes and IOCTLs)}</A > </DT ><DD ><DL ></DL ></DD ><DT >chardev.h, <A HREF="c883.htm#AEN885" >Talking to Device Files (writes and IOCTLs)}</A > </DT ><DD ><DL ></DL ></DD ><DT >hello-1.c, <A HREF="c147.htm#AEN149" >Hello, World (part 1): The Simplest Module</A > </DT ><DD ><DL ></DL ></DD ><DT >hello-2.c, <A HREF="x236.htm" >Hello World (part 2)</A > </DT ><DD ><DL ></DL ></DD ><DT >hello-3.c, <A HREF="x264.htm" >Hello World (part 3): The __init and __exit Macros</A > </DT ><DD ><DL ></DL ></DD ><DT >hello-4.c, <A HREF="x298.htm" >Hello World (part 4): Licensing and Module Documentation</A > </DT ><DD ><DL ></DL ></DD ><DT >hello-5.c, <A HREF="x333.htm" >Passing Command Line Arguments to a Module</A > </DT ><DD ><DL ></DL ></DD ><DT >intrpt.c, <A HREF="c1256.htm#KEYBOARD" >Keyboards on the Intel Architecture</A > </DT ><DD ><DL ></DL ></DD ><DT >ioctl.c, <A HREF="c883.htm#AEN885" >Talking to Device Files (writes and IOCTLs)}</A > </DT ><DD ><DL ></DL ></DD ><DT >print_string.c, <A HREF="c1146.htm#AEN1148" >Replacing printk</A > </DT ><DD ><DL ></DL ></DD ><DT >sched.c, <A HREF="c1196.htm#AEN1198" >Scheduling Tasks</A > </DT ><DD ><DL ></DL ></DD ><DT >sleep.c, <A HREF="c1043.htm#AEN1052" >Enter Sandman</A > </DT ><DD ><DL ></DL ></DD ><DT >start.c, <A HREF="x365.htm" >Modules Spanning Multiple Files</A > </DT ><DD ><DL ></DL ></DD ><DT >stop.c, <A HREF="x365.htm" >Modules Spanning Multiple Files</A > </DT ><DD ><DL ></DL ></DD ><DT >syscall.c, <A HREF="c969.htm#AEN971" >System Calls</A > </DT ><DD ><DL ></DL ></DD ></DL ></DD ><DT >source files </DT ><DD ><DL ><DT >multiple, <A HREF="x365.htm" >Modules Spanning Multiple Files</A >, <A HREF="x419.htm" >Building modules for a precompiled kernel</A > </DT ><DD ><DL ></DL ></DD ></DL ></DD ><DT >ssize_t, <A HREF="a1406.htm#AEN1415" >Changes between 2.0 and 2.2</A > </DT ><DT >standard libraries, <A HREF="c1369.htm#AEN1371" >Common Pitfalls</A > </DT ><DT >strace, <A HREF="c464.htm#AEN480" >Functions available to modules</A >, <A HREF="c969.htm#AEN971" >System Calls</A > </DT ><DT >struct </DT ><DD ><DL ><DT >tty, <A HREF="c1146.htm#AEN1148" >Replacing printk</A > </DT ><DD ><DL ></DL ></DD ></DL ></DD ><DT >struct file_operations, <A HREF="c792.htm#AEN794" >Using /proc For Input</A > </DT ><DT >struct inode_operations, <A HREF="c792.htm#AEN794" >Using /proc For Input</A > </DT ><DT >structure </DT ><DD ><DL ><DT >file_operations, <A HREF="a1406.htm#AEN1415" >Changes between 2.0 and 2.2</A > </DT ><DD ><DL ></DL ></DD ></DL ></DD ><DT >symbol table, <A HREF="c464.htm#AEN522" >Name Space</A > </DT ><DT >symmetrical multi-processing, <A HREF="c1343.htm#AEN1345" >Symmetrical Multi-Processing</A >, <A HREF="a1406.htm#AEN1415" >Changes between 2.0 and 2.2</A > </DT ><DT >sync, <A HREF="c969.htm#AEN971" >System Calls</A > </DT ><DT >system call, <A HREF="c464.htm#AEN480" >Functions available to modules</A >, <A HREF="c969.htm#AEN971" >System Calls</A > </DT ><DD ><DL ><DT >open, <A HREF="c969.htm#AEN971" >System Calls</A > </DT ><DD ><DL ></DL ></DD ></DL ></DD ><DT >system calls, <A HREF="c969.htm#AEN971" >System Calls</A > </DT ><DT >sys_call_table, <A HREF="c969.htm#AEN971" >System Calls</A > </DT ><DT >sys_open, <A HREF="c969.htm#AEN971" >System Calls</A > </DT ></DL ></DIV ><DIV CLASS="INDEXDIV" ><H2 CLASS="INDEXDIV" ><A NAME="AEN2177" ></A >T</H2 ><DL ><DT >task, <A HREF="c1196.htm#AEN1198" >Scheduling Tasks</A > </DT ><DD ><DL ><DT >current, <A HREF="c1146.htm#AEN1148" >Replacing printk</A > </DT ><DD ><DL ></DL ></DD ></DL ></DD ><DT >tasks </DT ><DD ><DL ><DT >scheduling, <A HREF="c1196.htm#AEN1198" >Scheduling Tasks</A > </DT ><DD ><DL ></DL ></DD ></DL ></DD ><DT >TASK_INTERRUPTIBLE, <A HREF="c1043.htm#AEN1052" >Enter Sandman</A > </DT ><DT >tq_immediate, <A HREF="c1256.htm#AEN1265" >Interrupt Handlers</A > </DT ><DT >tq_struct, <A HREF="c1196.htm#AEN1198" >Scheduling Tasks</A > </DT ><DT >tq_timer, <A HREF="c1196.htm#AEN1198" >Scheduling Tasks</A > </DT ><DT >try_module_get, <A HREF="c969.htm#AEN971" >System Calls</A > </DT ><DT >tty_structure, <A HREF="c1146.htm#AEN1148" >Replacing printk</A > </DT ></DL ></DIV ><DIV CLASS="INDEXDIV" ><H2 CLASS="INDEXDIV" ><A NAME="AEN2206" ></A >V</H2 ><DL ><DT >version.h, <A HREF="x365.htm" >Modules Spanning Multiple Files</A > </DT ></DL ></DIV ><DIV CLASS="INDEXDIV" ><H2 CLASS="INDEXDIV" ><A NAME="AEN2211" ></A >W</H2 ><DL ><DT >waking up processes, <A HREF="c1043.htm#AEN1052" >Enter Sandman</A > </DT ><DT >write, <A HREF="a1406.htm#AEN1415" >Changes between 2.0 and 2.2</A > </DT ><DD ><DL ><DT >in the kernel, <A HREF="c792.htm#AEN794" >Using /proc For Input</A > </DT ><DD ><DL ></DL ></DD ></DL ></DD ></DL ></DIV ></DIV ><DIV CLASS="NAVFOOTER" ><HR ALIGN="LEFT" WIDTH="100%"><TABLE SUMMARY="Footer navigation table" WIDTH="100%" BORDER="0" CELLPADDING="0" CELLSPACING="0" ><TR ><TD WIDTH="33%" ALIGN="left" VALIGN="top" ><A HREF="x1537.html" ACCESSKEY="P" >Prev</A ></TD ><TD WIDTH="34%" ALIGN="center" VALIGN="top" ><A HREF="index.html" ACCESSKEY="H" >Home</A ></TD ><TD WIDTH="33%" ALIGN="right" VALIGN="top" > </TD ></TR ><TR ><TD WIDTH="33%" ALIGN="left" VALIGN="top" >Where From Here?</TD ><TD WIDTH="34%" ALIGN="center" VALIGN="top" > </TD ><TD WIDTH="33%" ALIGN="right" VALIGN="top" > </TD ></TR ></TABLE ></DIV ></BODY ></HTML >