<!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="x1488.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="x1488.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="AEN1497" ></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="c722.htm#AEN724" >The /proc File System</A > </DT ><DT >/proc/interrupts, <A HREF="c1208.htm#AEN1217" >Interrupt Handlers</A > </DT ><DT >/proc/ksyms, <A HREF="c435.htm#AEN451" >Functions available to modules</A >, <A HREF="c435.htm#AEN493" >Name Space</A >, <A HREF="c1320.htm#AEN1322" >Common Pitfalls</A > </DT ><DT >/proc/meminfo, <A HREF="c722.htm#AEN724" >The /proc File System</A > </DT ><DT >/proc/modules, <A HREF="x49.htm" >How Do Modules Get Into The Kernel?</A >, <A HREF="c722.htm#AEN724" >The /proc File System</A > </DT ><DT >2.2 changes, <A HREF="a1357.htm#AEN1359" >Changes between 2.0 and 2.2</A > </DT ><DT >_IO, <A HREF="c854.htm#AEN856" >Talking to Device Files (writes and IOCTLs)}</A > </DT ><DT >_IOR, <A HREF="c854.htm#AEN856" >Talking to Device Files (writes and IOCTLs)}</A > </DT ><DT >_IOW, <A HREF="c854.htm#AEN856" >Talking to Device Files (writes and IOCTLs)}</A > </DT ><DT >_IOWR, <A HREF="c854.htm#AEN856" >Talking to Device Files (writes and IOCTLs)}</A > </DT ><DT >_NSIG_WORDS, <A HREF="a1357.htm#AEN1366" >Changes between 2.0 and 2.2</A > </DT ><DT >__exit, <A HREF="x281.htm" >Hello World (part 3): The __init and __exit Macros</A > </DT ><DT >__init, <A HREF="x281.htm" >Hello World (part 3): The __init and __exit Macros</A > </DT ><DT >__initdata, <A HREF="x281.htm" >Hello World (part 3): The __init and __exit Macros</A > </DT ><DT >__initfunction(), <A HREF="x281.htm" >Hello World (part 3): The __init and __exit Macros</A > </DT ><DT >__NO_VERSION__, <A HREF="x385.htm" >Modules Spanning Multiple Files</A > </DT ></DL ></DIV ><DIV CLASS="INDEXDIV" ><H2 CLASS="INDEXDIV" ><A NAME="AEN1556" ></A >A</H2 ><DL ><DT >asm </DT ><DD ><DL ><DT >uaccess.h, <A HREF="a1357.htm#AEN1366" >Changes between 2.0 and 2.2</A > </DT ><DD ><DL ></DL ></DD ></DL ></DD ><DT >asm/uaccess.h, <A HREF="a1357.htm#AEN1366" >Changes between 2.0 and 2.2</A > </DT ></DL ></DIV ><DIV CLASS="INDEXDIV" ><H2 CLASS="INDEXDIV" ><A NAME="AEN1565" ></A >B</H2 ><DL ><DT >BH_IMMEDIATE, <A HREF="c1208.htm#AEN1217" >Interrupt Handlers</A > </DT ><DT >blocking processes, <A HREF="c1012.htm#AEN1014" >Blocking Processes</A > </DT ><DT >blocking, how to avoid, <A HREF="c1012.htm#AEN1021" >Replacing printk</A > </DT ><DT >bottom half, <A HREF="c1208.htm#AEN1217" >Interrupt Handlers</A > </DT ><DT >busy, <A HREF="c1012.htm#AEN1021" >Replacing printk</A > </DT ></DL ></DIV ><DIV CLASS="INDEXDIV" ><H2 CLASS="INDEXDIV" ><A NAME="AEN1582" ></A >C</H2 ><DL ><DT >carnivore </DT ><DD ><DL ><DT >large, <A HREF="c1320.htm#AEN1322" >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="a1357.htm#AEN1366" >Changes between 2.0 and 2.2</A > </DT ><DT >code space, <A HREF="c435.htm#AEN510" >Code space</A > </DT ><DT >coffee, <A HREF="c435.htm#AEN540" >Major and Minor Numbers</A > </DT ><DT >CPU </DT ><DD ><DL ><DT >multiple, <A HREF="c1294.htm#AEN1296" >Symmetrical Multi-Processing</A > </DT ><DD ><DL ></DL ></DD ></DL ></DD ><DT >crontab, <A HREF="c1149.htm#AEN1151" >Scheduling Tasks</A > </DT ><DT >ctrl-c, <A HREF="c1012.htm#AEN1021" >Replacing printk</A > </DT ><DT >current task, <A HREF="c1115.htm#AEN1117" >Replacing printk</A > </DT ></DL ></DIV ><DIV CLASS="INDEXDIV" ><H2 CLASS="INDEXDIV" ><A NAME="AEN1613" ></A >D</H2 ><DL ><DT >DEFAULT_MESSAGE_LOGLEVEL, <A HREF="c147.htm#INTRODUCINGPRINTK" >Introducing printk()</A > </DT ><DT >defining ioctls, <A HREF="c854.htm#AEN856" >Talking to Device Files (writes and IOCTLs)}</A > </DT ><DT >device file </DT ><DD ><DL ><DT >character, <A HREF="c577.htm#AEN579" >Character Device Drivers</A > </DT ><DD ><DL ></DL ></DD ></DL ></DD ><DT >device files </DT ><DD ><DL ><DT >input to, <A HREF="c854.htm#AEN856" >Talking to Device Files (writes and IOCTLs)}</A > </DT ><DD ><DL ></DL ></DD ><DT >write to, <A HREF="c854.htm#AEN856" >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="AEN1631" ></A >E</H2 ><DL ><DT >EAGAIN, <A HREF="c1012.htm#AEN1021" >Replacing printk</A > </DT ><DT >EINTR, <A HREF="c1012.htm#AEN1021" >Replacing printk</A > </DT ><DT >elf_i386, <A HREF="x385.htm" >Modules Spanning Multiple Files</A > </DT ><DT >ENTRY(system call), <A HREF="c937.htm#AEN939" >System Calls</A > </DT ><DT >entry.S, <A HREF="c937.htm#AEN939" >System Calls</A > </DT ></DL ></DIV ><DIV CLASS="INDEXDIV" ><H2 CLASS="INDEXDIV" ><A NAME="AEN1648" ></A >F</H2 ><DL ><DT >file, <A HREF="c577.htm#AEN609" >The file structure</A > </DT ><DT >filesystem </DT ><DD ><DL ><DT >/proc, <A HREF="c722.htm#AEN724" >The /proc File System</A > </DT ><DD ><DL ></DL ></DD ><DT >registration, <A HREF="c768.htm#AEN770" >Using /proc For Input</A > </DT ><DD ><DL ></DL ></DD ></DL ></DD ><DT >filesystem registration, <A HREF="c768.htm#AEN770" >Using /proc For Input</A > </DT ><DT >file_operations, <A HREF="c577.htm#AEN584" >The file_operations Structure</A > </DT ><DT >file_operations structure, <A HREF="c768.htm#AEN770" >Using /proc For Input</A > </DT ><DT >flush, <A HREF="a1357.htm#AEN1366" >Changes between 2.0 and 2.2</A > </DT ></DL ></DIV ><DIV CLASS="INDEXDIV" ><H2 CLASS="INDEXDIV" ><A NAME="AEN1671" ></A >G</H2 ><DL ><DT >get_user, <A HREF="c768.htm#AEN770" >Using /proc For Input</A >, <A HREF="a1357.htm#AEN1366" >Changes between 2.0 and 2.2</A > </DT ></DL ></DIV ><DIV CLASS="INDEXDIV" ><H2 CLASS="INDEXDIV" ><A NAME="AEN1677" ></A >H</H2 ><DL ><DT >handlers </DT ><DD ><DL ><DT >interrupt, <A HREF="c1208.htm#AEN1210" >Interrupt Handlers</A > </DT ><DD ><DL ></DL ></DD ></DL ></DD ><DT >housekeeping, <A HREF="c1149.htm#AEN1151" >Scheduling Tasks</A > </DT ><DT >Hurd, <A HREF="c435.htm#AEN510" >Code space</A > </DT ></DL ></DIV ><DIV CLASS="INDEXDIV" ><H2 CLASS="INDEXDIV" ><A NAME="AEN1689" ></A >I</H2 ><DL ><DT >inb, <A HREF="c1208.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="c577.htm#AEN609" >The file structure</A >, <A HREF="c722.htm#AEN724" >The /proc File System</A > </DT ><DT >inode_operations structure, <A HREF="c768.htm#AEN770" >Using /proc For Input</A > </DT ><DT >input </DT ><DD ><DL ><DT >using /proc for, <A HREF="c768.htm#AEN770" >Using /proc For Input</A > </DT ><DD ><DL ></DL ></DD ></DL ></DD ><DT >insmod, <A HREF="x208.htm" >Compiling Kernel Modules</A >, <A HREF="c937.htm#AEN939" >System Calls</A > </DT ><DT >Intel architecture </DT ><DD ><DL ><DT >keyboard, <A HREF="c1208.htm#KEYBOARD" >Keyboards on the Intel Architecture</A > </DT ><DD ><DL ></DL ></DD ></DL ></DD ><DT >interrupt 0x80, <A HREF="c937.htm#AEN939" >System Calls</A > </DT ><DT >interrupt handlers, <A HREF="c1208.htm#AEN1210" >Interrupt Handlers</A > </DT ><DT >interruptible_sleep_on, <A HREF="c1012.htm#AEN1021" >Replacing printk</A > </DT ><DT >interrupts, <A HREF="a1357.htm#AEN1366" >Changes between 2.0 and 2.2</A > </DT ><DD ><DL ><DT >disabling, <A HREF="c1320.htm#AEN1322" >Common Pitfalls</A > </DT ><DD ><DL ></DL ></DD ></DL ></DD ><DT >ioctl, <A HREF="c854.htm#AEN856" >Talking to Device Files (writes and IOCTLs)}</A > </DT ><DD ><DL ><DT >defining, <A HREF="c854.htm#AEN856" >Talking to Device Files (writes and IOCTLs)}</A > </DT ><DD ><DL ></DL ></DD ><DT >official assignment, <A HREF="c854.htm#AEN856" >Talking to Device Files (writes and IOCTLs)}</A > </DT ><DD ><DL ></DL ></DD ></DL ></DD ><DT >irqs, <A HREF="a1357.htm#AEN1366" >Changes between 2.0 and 2.2</A > </DT ></DL ></DIV ><DIV CLASS="INDEXDIV" ><H2 CLASS="INDEXDIV" ><A NAME="AEN1740" ></A >K</H2 ><DL ><DT >kernel </DT ><DD ><DL ><DT >versions, <A HREF="a1357.htm#AEN1359" >Changes between 2.0 and 2.2</A > </DT ><DD ><DL ></DL ></DD ></DL ></DD ><DT >kernel versions, <A HREF="c577.htm#AEN703" >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="x385.htm" >Modules Spanning Multiple Files</A > </DT ><DT >KERNEL_VERSION, <A HREF="c577.htm#AEN703" >Writing Modules for Multiple Kernel Versions</A > </DT ><DT >keyboard, <A HREF="c1208.htm#KEYBOARD" >Keyboards on the Intel Architecture</A > </DT ><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="AEN1764" ></A >L</H2 ><DL ><DT >ld, <A HREF="x385.htm" >Modules Spanning Multiple Files</A > </DT ><DT >libraries </DT ><DD ><DL ><DT >standard, <A HREF="c1320.htm#AEN1322" >Common Pitfalls</A > </DT ><DD ><DL ></DL ></DD ></DL ></DD ><DT >library function, <A HREF="c435.htm#AEN451" >Functions available to modules</A > </DT ><DT >LINUX_VERSION_CODE, <A HREF="c577.htm#AEN703" >Writing Modules for Multiple Kernel Versions</A > </DT ></DL ></DIV ><DIV CLASS="INDEXDIV" ><H2 CLASS="INDEXDIV" ><A NAME="AEN1779" ></A >M</H2 ><DL ><DT >major number, <A HREF="c435.htm#AEN540" >Major and Minor Numbers</A > </DT ><DD ><DL ><DT >dynamic allocation, <A HREF="c577.htm#AEN631" >Registering A Device</A > </DT ><DD ><DL ></DL ></DD ></DL ></DD ><DT >mark_bh, <A HREF="c1208.htm#AEN1217" >Interrupt Handlers</A > </DT ><DT >memory segments, <A HREF="c768.htm#AEN770" >Using /proc For Input</A > </DT ><DT >microkernel, <A HREF="c435.htm#AEN510" >Code space</A > </DT ><DT >minor number, <A HREF="c435.htm#AEN540" >Major and Minor Numbers</A > </DT ><DT >mknod, <A HREF="c435.htm#AEN540" >Major and Minor Numbers</A > </DT ><DT >modem, <A HREF="c854.htm#AEN856" >Talking to Device Files (writes and IOCTLs)}</A > </DT ><DT >module </DT ><DD ><DL ><DT >parameters, <A HREF="a1357.htm#AEN1366" >Changes between 2.0 and 2.2</A > </DT ><DD ><DL ></DL ></DD ></DL ></DD ><DT >module parameters, <A HREF="a1357.htm#AEN1366" >Changes between 2.0 and 2.2</A > </DT ><DT >module.h, <A HREF="x385.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="x321.htm" >Hello World (part 4): Licensing and Module Documentation</A > </DT ><DT >module_cleanup, <A HREF="c1149.htm#AEN1151" >Scheduling Tasks</A > </DT ><DT >MODULE_DESCRIPTION(), <A HREF="x321.htm" >Hello World (part 4): Licensing and Module Documentation</A > </DT ><DT >module_exit, <A HREF="x257.htm" >Hello World (part 2)</A > </DT ><DT >module_init, <A HREF="x257.htm" >Hello World (part 2)</A > </DT ><DT >module_interruptible_sleep_on, <A HREF="c1012.htm#AEN1021" >Replacing printk</A > </DT ><DT >MODULE_LICENSE(), <A HREF="x321.htm" >Hello World (part 4): Licensing and Module Documentation</A > </DT ><DT >MODULE_PARM, <A HREF="a1357.htm#AEN1366" >Changes between 2.0 and 2.2</A > </DT ><DT >module_permissions, <A HREF="c768.htm#AEN770" >Using /proc For Input</A > </DT ><DT >module_sleep_on, <A HREF="c1012.htm#AEN1021" >Replacing printk</A >, <A HREF="c1149.htm#AEN1151" >Scheduling Tasks</A > </DT ><DT >MODULE_SUPPORTED_DEVICE(), <A HREF="x321.htm" >Hello World (part 4): Licensing and Module Documentation</A > </DT ><DT >module_wake_up, <A HREF="c1012.htm#AEN1021" >Replacing printk</A > </DT ><DT >MOD_DEC_USE_COUNT, <A HREF="c577.htm#AEN661" >Unregistering A Device</A > </DT ><DT >MOD_INC_USE_COUNT, <A HREF="c577.htm#AEN661" >Unregistering A Device</A >, <A HREF="c937.htm#AEN939" >System Calls</A > </DT ><DT >MOD_IN_USE, <A HREF="c577.htm#AEN661" >Unregistering A Device</A > </DT ><DT >monolithic kernel, <A HREF="c435.htm#AEN510" >Code space</A > </DT ><DT >multi-processing, <A HREF="c1294.htm#AEN1296" >Symmetrical Multi-Processing</A > </DT ><DT >multi-tasking, <A HREF="c1012.htm#AEN1021" >Replacing printk</A > </DT ><DT >multitasking, <A HREF="c1012.htm#AEN1021" >Replacing printk</A > </DT ></DL ></DIV ><DIV CLASS="INDEXDIV" ><H2 CLASS="INDEXDIV" ><A NAME="AEN1885" ></A >N</H2 ><DL ><DT >namespace pollution, <A HREF="c435.htm#AEN493" >Name Space</A > </DT ><DT >Neutrino, <A HREF="c435.htm#AEN510" >Code space</A > </DT ><DT >non-blocking, <A HREF="c1012.htm#AEN1021" >Replacing printk</A > </DT ></DL ></DIV ><DIV CLASS="INDEXDIV" ><H2 CLASS="INDEXDIV" ><A NAME="AEN1896" ></A >O</H2 ><DL ><DT >official ioctl assignment, <A HREF="c854.htm#AEN856" >Talking to Device Files (writes and IOCTLs)}</A > </DT ><DT >O_NONBLOCK, <A HREF="c1012.htm#AEN1021" >Replacing printk</A > </DT ></DL ></DIV ><DIV CLASS="INDEXDIV" ><H2 CLASS="INDEXDIV" ><A NAME="AEN1904" ></A >P</H2 ><DL ><DT >permission, <A HREF="c768.htm#AEN770" >Using /proc For Input</A > </DT ><DT >pointer </DT ><DD ><DL ><DT >current, <A HREF="c768.htm#AEN770" >Using /proc For Input</A > </DT ><DD ><DL ></DL ></DD ></DL ></DD ><DT >printk </DT ><DD ><DL ><DT >replacing, <A HREF="c1115.htm#AEN1117" >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="c768.htm#AEN770" >Using /proc For Input</A > </DT ><DD ><DL ></DL ></DD ></DL ></DD ><DT >proc file </DT ><DD ><DL ><DT >ksyms, <A HREF="c1320.htm#AEN1322" >Common Pitfalls</A > </DT ><DD ><DL ></DL ></DD ></DL ></DD ><DT >processes </DT ><DD ><DL ><DT >blocking, <A HREF="c1012.htm#AEN1014" >Blocking Processes</A > </DT ><DD ><DL ></DL ></DD ><DT >killing, <A HREF="c1012.htm#AEN1021" >Replacing printk</A > </DT ><DD ><DL ></DL ></DD ><DT >waking up, <A HREF="c1012.htm#AEN1021" >Replacing printk</A > </DT ><DD ><DL ></DL ></DD ></DL ></DD ><DT >processing </DT ><DD ><DL ><DT >multi, <A HREF="c1294.htm#AEN1296" >Symmetrical Multi-Processing</A > </DT ><DD ><DL ></DL ></DD ></DL ></DD ><DT >proc_dir_entry, <A HREF="c768.htm#AEN770" >Using /proc For Input</A > </DT ><DT >proc_register, <A HREF="c722.htm#AEN724" >The /proc File System</A >, <A HREF="a1357.htm#AEN1366" >Changes between 2.0 and 2.2</A > </DT ><DT >proc_register_dynamic, <A HREF="c722.htm#AEN724" >The /proc File System</A >, <A HREF="a1357.htm#AEN1366" >Changes between 2.0 and 2.2</A > </DT ><DT >putting processes to sleep, <A HREF="c1012.htm#AEN1021" >Replacing printk</A > </DT ><DT >put_user, <A HREF="c768.htm#AEN770" >Using /proc For Input</A >, <A HREF="a1357.htm#AEN1366" >Changes between 2.0 and 2.2</A > </DT ></DL ></DIV ><DIV CLASS="INDEXDIV" ><H2 CLASS="INDEXDIV" ><A NAME="AEN1958" ></A >Q</H2 ><DL ><DT >queue_task, <A HREF="c1149.htm#AEN1151" >Scheduling Tasks</A >, <A HREF="c1208.htm#AEN1217" >Interrupt Handlers</A >, <A HREF="a1357.htm#AEN1366" >Changes between 2.0 and 2.2</A > </DT ><DT >queue_task_irq, <A HREF="c1208.htm#AEN1217" >Interrupt Handlers</A >, <A HREF="a1357.htm#AEN1366" >Changes between 2.0 and 2.2</A > </DT ></DL ></DIV ><DIV CLASS="INDEXDIV" ><H2 CLASS="INDEXDIV" ><A NAME="AEN1969" ></A >R</H2 ><DL ><DT >read, <A HREF="a1357.htm#AEN1366" >Changes between 2.0 and 2.2</A > </DT ><DD ><DL ><DT >in the kernel, <A HREF="c768.htm#AEN770" >Using /proc For Input</A > </DT ><DD ><DL ></DL ></DD ></DL ></DD ><DT >reference count, <A HREF="c1149.htm#AEN1151" >Scheduling Tasks</A > </DT ><DT >refund policy, <A HREF="c1320.htm#AEN1322" >Common Pitfalls</A > </DT ><DT >register_chrdev, <A HREF="c577.htm#AEN631" >Registering A Device</A > </DT ><DT >request_irq(), <A HREF="c1208.htm#AEN1217" >Interrupt Handlers</A > </DT ><DT >rmmod, <A HREF="c937.htm#AEN939" >System Calls</A >, <A HREF="c1149.htm#AEN1151" >Scheduling Tasks</A > </DT ><DD ><DL ><DT >preventing, <A HREF="c577.htm#AEN661" >Unregistering A Device</A > </DT ><DD ><DL ></DL ></DD ></DL ></DD ></DL ></DIV ><DIV CLASS="INDEXDIV" ><H2 CLASS="INDEXDIV" ><A NAME="AEN1994" ></A >S</H2 ><DL ><DT >SA_INTERRUPT, <A HREF="c1208.htm#AEN1217" >Interrupt Handlers</A > </DT ><DT >SA_SHIRQ, <A HREF="c1208.htm#AEN1217" >Interrupt Handlers</A > </DT ><DT >scheduler, <A HREF="c1012.htm#AEN1021" >Replacing printk</A > </DT ><DT >scheduling tasks, <A HREF="c1149.htm#AEN1151" >Scheduling Tasks</A > </DT ><DT >segment </DT ><DD ><DL ><DT >memory, <A HREF="c768.htm#AEN770" >Using /proc For Input</A > </DT ><DD ><DL ></DL ></DD ></DL ></DD ><DT >serial port, <A HREF="c854.htm#AEN856" >Talking to Device Files (writes and IOCTLs)}</A > </DT ><DT >shutdown, <A HREF="c937.htm#AEN939" >System Calls</A > </DT ><DT >SIGINT, <A HREF="c1012.htm#AEN1021" >Replacing printk</A > </DT ><DT >signal, <A HREF="c1012.htm#AEN1021" >Replacing printk</A > </DT ><DT >signals, <A HREF="a1357.htm#AEN1366" >Changes between 2.0 and 2.2</A > </DT ><DT >sleep </DT ><DD ><DL ><DT >putting processes to, <A HREF="c1012.htm#AEN1021" >Replacing printk</A > </DT ><DD ><DL ></DL ></DD ></DL ></DD ><DT >sleep_on, <A HREF="c1012.htm#AEN1021" >Replacing printk</A >, <A HREF="c1149.htm#AEN1151" >Scheduling Tasks</A > </DT ><DT >SMP, <A HREF="c1294.htm#AEN1296" >Symmetrical Multi-Processing</A >, <A HREF="a1357.htm#AEN1366" >Changes between 2.0 and 2.2</A > </DT ><DT >source file </DT ><DD ><DL ><DT >chardev.c, <A HREF="c854.htm#AEN856" >Talking to Device Files (writes and IOCTLs)}</A > </DT ><DD ><DL ></DL ></DD ><DT >chardev.h, <A HREF="c854.htm#AEN856" >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="x257.htm" >Hello World (part 2)</A > </DT ><DD ><DL ></DL ></DD ><DT >hello-3.c, <A HREF="x281.htm" >Hello World (part 3): The __init and __exit Macros</A > </DT ><DD ><DL ></DL ></DD ><DT >hello-4.c, <A HREF="x321.htm" >Hello World (part 4): Licensing and Module Documentation</A > </DT ><DD ><DL ></DL ></DD ><DT >hello-5.c, <A HREF="x354.htm" >Passing Command Line Arguments to a Module</A > </DT ><DD ><DL ></DL ></DD ><DT >intrpt.c, <A HREF="c1208.htm#KEYBOARD" >Keyboards on the Intel Architecture</A > </DT ><DD ><DL ></DL ></DD ><DT >ioctl.c, <A HREF="c854.htm#AEN856" >Talking to Device Files (writes and IOCTLs)}</A > </DT ><DD ><DL ></DL ></DD ><DT >print_string.c, <A HREF="c1115.htm#AEN1117" >Replacing printk</A > </DT ><DD ><DL ></DL ></DD ><DT >sched.c, <A HREF="c1149.htm#AEN1151" >Scheduling Tasks</A > </DT ><DD ><DL ></DL ></DD ><DT >sleep.c, <A HREF="c1012.htm#AEN1021" >Replacing printk</A > </DT ><DD ><DL ></DL ></DD ><DT >start.c, <A HREF="x385.htm" >Modules Spanning Multiple Files</A > </DT ><DD ><DL ></DL ></DD ><DT >stop.c, <A HREF="x385.htm" >Modules Spanning Multiple Files</A > </DT ><DD ><DL ></DL ></DD ><DT >syscall.c, <A HREF="c937.htm#AEN939" >System Calls</A > </DT ><DD ><DL ></DL ></DD ></DL ></DD ><DT >source files </DT ><DD ><DL ><DT >multiple, <A HREF="x385.htm" >Modules Spanning Multiple Files</A > </DT ><DD ><DL ></DL ></DD ></DL ></DD ><DT >ssize_t, <A HREF="a1357.htm#AEN1366" >Changes between 2.0 and 2.2</A > </DT ><DT >standard libraries, <A HREF="c1320.htm#AEN1322" >Common Pitfalls</A > </DT ><DT >strace, <A HREF="c435.htm#AEN451" >Functions available to modules</A >, <A HREF="c937.htm#AEN939" >System Calls</A > </DT ><DT >struct </DT ><DD ><DL ><DT >tty, <A HREF="c1115.htm#AEN1117" >Replacing printk</A > </DT ><DD ><DL ></DL ></DD ></DL ></DD ><DT >struct file_operations, <A HREF="c768.htm#AEN770" >Using /proc For Input</A > </DT ><DT >struct inode_operations, <A HREF="c768.htm#AEN770" >Using /proc For Input</A > </DT ><DT >structure </DT ><DD ><DL ><DT >file_operations, <A HREF="a1357.htm#AEN1366" >Changes between 2.0 and 2.2</A > </DT ><DD ><DL ></DL ></DD ></DL ></DD ><DT >symbol table, <A HREF="c435.htm#AEN493" >Name Space</A > </DT ><DT >symmetrical multi-processing, <A HREF="c1294.htm#AEN1296" >Symmetrical Multi-Processing</A >, <A HREF="a1357.htm#AEN1366" >Changes between 2.0 and 2.2</A > </DT ><DT >sync, <A HREF="c937.htm#AEN939" >System Calls</A > </DT ><DT >system call, <A HREF="c435.htm#AEN451" >Functions available to modules</A >, <A HREF="c937.htm#AEN939" >System Calls</A > </DT ><DD ><DL ><DT >open, <A HREF="c937.htm#AEN939" >System Calls</A > </DT ><DD ><DL ></DL ></DD ></DL ></DD ><DT >system calls, <A HREF="c937.htm#AEN939" >System Calls</A > </DT ><DT >sys_call_table, <A HREF="c937.htm#AEN939" >System Calls</A > </DT ><DT >sys_open, <A HREF="c937.htm#AEN939" >System Calls</A > </DT ></DL ></DIV ><DIV CLASS="INDEXDIV" ><H2 CLASS="INDEXDIV" ><A NAME="AEN2124" ></A >T</H2 ><DL ><DT >task, <A HREF="c1149.htm#AEN1151" >Scheduling Tasks</A > </DT ><DD ><DL ><DT >current, <A HREF="c1115.htm#AEN1117" >Replacing printk</A > </DT ><DD ><DL ></DL ></DD ></DL ></DD ><DT >tasks </DT ><DD ><DL ><DT >scheduling, <A HREF="c1149.htm#AEN1151" >Scheduling Tasks</A > </DT ><DD ><DL ></DL ></DD ></DL ></DD ><DT >TASK_INTERRUPTIBLE, <A HREF="c1012.htm#AEN1021" >Replacing printk</A > </DT ><DT >tq_immediate, <A HREF="c1208.htm#AEN1217" >Interrupt Handlers</A > </DT ><DT >tq_struct, <A HREF="c1149.htm#AEN1151" >Scheduling Tasks</A > </DT ><DT >tq_timer, <A HREF="c1149.htm#AEN1151" >Scheduling Tasks</A > </DT ><DT >tty_structure, <A HREF="c1115.htm#AEN1117" >Replacing printk</A > </DT ></DL ></DIV ><DIV CLASS="INDEXDIV" ><H2 CLASS="INDEXDIV" ><A NAME="AEN2150" ></A >V</H2 ><DL ><DT >version.h, <A HREF="x385.htm" >Modules Spanning Multiple Files</A > </DT ></DL ></DIV ><DIV CLASS="INDEXDIV" ><H2 CLASS="INDEXDIV" ><A NAME="AEN2155" ></A >W</H2 ><DL ><DT >waking up processes, <A HREF="c1012.htm#AEN1021" >Replacing printk</A > </DT ><DT >write, <A HREF="a1357.htm#AEN1366" >Changes between 2.0 and 2.2</A > </DT ><DD ><DL ><DT >in the kernel, <A HREF="c768.htm#AEN770" >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="x1488.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 >