1<html><head><meta http-equiv="Content-Type" content="text/html; charset=ANSI_X3.4-1968"><title>Glossary</title><meta name="generator" content="DocBook XSL Stylesheets V1.78.1"><link rel="home" href="index.html" title="Unreliable Guide To Locking"><link rel="up" href="index.html" title="Unreliable Guide To Locking"><link rel="prev" href="thanks.html" title="Chapter&#160;14.&#160;Thanks"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Glossary</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="thanks.html">Prev</a>&#160;</td><th width="60%" align="center">&#160;</th><td width="20%" align="right">&#160;</td></tr></table><hr></div><div class="glossary"><div class="titlepage"><div><div><h1 class="title"><a name="glossary"></a>Glossary</h1></div></div></div><dl><dt><a name="gloss-preemption"></a><span class="glossterm">preemption</span></dt><dd class="glossdef"><p>
2        Prior to 2.5, or when <span class="symbol">CONFIG_PREEMPT</span> is
3        unset, processes in user context inside the kernel would not
4        preempt each other (ie. you had that CPU until you gave it up,
5        except for interrupts).  With the addition of
6        <span class="symbol">CONFIG_PREEMPT</span> in 2.5.4, this changed: when
7        in user context, higher priority tasks can "cut in": spinlocks
8        were changed to disable preemption, even on UP.
9     </p></dd><dt><a name="gloss-bh"></a><span class="glossterm">bh</span></dt><dd class="glossdef"><p>
10        Bottom Half: for historical reasons, functions with
11        '_bh' in them often now refer to any software interrupt, e.g.
12        <code class="function">spin_lock_bh()</code> blocks any software interrupt 
13        on the current CPU.  Bottom halves are deprecated, and will 
14        eventually be replaced by tasklets.  Only one bottom half will be 
15        running at any time.
16     </p></dd><dt><a name="gloss-hwinterrupt"></a><span class="glossterm">Hardware Interrupt / Hardware IRQ</span></dt><dd class="glossdef"><p>
17       Hardware interrupt request.  <code class="function">in_irq()</code> returns 
18       <span class="returnvalue">true</span> in a hardware interrupt handler.
19     </p></dd><dt><a name="gloss-interruptcontext"></a><span class="glossterm">Interrupt Context</span></dt><dd class="glossdef"><p>
20       Not user context: processing a hardware irq or software irq.
21       Indicated by the <code class="function">in_interrupt()</code> macro 
22       returning <span class="returnvalue">true</span>.
23     </p></dd><dt><a name="gloss-smp"></a><span class="glossterm"><acronym class="acronym">SMP</acronym></span></dt><dd class="glossdef"><p>
24       Symmetric Multi-Processor: kernels compiled for multiple-CPU
25       machines.  (CONFIG_SMP=y).
26     </p></dd><dt><a name="gloss-softirq"></a><span class="glossterm">Software Interrupt / softirq</span></dt><dd class="glossdef"><p>
27       Software interrupt handler.  <code class="function">in_irq()</code> returns
28       <span class="returnvalue">false</span>; <code class="function">in_softirq()</code>
29       returns <span class="returnvalue">true</span>.  Tasklets and softirqs
30	both fall into the category of 'software interrupts'.
31     </p><p>
32       Strictly speaking a softirq is one of up to 32 enumerated software
33       interrupts which can run on multiple CPUs at once.
34       Sometimes used to refer to tasklets as
35       well (ie. all software interrupts).
36     </p></dd><dt><a name="gloss-tasklet"></a><span class="glossterm">tasklet</span></dt><dd class="glossdef"><p>
37       A dynamically-registrable software interrupt,
38       which is guaranteed to only run on one CPU at a time.
39     </p></dd><dt><a name="gloss-timers"></a><span class="glossterm">timer</span></dt><dd class="glossdef"><p>
40       A dynamically-registrable software interrupt, which is run at
41       (or close to) a given time.  When running, it is just like a
42       tasklet (in fact, they are called from the TIMER_SOFTIRQ).
43     </p></dd><dt><a name="gloss-up"></a><span class="glossterm"><acronym class="acronym">UP</acronym></span></dt><dd class="glossdef"><p>
44       Uni-Processor: Non-SMP.  (CONFIG_SMP=n).
45     </p></dd><dt><a name="gloss-usercontext"></a><span class="glossterm">User Context</span></dt><dd class="glossdef"><p>
46       The kernel executing on behalf of a particular process (ie. a
47       system call or trap) or kernel thread.  You can tell which
48       process with the <span class="symbol">current</span> macro.)  Not to
49       be confused with userspace.  Can be interrupted by software or
50       hardware interrupts.
51     </p></dd><dt><a name="gloss-userspace"></a><span class="glossterm">Userspace</span></dt><dd class="glossdef"><p>
52       A process executing its own code outside the kernel.
53     </p></dd></dl></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="thanks.html">Prev</a>&#160;</td><td width="20%" align="center">&#160;</td><td width="40%" align="right">&#160;</td></tr><tr><td width="40%" align="left" valign="top">Chapter&#160;14.&#160;Thanks&#160;</td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top">&#160;</td></tr></table></div></body></html>
54