Commit c02dc9a8 authored by Andrew Morton's avatar Andrew Morton Committed by Linus Torvalds

[PATCH] Consistently use quotes for SGML attributes

From: Rusty Russell <rusty@rustcorp.com.au>

From:  Hans Ulrich Niedermann <linux-kernel@n-dimensional.de>

doc patch: Consistently use quotes for SGML attributes This makes it
possible to process the SGML files without SHORTTAG YES.
parent 2b5f9408
...@@ -204,11 +204,11 @@ ...@@ -204,11 +204,11 @@
</para> </para>
<para> <para>
<filename class=headerfile>include/linux/interrupt.h</filename> lists the <filename class="headerfile">include/linux/interrupt.h</filename> lists the
different BH's. No matter how many CPUs you have, no two BHs will run at different BH's. No matter how many CPUs you have, no two BHs will run at
the same time. This made the transition to SMP simpler, but sucks hard for the same time. This made the transition to SMP simpler, but sucks hard for
scalable performance. A very important bottom half is the timer scalable performance. A very important bottom half is the timer
BH (<filename class=headerfile>include/linux/timer.h</filename>): you BH (<filename class="headerfile">include/linux/timer.h</filename>): you
can register to have it call functions for you in a given length of time. can register to have it call functions for you in a given length of time.
</para> </para>
...@@ -224,7 +224,7 @@ ...@@ -224,7 +224,7 @@
</para> </para>
<para> <para>
tasklets (<filename class=headerfile>include/linux/interrupt.h</filename>) tasklets (<filename class="headerfile">include/linux/interrupt.h</filename>)
are like softirqs, except they are dynamically-registrable (meaning you are like softirqs, except they are dynamically-registrable (meaning you
can have as many as you want), and they also guarantee that any tasklet can have as many as you want), and they also guarantee that any tasklet
will only run on one CPU at any time, although different tasklets can will only run on one CPU at any time, although different tasklets can
...@@ -241,7 +241,7 @@ ...@@ -241,7 +241,7 @@
<para> <para>
You can tell you are in a softirq (or bottom half, or tasklet) You can tell you are in a softirq (or bottom half, or tasklet)
using the <function>in_softirq()</function> macro using the <function>in_softirq()</function> macro
(<filename class=headerfile>include/asm/hardirq.h</filename>). (<filename class="headerfile">include/asm/hardirq.h</filename>).
</para> </para>
<caution> <caution>
<para> <para>
...@@ -330,7 +330,7 @@ asmlinkage long sys_mycall(int arg) ...@@ -330,7 +330,7 @@ asmlinkage long sys_mycall(int arg)
You create a character device and implement an appropriate ioctl You create a character device and implement an appropriate ioctl
for it. This is much more flexible than system calls, doesn't have for it. This is much more flexible than system calls, doesn't have
to be entered in every architecture's to be entered in every architecture's
<filename class=headerfile>include/asm/unistd.h</filename> and <filename class="headerfile">include/asm/unistd.h</filename> and
<filename>arch/kernel/entry.S</filename> file, and is much more <filename>arch/kernel/entry.S</filename> file, and is much more
likely to be accepted by Linus. likely to be accepted by Linus.
</para> </para>
...@@ -343,7 +343,7 @@ asmlinkage long sys_mycall(int arg) ...@@ -343,7 +343,7 @@ asmlinkage long sys_mycall(int arg)
<para> <para>
Inside the ioctl you're in user context to a process. When a Inside the ioctl you're in user context to a process. When a
error occurs you return a negated errno (see error occurs you return a negated errno (see
<filename class=headerfile>include/linux/errno.h</filename>), <filename class="headerfile">include/linux/errno.h</filename>),
otherwise you return <returnvalue>0</returnvalue>. otherwise you return <returnvalue>0</returnvalue>.
</para> </para>
...@@ -429,7 +429,7 @@ cond_resched(); /* Will sleep */ ...@@ -429,7 +429,7 @@ cond_resched(); /* Will sleep */
<sect1 id="routines-printk"> <sect1 id="routines-printk">
<title> <title>
<function>printk()</function> <function>printk()</function>
<filename class=headerfile>include/linux/kernel.h</filename> <filename class="headerfile">include/linux/kernel.h</filename>
</title> </title>
<para> <para>
...@@ -447,7 +447,7 @@ printk(KERN_INFO "i = %u\n", i); ...@@ -447,7 +447,7 @@ printk(KERN_INFO "i = %u\n", i);
</programlisting> </programlisting>
<para> <para>
See <filename class=headerfile>include/linux/kernel.h</filename>; See <filename class="headerfile">include/linux/kernel.h</filename>;
for other KERN_ values; these are interpreted by syslog as the for other KERN_ values; these are interpreted by syslog as the
level. Special case: for printing an IP address use level. Special case: for printing an IP address use
</para> </para>
...@@ -487,7 +487,7 @@ printk(KERN_INFO "my ip: %d.%d.%d.%d\n", NIPQUAD(ipaddress)); ...@@ -487,7 +487,7 @@ printk(KERN_INFO "my ip: %d.%d.%d.%d\n", NIPQUAD(ipaddress));
<function>get_user()</function> <function>get_user()</function>
/ /
<function>put_user()</function> <function>put_user()</function>
<filename class=headerfile>include/asm/uaccess.h</filename> <filename class="headerfile">include/asm/uaccess.h</filename>
</title> </title>
<para> <para>
...@@ -525,7 +525,7 @@ printk(KERN_INFO "my ip: %d.%d.%d.%d\n", NIPQUAD(ipaddress)); ...@@ -525,7 +525,7 @@ printk(KERN_INFO "my ip: %d.%d.%d.%d\n", NIPQUAD(ipaddress));
<sect1 id="routines-kmalloc"> <sect1 id="routines-kmalloc">
<title><function>kmalloc()</function>/<function>kfree()</function> <title><function>kmalloc()</function>/<function>kfree()</function>
<filename class=headerfile>include/linux/slab.h</filename></title> <filename class="headerfile">include/linux/slab.h</filename></title>
<para> <para>
<emphasis>[MAY SLEEP: SEE BELOW]</emphasis> <emphasis>[MAY SLEEP: SEE BELOW]</emphasis>
...@@ -593,10 +593,10 @@ printk(KERN_INFO "my ip: %d.%d.%d.%d\n", NIPQUAD(ipaddress)); ...@@ -593,10 +593,10 @@ printk(KERN_INFO "my ip: %d.%d.%d.%d\n", NIPQUAD(ipaddress));
<para> <para>
If you are allocating at least <constant>PAGE_SIZE</constant> If you are allocating at least <constant>PAGE_SIZE</constant>
(<filename class=headerfile>include/asm/page.h</filename>) bytes, (<filename class="headerfile">include/asm/page.h</filename>) bytes,
consider using <function>__get_free_pages()</function> consider using <function>__get_free_pages()</function>
(<filename class=headerfile>include/linux/mm.h</filename>). It (<filename class="headerfile">include/linux/mm.h</filename>). It
takes an order argument (0 for page sized, 1 for double page, 2 takes an order argument (0 for page sized, 1 for double page, 2
for four pages etc.) and the same memory priority flag word as for four pages etc.) and the same memory priority flag word as
above. above.
...@@ -619,13 +619,13 @@ printk(KERN_INFO "my ip: %d.%d.%d.%d\n", NIPQUAD(ipaddress)); ...@@ -619,13 +619,13 @@ printk(KERN_INFO "my ip: %d.%d.%d.%d\n", NIPQUAD(ipaddress));
<para> <para>
Before inventing your own cache of often-used objects consider Before inventing your own cache of often-used objects consider
using a slab cache in using a slab cache in
<filename class=headerfile>include/linux/slab.h</filename> <filename class="headerfile">include/linux/slab.h</filename>
</para> </para>
</sect1> </sect1>
<sect1 id="routines-current"> <sect1 id="routines-current">
<title><function>current</function> <title><function>current</function>
<filename class=headerfile>include/asm/current.h</filename></title> <filename class="headerfile">include/asm/current.h</filename></title>
<para> <para>
This global variable (really a macro) contains a pointer to This global variable (really a macro) contains a pointer to
...@@ -638,8 +638,8 @@ printk(KERN_INFO "my ip: %d.%d.%d.%d\n", NIPQUAD(ipaddress)); ...@@ -638,8 +638,8 @@ printk(KERN_INFO "my ip: %d.%d.%d.%d\n", NIPQUAD(ipaddress));
<sect1 id="routines-udelay"> <sect1 id="routines-udelay">
<title><function>udelay()</function>/<function>mdelay()</function> <title><function>udelay()</function>/<function>mdelay()</function>
<filename class=headerfile>include/asm/delay.h</filename> <filename class="headerfile">include/asm/delay.h</filename>
<filename class=headerfile>include/linux/delay.h</filename> <filename class="headerfile">include/linux/delay.h</filename>
</title> </title>
<para> <para>
...@@ -652,7 +652,7 @@ printk(KERN_INFO "my ip: %d.%d.%d.%d\n", NIPQUAD(ipaddress)); ...@@ -652,7 +652,7 @@ printk(KERN_INFO "my ip: %d.%d.%d.%d\n", NIPQUAD(ipaddress));
<sect1 id="routines-endian"> <sect1 id="routines-endian">
<title><function>cpu_to_be32()</function>/<function>be32_to_cpu()</function>/<function>cpu_to_le32()</function>/<function>le32_to_cpu()</function> <title><function>cpu_to_be32()</function>/<function>be32_to_cpu()</function>/<function>cpu_to_le32()</function>/<function>le32_to_cpu()</function>
<filename class=headerfile>include/asm/byteorder.h</filename> <filename class="headerfile">include/asm/byteorder.h</filename>
</title> </title>
<para> <para>
...@@ -675,7 +675,7 @@ printk(KERN_INFO "my ip: %d.%d.%d.%d\n", NIPQUAD(ipaddress)); ...@@ -675,7 +675,7 @@ printk(KERN_INFO "my ip: %d.%d.%d.%d\n", NIPQUAD(ipaddress));
<sect1 id="routines-local-irqs"> <sect1 id="routines-local-irqs">
<title><function>local_irq_save()</function>/<function>local_irq_restore()</function> <title><function>local_irq_save()</function>/<function>local_irq_restore()</function>
<filename class=headerfile>include/asm/system.h</filename> <filename class="headerfile">include/asm/system.h</filename>
</title> </title>
<para> <para>
...@@ -690,7 +690,7 @@ printk(KERN_INFO "my ip: %d.%d.%d.%d\n", NIPQUAD(ipaddress)); ...@@ -690,7 +690,7 @@ printk(KERN_INFO "my ip: %d.%d.%d.%d\n", NIPQUAD(ipaddress));
<sect1 id="routines-softirqs"> <sect1 id="routines-softirqs">
<title><function>local_bh_disable()</function>/<function>local_bh_enable()</function> <title><function>local_bh_disable()</function>/<function>local_bh_enable()</function>
<filename class=headerfile>include/linux/interrupt.h</filename></title> <filename class="headerfile">include/linux/interrupt.h</filename></title>
<para> <para>
These routines disable soft interrupts on the local CPU, and These routines disable soft interrupts on the local CPU, and
...@@ -703,7 +703,7 @@ printk(KERN_INFO "my ip: %d.%d.%d.%d\n", NIPQUAD(ipaddress)); ...@@ -703,7 +703,7 @@ printk(KERN_INFO "my ip: %d.%d.%d.%d\n", NIPQUAD(ipaddress));
<sect1 id="routines-processorids"> <sect1 id="routines-processorids">
<title><function>smp_processor_id</function>() <title><function>smp_processor_id</function>()
<filename class=headerfile>include/asm/smp.h</filename></title> <filename class="headerfile">include/asm/smp.h</filename></title>
<para> <para>
<function>smp_processor_id()</function> returns the current <function>smp_processor_id()</function> returns the current
...@@ -715,7 +715,7 @@ printk(KERN_INFO "my ip: %d.%d.%d.%d\n", NIPQUAD(ipaddress)); ...@@ -715,7 +715,7 @@ printk(KERN_INFO "my ip: %d.%d.%d.%d\n", NIPQUAD(ipaddress));
<sect1 id="routines-init"> <sect1 id="routines-init">
<title><type>__init</type>/<type>__exit</type>/<type>__initdata</type> <title><type>__init</type>/<type>__exit</type>/<type>__initdata</type>
<filename class=headerfile>include/linux/init.h</filename></title> <filename class="headerfile">include/linux/init.h</filename></title>
<para> <para>
After boot, the kernel frees up a special section; functions After boot, the kernel frees up a special section; functions
...@@ -738,7 +738,7 @@ printk(KERN_INFO "my ip: %d.%d.%d.%d\n", NIPQUAD(ipaddress)); ...@@ -738,7 +738,7 @@ printk(KERN_INFO "my ip: %d.%d.%d.%d\n", NIPQUAD(ipaddress));
<sect1 id="routines-init-again"> <sect1 id="routines-init-again">
<title><function>__initcall()</function>/<function>module_init()</function> <title><function>__initcall()</function>/<function>module_init()</function>
<filename class=headerfile>include/linux/init.h</filename></title> <filename class="headerfile">include/linux/init.h</filename></title>
<para> <para>
Many parts of the kernel are well served as a module Many parts of the kernel are well served as a module
(dynamically-loadable parts of the kernel). Using the (dynamically-loadable parts of the kernel). Using the
...@@ -768,7 +768,7 @@ printk(KERN_INFO "my ip: %d.%d.%d.%d\n", NIPQUAD(ipaddress)); ...@@ -768,7 +768,7 @@ printk(KERN_INFO "my ip: %d.%d.%d.%d\n", NIPQUAD(ipaddress));
<sect1 id="routines-moduleexit"> <sect1 id="routines-moduleexit">
<title> <function>module_exit()</function> <title> <function>module_exit()</function>
<filename class=headerfile>include/linux/init.h</filename> </title> <filename class="headerfile">include/linux/init.h</filename> </title>
<para> <para>
This macro defines the function to be called at module removal This macro defines the function to be called at module removal
...@@ -781,7 +781,7 @@ printk(KERN_INFO "my ip: %d.%d.%d.%d\n", NIPQUAD(ipaddress)); ...@@ -781,7 +781,7 @@ printk(KERN_INFO "my ip: %d.%d.%d.%d\n", NIPQUAD(ipaddress));
<sect1 id="routines-module-use-counters"> <sect1 id="routines-module-use-counters">
<title> <function>MOD_INC_USE_COUNT</function>/<function>MOD_DEC_USE_COUNT</function> <title> <function>MOD_INC_USE_COUNT</function>/<function>MOD_DEC_USE_COUNT</function>
<filename class=headerfile>include/linux/module.h</filename></title> <filename class="headerfile">include/linux/module.h</filename></title>
<para> <para>
These manipulate the module usage count, to protect against These manipulate the module usage count, to protect against
...@@ -839,7 +839,7 @@ foo_open (...) ...@@ -839,7 +839,7 @@ foo_open (...)
<chapter id="queues"> <chapter id="queues">
<title>Wait Queues <title>Wait Queues
<filename class=headerfile>include/linux/wait.h</filename> <filename class="headerfile">include/linux/wait.h</filename>
</title> </title>
<para> <para>
<emphasis>[SLEEPS]</emphasis> <emphasis>[SLEEPS]</emphasis>
...@@ -874,7 +874,7 @@ foo_open (...) ...@@ -874,7 +874,7 @@ foo_open (...)
There is a macro to do this: There is a macro to do this:
<function>wait_event_interruptible()</function> <function>wait_event_interruptible()</function>
<filename class=headerfile>include/linux/sched.h</filename> The <filename class="headerfile">include/linux/sched.h</filename> The
first argument is the wait queue head, and the second is an first argument is the wait queue head, and the second is an
expression which is evaluated; the macro returns expression which is evaluated; the macro returns
<returnvalue>0</returnvalue> when this expression is true, or <returnvalue>0</returnvalue> when this expression is true, or
...@@ -900,7 +900,7 @@ foo_open (...) ...@@ -900,7 +900,7 @@ foo_open (...)
<para> <para>
Call <function>wake_up()</function> Call <function>wake_up()</function>
<filename class=headerfile>include/linux/sched.h</filename>;, <filename class="headerfile">include/linux/sched.h</filename>;,
which will wake up every process in the queue. The exception is which will wake up every process in the queue. The exception is
if one has <constant>TASK_EXCLUSIVE</constant> set, in which case if one has <constant>TASK_EXCLUSIVE</constant> set, in which case
the remainder of the queue will not be woken. the remainder of the queue will not be woken.
...@@ -915,7 +915,7 @@ foo_open (...) ...@@ -915,7 +915,7 @@ foo_open (...)
Certain operations are guaranteed atomic on all platforms. The Certain operations are guaranteed atomic on all platforms. The
first class of operations work on <type>atomic_t</type> first class of operations work on <type>atomic_t</type>
<filename class=headerfile>include/asm/atomic.h</filename>; this <filename class="headerfile">include/asm/atomic.h</filename>; this
contains a signed integer (at least 24 bits long), and you must use contains a signed integer (at least 24 bits long), and you must use
these functions to manipulate or read atomic_t variables. these functions to manipulate or read atomic_t variables.
<function>atomic_read()</function> and <function>atomic_read()</function> and
...@@ -943,7 +943,7 @@ foo_open (...) ...@@ -943,7 +943,7 @@ foo_open (...)
The second class of atomic operations is atomic bit operations on a The second class of atomic operations is atomic bit operations on a
<type>long</type>, defined in <type>long</type>, defined in
<filename class=headerfile>include/asm/bitops.h</filename>. These <filename class="headerfile">include/asm/bitops.h</filename>. These
operations generally take a pointer to the bit pattern, and a bit operations generally take a pointer to the bit pattern, and a bit
number: 0 is the least significant bit. number: 0 is the least significant bit.
<function>set_bit()</function>, <function>clear_bit()</function> <function>set_bit()</function>, <function>clear_bit()</function>
...@@ -982,7 +982,7 @@ foo_open (...) ...@@ -982,7 +982,7 @@ foo_open (...)
<sect1 id="sym-exportsymbols"> <sect1 id="sym-exportsymbols">
<title><function>EXPORT_SYMBOL()</function> <title><function>EXPORT_SYMBOL()</function>
<filename class=headerfile>include/linux/module.h</filename></title> <filename class="headerfile">include/linux/module.h</filename></title>
<para> <para>
This is the classic method of exporting a symbol, and it works This is the classic method of exporting a symbol, and it works
...@@ -995,7 +995,7 @@ foo_open (...) ...@@ -995,7 +995,7 @@ foo_open (...)
<sect1 id="sym-exportsymbols-gpl"> <sect1 id="sym-exportsymbols-gpl">
<title><function>EXPORT_SYMBOL_GPL()</function> <title><function>EXPORT_SYMBOL_GPL()</function>
<filename class=headerfile>include/linux/module.h</filename></title> <filename class="headerfile">include/linux/module.h</filename></title>
<para> <para>
Similar to <function>EXPORT_SYMBOL()</function> except that the Similar to <function>EXPORT_SYMBOL()</function> except that the
...@@ -1012,7 +1012,7 @@ foo_open (...) ...@@ -1012,7 +1012,7 @@ foo_open (...)
<sect1 id="conventions-doublelinkedlist"> <sect1 id="conventions-doublelinkedlist">
<title>Double-linked lists <title>Double-linked lists
<filename class=headerfile>include/linux/list.h</filename></title> <filename class="headerfile">include/linux/list.h</filename></title>
<para> <para>
There are three sets of linked-list routines in the kernel There are three sets of linked-list routines in the kernel
...@@ -1039,7 +1039,7 @@ foo_open (...) ...@@ -1039,7 +1039,7 @@ foo_open (...)
<para> <para>
The filesystem code uses <function>ERR_PTR()</function> The filesystem code uses <function>ERR_PTR()</function>
<filename class=headerfile>include/linux/fs.h</filename>; to <filename class="headerfile">include/linux/fs.h</filename>; to
encode a negative error number into a pointer, and encode a negative error number into a pointer, and
<function>IS_ERR()</function> and <function>PTR_ERR()</function> <function>IS_ERR()</function> and <function>PTR_ERR()</function>
to get it back out again: avoids a separate pointer parameter for to get it back out again: avoids a separate pointer parameter for
......
...@@ -87,7 +87,7 @@ ...@@ -87,7 +87,7 @@
<table> <table>
<title>Expected Results</title> <title>Expected Results</title>
<tgroup cols=2 align=left> <tgroup cols="2" align="left">
<thead> <thead>
<row> <row>
...@@ -133,7 +133,7 @@ ...@@ -133,7 +133,7 @@
<table> <table>
<title>Possible Results</title> <title>Possible Results</title>
<tgroup cols=2 align=left> <tgroup cols="2" align="left">
<thead> <thead>
<row> <row>
<entry>Instance 1</entry> <entry>Instance 1</entry>
...@@ -222,14 +222,14 @@ ...@@ -222,14 +222,14 @@
<para> <para>
There are two main types of kernel locks. The fundamental type There are two main types of kernel locks. The fundamental type
is the spinlock is the spinlock
(<filename class=headerfile>include/asm/spinlock.h</filename>), (<filename class="headerfile">include/asm/spinlock.h</filename>),
which is a very simple single-holder lock: if you can't get the which is a very simple single-holder lock: if you can't get the
spinlock, you keep trying (spinning) until you can. Spinlocks are spinlock, you keep trying (spinning) until you can. Spinlocks are
very small and fast, and can be used anywhere. very small and fast, and can be used anywhere.
</para> </para>
<para> <para>
The second type is a semaphore The second type is a semaphore
(<filename class=headerfile>include/asm/semaphore.h</filename>): it (<filename class="headerfile">include/asm/semaphore.h</filename>): it
can have more than one holder at any time (the number decided at can have more than one holder at any time (the number decided at
initialization time), although it is most commonly used as a initialization time), although it is most commonly used as a
single-holder lock (a mutex). If you can't get a semaphore, single-holder lock (a mutex). If you can't get a semaphore,
...@@ -315,7 +315,7 @@ ...@@ -315,7 +315,7 @@
user context can be interrupted by a softirq, and secondly, the user context can be interrupted by a softirq, and secondly, the
critical region could be entered from another CPU. This is where critical region could be entered from another CPU. This is where
<function>spin_lock_bh()</function> <function>spin_lock_bh()</function>
(<filename class=headerfile>include/linux/spinlock.h</filename>) is (<filename class="headerfile">include/linux/spinlock.h</filename>) is
used. It disables softirqs on that CPU, then grabs the lock. used. It disables softirqs on that CPU, then grabs the lock.
<function>spin_unlock_bh()</function> does the reverse. (The <function>spin_unlock_bh()</function> does the reverse. (The
'_bh' suffix is a historical reference to "Bottom Halves", the '_bh' suffix is a historical reference to "Bottom Halves", the
...@@ -333,7 +333,7 @@ ...@@ -333,7 +333,7 @@
This works perfectly for <firstterm linkend="gloss-up"><acronym>UP This works perfectly for <firstterm linkend="gloss-up"><acronym>UP
</acronym></firstterm> as well: the spin lock vanishes, and this macro </acronym></firstterm> as well: the spin lock vanishes, and this macro
simply becomes <function>local_bh_disable()</function> simply becomes <function>local_bh_disable()</function>
(<filename class=headerfile>include/linux/interrupt.h</filename>), which (<filename class="headerfile">include/linux/interrupt.h</filename>), which
protects you from the softirq being run. protects you from the softirq being run.
</para> </para>
</sect1> </sect1>
...@@ -463,7 +463,7 @@ ...@@ -463,7 +463,7 @@
<para> <para>
This works perfectly for UP as well: the spin lock vanishes, This works perfectly for UP as well: the spin lock vanishes,
and this macro simply becomes <function>local_irq_disable()</function> and this macro simply becomes <function>local_irq_disable()</function>
(<filename class=headerfile>include/asm/smp.h</filename>), which (<filename class="headerfile">include/asm/smp.h</filename>), which
protects you from the softirq/tasklet/BH being run. protects you from the softirq/tasklet/BH being run.
</para> </para>
...@@ -545,7 +545,7 @@ ...@@ -545,7 +545,7 @@
</para> </para>
<table> <table>
<title>Table of Locking Requirements</title> <title>Table of Locking Requirements</title>
<TGROUP COLS=11> <TGROUP COLS="11">
<TBODY> <TBODY>
<ROW> <ROW>
<ENTRY></ENTRY> <ENTRY></ENTRY>
...@@ -1026,7 +1026,7 @@ In practice, <type>atomic_t</type> would usually be used for ...@@ -1026,7 +1026,7 @@ In practice, <type>atomic_t</type> would usually be used for
<structfield>refcnt</structfield>. There are a number of atomic <structfield>refcnt</structfield>. There are a number of atomic
operations defined in operations defined in
<filename class=headerfile>include/asm/atomic.h</filename>: these are <filename class="headerfile">include/asm/atomic.h</filename>: these are
guaranteed to be seen atomically from all CPUs in the system, so no guaranteed to be seen atomically from all CPUs in the system, so no
lock is required. In this case, it is simpler than using spinlocks, lock is required. In this case, it is simpler than using spinlocks,
although for anything non-trivial using spinlocks is clearer. The although for anything non-trivial using spinlocks is clearer. The
...@@ -1296,7 +1296,7 @@ as Alan Cox says, <quote>Lock data, not code</quote>. ...@@ -1296,7 +1296,7 @@ as Alan Cox says, <quote>Lock data, not code</quote>.
<table> <table>
<title>Consequences</title> <title>Consequences</title>
<tgroup cols=2 align=left> <tgroup cols="2" align="left">
<thead> <thead>
<row> <row>
...@@ -1437,7 +1437,7 @@ as Alan Cox says, <quote>Lock data, not code</quote>. ...@@ -1437,7 +1437,7 @@ as Alan Cox says, <quote>Lock data, not code</quote>.
themselves (by calling <function>add_timer()</function> at the end themselves (by calling <function>add_timer()</function> at the end
of their timer function). Because this is a fairly common case of their timer function). Because this is a fairly common case
which is prone to races, you should use <function>del_timer_sync()</function> which is prone to races, you should use <function>del_timer_sync()</function>
(<filename class=headerfile>include/linux/timer.h</filename>) (<filename class="headerfile">include/linux/timer.h</filename>)
to handle this case. It returns the number of times the timer to handle this case. It returns the number of times the timer
had to be deleted before we finally stopped it from adding itself back had to be deleted before we finally stopped it from adding itself back
in. in.
...@@ -1749,7 +1749,7 @@ machines due to caching. ...@@ -1749,7 +1749,7 @@ machines due to caching.
an exclusive lock. See <function>DEFINE_PER_CPU()</function>, an exclusive lock. See <function>DEFINE_PER_CPU()</function>,
<function>get_cpu_var()</function> and <function>get_cpu_var()</function> and
<function>put_cpu_var()</function> <function>put_cpu_var()</function>
(<filename class=headerfile>include/linux/percpu.h</filename>). (<filename class="headerfile">include/linux/percpu.h</filename>).
</para> </para>
<para> <para>
...@@ -1757,7 +1757,7 @@ machines due to caching. ...@@ -1757,7 +1757,7 @@ machines due to caching.
<type>local_t</type> type, and the <type>local_t</type> type, and the
<function>cpu_local_inc()</function> and related functions, <function>cpu_local_inc()</function> and related functions,
which are more efficient than simple code on some architectures which are more efficient than simple code on some architectures
(<filename class=headerfile>include/asm/local.h</filename>). (<filename class="headerfile">include/asm/local.h</filename>).
</para> </para>
<para> <para>
......
...@@ -88,9 +88,9 @@ ...@@ -88,9 +88,9 @@
Each read from a bus mouse interface device returns a block of data. Each read from a bus mouse interface device returns a block of data.
The first three bytes of each read are defined as follows: The first three bytes of each read are defined as follows:
<table frame=all> <table frame="all">
<title>Mouse Data Encoding</title> <title>Mouse Data Encoding</title>
<tgroup cols=2 align=left> <tgroup cols="2" align="left">
<tbody> <tbody>
<row> <row>
<entry>Byte 0</entry> <entry>Byte 0</entry>
......
...@@ -969,7 +969,7 @@ port->ops->write_data (port, d); ...@@ -969,7 +969,7 @@ port->ops->write_data (port, d);
<para> <para>
To recap, then:</para> To recap, then:</para>
<itemizedlist spacing=compact> <itemizedlist spacing="compact">
<listitem> <listitem>
<para> <para>
...@@ -1387,7 +1387,7 @@ struct parport_operations { ...@@ -1387,7 +1387,7 @@ struct parport_operations {
<filename>/dev/parport0</filename>) allows you to: <filename>/dev/parport0</filename>) allows you to:
</para> </para>
<itemizedlist spacing=compact> <itemizedlist spacing="compact">
<listitem> <listitem>
<para> <para>
...@@ -1614,7 +1614,7 @@ struct parport_operations { ...@@ -1614,7 +1614,7 @@ struct parport_operations {
<filename>incluce/linux/parport.h</filename> and include: <filename>incluce/linux/parport.h</filename> and include:
</para> </para>
<itemizedlist spacing=compact> <itemizedlist spacing="compact">
<listitem><para> <listitem><para>
<constant>IEEE1284_MODE_COMPAT</constant></para></listitem> <constant>IEEE1284_MODE_COMPAT</constant></para></listitem>
<listitem><para> <listitem><para>
...@@ -1713,7 +1713,7 @@ struct parport_operations { ...@@ -1713,7 +1713,7 @@ struct parport_operations {
affect future I/O operations. Available flags are: affect future I/O operations. Available flags are:
</para> </para>
<itemizedlist spacing=compact> <itemizedlist spacing="compact">
<listitem><para> <listitem><para>
<constant>PP_FASTWRITE</constant></para></listitem> <constant>PP_FASTWRITE</constant></para></listitem>
<listitem><para> <listitem><para>
...@@ -1759,7 +1759,7 @@ struct parport_operations { ...@@ -1759,7 +1759,7 @@ struct parport_operations {
<filename>include/linux/parport.h</filename>: <filename>include/linux/parport.h</filename>:
</para> </para>
<itemizedlist spacing=compact> <itemizedlist spacing="compact">
<listitem><para> <listitem><para>
<constant>PARPORT_CONTROL_STROBE</constant></para></listitem> <constant>PARPORT_CONTROL_STROBE</constant></para></listitem>
<listitem><para> <listitem><para>
......
...@@ -336,7 +336,7 @@ Those packages are listed in Document/Changes in kernel source ...@@ -336,7 +336,7 @@ Those packages are listed in Document/Changes in kernel source
distribution. If you have to install the driver other than those bundled distribution. If you have to install the driver other than those bundled
in kernel release, you should have your driver file in kernel release, you should have your driver file
<filename>sis900.c</filename> and <filename>sis900.h</filename> <filename>sis900.c</filename> and <filename>sis900.h</filename>
copied into <filename class=directory>/usr/src/linux/drivers/net/</filename> first. copied into <filename class="directory">/usr/src/linux/drivers/net/</filename> first.
There are two alternative ways to install the driver There are two alternative ways to install the driver
</Para> </Para>
......
...@@ -227,7 +227,7 @@ ...@@ -227,7 +227,7 @@
<sect1 id="version191"><title> <sect1 id="version191"><title>
Version 1.9.1 Version 1.9.1
</title> </title>
<itemizedlist spacing=compact> <itemizedlist spacing="compact">
<listitem> <listitem>
<para> <para>
DSP read/write bugfixes from Thomas Sailer. DSP read/write bugfixes from Thomas Sailer.
...@@ -252,7 +252,7 @@ Version 1.9.1 ...@@ -252,7 +252,7 @@ Version 1.9.1
<sect1 id="version1115"><title> <sect1 id="version1115"><title>
Version 1.1.15 Version 1.1.15
</title> </title>
<itemizedlist spacing=compact> <itemizedlist spacing="compact">
<listitem> <listitem>
<para> <para>
Support for variable fragment size and variable fragment number (Rui Support for variable fragment size and variable fragment number (Rui
...@@ -325,7 +325,7 @@ Version 1.1.15 ...@@ -325,7 +325,7 @@ Version 1.1.15
<sect1 id="version1114"><title> <sect1 id="version1114"><title>
Version 1.1.14 Version 1.1.14
</title> </title>
<itemizedlist spacing=compact> <itemizedlist spacing="compact">
<listitem> <listitem>
<para> <para>
Use VM_RESERVE when available, to eliminate unnecessary page faults. Use VM_RESERVE when available, to eliminate unnecessary page faults.
...@@ -337,7 +337,7 @@ Version 1.1.14 ...@@ -337,7 +337,7 @@ Version 1.1.14
<sect1 id="version1112"><title> <sect1 id="version1112"><title>
Version 1.1.12 Version 1.1.12
</title> </title>
<itemizedlist spacing=compact> <itemizedlist spacing="compact">
<listitem> <listitem>
<para> <para>
mmap bug fixes from Linus. mmap bug fixes from Linus.
...@@ -349,7 +349,7 @@ Version 1.1.12 ...@@ -349,7 +349,7 @@ Version 1.1.12
<sect1 id="version1111"><title> <sect1 id="version1111"><title>
Version 1.1.11 Version 1.1.11
</title> </title>
<itemizedlist spacing=compact> <itemizedlist spacing="compact">
<listitem> <listitem>
<para> <para>
Many more bug fixes. mmap enabled by default, but may still be buggy. Many more bug fixes. mmap enabled by default, but may still be buggy.
...@@ -368,7 +368,7 @@ Version 1.1.11 ...@@ -368,7 +368,7 @@ Version 1.1.11
<sect1 id="version1110"><title> <sect1 id="version1110"><title>
Version 1.1.10 Version 1.1.10
</title> </title>
<itemizedlist spacing=compact> <itemizedlist spacing="compact">
<listitem> <listitem>
<para> <para>
Many bug fixes. mmap enabled by default, but may still be buggy. Many bug fixes. mmap enabled by default, but may still be buggy.
...@@ -380,7 +380,7 @@ Version 1.1.10 ...@@ -380,7 +380,7 @@ Version 1.1.10
<sect1 id="version119"><title> <sect1 id="version119"><title>
Version 1.1.9 Version 1.1.9
</title> </title>
<itemizedlist spacing=compact> <itemizedlist spacing="compact">
<listitem> <listitem>
<para> <para>
Redesign and rewrite audio playback implementation. (faster and smaller, hopefully) Redesign and rewrite audio playback implementation. (faster and smaller, hopefully)
...@@ -478,7 +478,7 @@ Version 1.1.9 ...@@ -478,7 +478,7 @@ Version 1.1.9
<sect1 id="version118"><title> <sect1 id="version118"><title>
Version 1.1.8 Version 1.1.8
</title> </title>
<itemizedlist spacing=compact> <itemizedlist spacing="compact">
<listitem> <listitem>
<para> <para>
Clean up interrupt handler output. Fixes the following kernel error message: Clean up interrupt handler output. Fixes the following kernel error message:
...@@ -501,7 +501,7 @@ Version 1.1.8 ...@@ -501,7 +501,7 @@ Version 1.1.8
<sect1 id="version117"><title> <sect1 id="version117"><title>
Version 1.1.7 Version 1.1.7
</title> </title>
<itemizedlist spacing=compact> <itemizedlist spacing="compact">
<listitem> <listitem>
<para> <para>
Fix module unload bug where mixer device left registered Fix module unload bug where mixer device left registered
...@@ -514,7 +514,7 @@ Version 1.1.7 ...@@ -514,7 +514,7 @@ Version 1.1.7
<sect1 id="version116"><title> <sect1 id="version116"><title>
Version 1.1.6 Version 1.1.6
</title> </title>
<itemizedlist spacing=compact> <itemizedlist spacing="compact">
<listitem> <listitem>
<para> <para>
Rewrite via_set_rate to mimic ALSA basic AC97 rate setting Rewrite via_set_rate to mimic ALSA basic AC97 rate setting
...@@ -546,7 +546,7 @@ Version 1.1.6 ...@@ -546,7 +546,7 @@ Version 1.1.6
<sect1 id="version115"><title> <sect1 id="version115"><title>
Version 1.1.5 Version 1.1.5
</title> </title>
<itemizedlist spacing=compact> <itemizedlist spacing="compact">
<listitem> <listitem>
<para> <para>
Disable some overly-verbose debugging code Disable some overly-verbose debugging code
...@@ -573,7 +573,7 @@ Version 1.1.5 ...@@ -573,7 +573,7 @@ Version 1.1.5
<sect1 id="version114"><title> <sect1 id="version114"><title>
Version 1.1.4 Version 1.1.4
</title> </title>
<itemizedlist spacing=compact> <itemizedlist spacing="compact">
<listitem> <listitem>
<para> <para>
Completed rewrite of driver. Eliminated SoundBlaster compatibility Completed rewrite of driver. Eliminated SoundBlaster compatibility
......
...@@ -176,8 +176,8 @@ int __init myradio_init(struct video_init *v) ...@@ -176,8 +176,8 @@ int __init myradio_init(struct video_init *v)
<para> <para>
The types available are The types available are
</para> </para>
<table frame=all><title>Device Types</title> <table frame="all"><title>Device Types</title>
<tgroup cols=3 align=left> <tgroup cols="3" align="left">
<tbody> <tbody>
<row> <row>
<entry>VFL_TYPE_RADIO</><entry>/dev/radio{n}</><entry> <entry>VFL_TYPE_RADIO</><entry>/dev/radio{n}</><entry>
...@@ -299,8 +299,8 @@ static int radio_ioctl(struct video_device *dev, unsigned int cmd, void *arg) ...@@ -299,8 +299,8 @@ static int radio_ioctl(struct video_device *dev, unsigned int cmd, void *arg)
allows the applications to find out what sort of a card they have found and allows the applications to find out what sort of a card they have found and
to figure out what they want to do about it. The fields in the structure are to figure out what they want to do about it. The fields in the structure are
</para> </para>
<table frame=all><title>struct video_capability fields</title> <table frame="all"><title>struct video_capability fields</title>
<tgroup cols=2 align=left> <tgroup cols="2" align="left">
<tbody> <tbody>
<row> <row>
<entry>name</><entry>The device text name. This is intended for the user.</> <entry>name</><entry>The device text name. This is intended for the user.</>
...@@ -373,8 +373,8 @@ static int radio_ioctl(struct video_device *dev, unsigned int cmd, void *arg) ...@@ -373,8 +373,8 @@ static int radio_ioctl(struct video_device *dev, unsigned int cmd, void *arg)
<para> <para>
The video_tuner structure has the following fields The video_tuner structure has the following fields
</para> </para>
<table frame=all><title>struct video_tuner fields</title> <table frame="all"><title>struct video_tuner fields</title>
<tgroup cols=2 align=left> <tgroup cols="2" align="left">
<tbody> <tbody>
<row> <row>
<entry>int tuner</><entry>The number of the tuner in question</entry> <entry>int tuner</><entry>The number of the tuner in question</entry>
...@@ -406,8 +406,8 @@ static int radio_ioctl(struct video_device *dev, unsigned int cmd, void *arg) ...@@ -406,8 +406,8 @@ static int radio_ioctl(struct video_device *dev, unsigned int cmd, void *arg)
</tgroup> </tgroup>
</table> </table>
<table frame=all><title>struct video_tuner flags</title> <table frame="all"><title>struct video_tuner flags</title>
<tgroup cols=2 align=left> <tgroup cols="2" align="left">
<tbody> <tbody>
<row> <row>
<entry>VIDEO_TUNER_PAL</><entry>A PAL TV tuner</entry> <entry>VIDEO_TUNER_PAL</><entry>A PAL TV tuner</entry>
...@@ -429,8 +429,8 @@ static int radio_ioctl(struct video_device *dev, unsigned int cmd, void *arg) ...@@ -429,8 +429,8 @@ static int radio_ioctl(struct video_device *dev, unsigned int cmd, void *arg)
</tgroup> </tgroup>
</table> </table>
<table frame=all><title>struct video_tuner modes</title> <table frame="all"><title>struct video_tuner modes</title>
<tgroup cols=2 align=left> <tgroup cols="2" align="left">
<tbody> <tbody>
<row> <row>
<entry>VIDEO_MODE_PAL</><entry>PAL Format</entry> <entry>VIDEO_MODE_PAL</><entry>PAL Format</entry>
...@@ -580,8 +580,8 @@ static int current_volume=0; ...@@ -580,8 +580,8 @@ static int current_volume=0;
<para> <para>
Then we fill in the video_audio structure. This has the following format Then we fill in the video_audio structure. This has the following format
</para> </para>
<table frame=all><title>struct video_audio fields</title> <table frame="all"><title>struct video_audio fields</title>
<tgroup cols=2 align=left> <tgroup cols="2" align="left">
<tbody> <tbody>
<row> <row>
<entry>audio</><entry>The input the user wishes to query</> <entry>audio</><entry>The input the user wishes to query</>
...@@ -615,8 +615,8 @@ static int current_volume=0; ...@@ -615,8 +615,8 @@ static int current_volume=0;
</tgroup> </tgroup>
</table> </table>
<table frame=all><title>struct video_audio flags</title> <table frame="all"><title>struct video_audio flags</title>
<tgroup cols=2 align=left> <tgroup cols="2" align="left">
<tbody> <tbody>
<row> <row>
<entry>VIDEO_AUDIO_MUTE</><entry>The audio is currently muted. We <entry>VIDEO_AUDIO_MUTE</><entry>The audio is currently muted. We
...@@ -633,8 +633,8 @@ static int current_volume=0; ...@@ -633,8 +633,8 @@ static int current_volume=0;
</tgroup> </tgroup>
</table> </table>
<table frame=all><title>struct video_audio modes</title> <table frame="all"><title>struct video_audio modes</title>
<tgroup cols=2 align=left> <tgroup cols="2" align="left">
<tbody> <tbody>
<row> <row>
<entry>VIDEO_SOUND_MONO</><entry>Mono sound</entry> <entry>VIDEO_SOUND_MONO</><entry>Mono sound</entry>
...@@ -862,8 +862,8 @@ static struct video_device my_camera ...@@ -862,8 +862,8 @@ static struct video_device my_camera
We use the extra video capability flags that did not apply to the We use the extra video capability flags that did not apply to the
radio interface. The video related flags are radio interface. The video related flags are
</para> </para>
<table frame=all><title>Capture Capabilities</title> <table frame="all"><title>Capture Capabilities</title>
<tgroup cols=2 align=left> <tgroup cols="2" align="left">
<tbody> <tbody>
<row> <row>
<entry>VID_TYPE_CAPTURE</><entry>We support image capture</> <entry>VID_TYPE_CAPTURE</><entry>We support image capture</>
...@@ -1204,8 +1204,8 @@ static int camera_ioctl(struct video_device *dev, unsigned int cmd, void *arg) ...@@ -1204,8 +1204,8 @@ static int camera_ioctl(struct video_device *dev, unsigned int cmd, void *arg)
inputs to the video card). Our example card has a single camera input. The inputs to the video card). Our example card has a single camera input. The
fields in the structure are fields in the structure are
</para> </para>
<table frame=all><title>struct video_channel fields</title> <table frame="all"><title>struct video_channel fields</title>
<tgroup cols=2 align=left> <tgroup cols="2" align="left">
<tbody> <tbody>
<row> <row>
...@@ -1227,8 +1227,8 @@ static int camera_ioctl(struct video_device *dev, unsigned int cmd, void *arg) ...@@ -1227,8 +1227,8 @@ static int camera_ioctl(struct video_device *dev, unsigned int cmd, void *arg)
</tbody> </tbody>
</tgroup> </tgroup>
</table> </table>
<table frame=all><title>struct video_channel flags</title> <table frame="all"><title>struct video_channel flags</title>
<tgroup cols=2 align=left> <tgroup cols="2" align="left">
<tbody> <tbody>
<row> <row>
<entry>VIDEO_VC_TUNER</><entry>Channel has a tuner.</entry> <entry>VIDEO_VC_TUNER</><entry>Channel has a tuner.</entry>
...@@ -1238,8 +1238,8 @@ static int camera_ioctl(struct video_device *dev, unsigned int cmd, void *arg) ...@@ -1238,8 +1238,8 @@ static int camera_ioctl(struct video_device *dev, unsigned int cmd, void *arg)
</tbody> </tbody>
</tgroup> </tgroup>
</table> </table>
<table frame=all><title>struct video_channel types</title> <table frame="all"><title>struct video_channel types</title>
<tgroup cols=2 align=left> <tgroup cols="2" align="left">
<tbody> <tbody>
<row> <row>
<entry>VIDEO_TYPE_TV</><entry>Television input.</entry> <entry>VIDEO_TYPE_TV</><entry>Television input.</entry>
...@@ -1251,8 +1251,8 @@ static int camera_ioctl(struct video_device *dev, unsigned int cmd, void *arg) ...@@ -1251,8 +1251,8 @@ static int camera_ioctl(struct video_device *dev, unsigned int cmd, void *arg)
</tbody> </tbody>
</tgroup> </tgroup>
</table> </table>
<table frame=all><title>struct video_channel norms</title> <table frame="all"><title>struct video_channel norms</title>
<tgroup cols=2 align=left> <tgroup cols="2" align="left">
<tbody> <tbody>
<row> <row>
<entry>VIDEO_MODE_PAL</><entry>PAL encoded Television</entry> <entry>VIDEO_MODE_PAL</><entry>PAL encoded Television</entry>
...@@ -1337,8 +1337,8 @@ static int camera_ioctl(struct video_device *dev, unsigned int cmd, void *arg) ...@@ -1337,8 +1337,8 @@ static int camera_ioctl(struct video_device *dev, unsigned int cmd, void *arg)
for every other pixel in the image. The other common formats the interface for every other pixel in the image. The other common formats the interface
defines are defines are
</para> </para>
<table frame=all><title>Framebuffer Encodings</title> <table frame="all"><title>Framebuffer Encodings</title>
<tgroup cols=2 align=left> <tgroup cols="2" align="left">
<tbody> <tbody>
<row> <row>
<entry>GREY</><entry>Linear greyscale. This is for simple cameras and the <entry>GREY</><entry>Linear greyscale. This is for simple cameras and the
...@@ -1475,8 +1475,8 @@ static struct video_buffer capture_fb; ...@@ -1475,8 +1475,8 @@ static struct video_buffer capture_fb;
display. The video_window structure is used to describe the way the image display. The video_window structure is used to describe the way the image
should be displayed. should be displayed.
</para> </para>
<table frame=all><title>struct video_window fields</title> <table frame="all"><title>struct video_window fields</title>
<tgroup cols=2 align=left> <tgroup cols="2" align="left">
<tbody> <tbody>
<row> <row>
<entry>width</><entry>The width in pixels of the desired image. The card <entry>width</><entry>The width in pixels of the desired image. The card
...@@ -1512,8 +1512,8 @@ static struct video_buffer capture_fb; ...@@ -1512,8 +1512,8 @@ static struct video_buffer capture_fb;
<para> <para>
Each clip is a struct video_clip which has the following fields Each clip is a struct video_clip which has the following fields
</para> </para>
<table frame=all><title>video_clip fields</title> <table frame="all"><title>video_clip fields</title>
<tgroup cols=2 align=left> <tgroup cols="2" align="left">
<tbody> <tbody>
<row> <row>
<entry>x, y</><entry>Co-ordinates relative to the display</> <entry>x, y</><entry>Co-ordinates relative to the display</>
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment