diff options
Diffstat (limited to 'Documentation/DocBook')
-rw-r--r-- | Documentation/DocBook/gadget.tmpl | 2 | ||||
-rw-r--r-- | Documentation/DocBook/kernel-locking.tmpl | 123 | ||||
-rw-r--r-- | Documentation/DocBook/usb.tmpl | 28 |
3 files changed, 93 insertions, 60 deletions
diff --git a/Documentation/DocBook/gadget.tmpl b/Documentation/DocBook/gadget.tmpl index e7fc96433408..6996d977bf8f 100644 --- a/Documentation/DocBook/gadget.tmpl +++ b/Documentation/DocBook/gadget.tmpl | |||
@@ -52,7 +52,7 @@ | |||
52 | 52 | ||
53 | <toc></toc> | 53 | <toc></toc> |
54 | 54 | ||
55 | <chapter><title>Introduction</title> | 55 | <chapter id="intro"><title>Introduction</title> |
56 | 56 | ||
57 | <para>This document presents a Linux-USB "Gadget" | 57 | <para>This document presents a Linux-USB "Gadget" |
58 | kernel mode | 58 | kernel mode |
diff --git a/Documentation/DocBook/kernel-locking.tmpl b/Documentation/DocBook/kernel-locking.tmpl index 644c3884fab9..0a441f73261a 100644 --- a/Documentation/DocBook/kernel-locking.tmpl +++ b/Documentation/DocBook/kernel-locking.tmpl | |||
@@ -551,10 +551,12 @@ | |||
551 | <function>spin_lock_irqsave()</function>, which is a superset | 551 | <function>spin_lock_irqsave()</function>, which is a superset |
552 | of all other spinlock primitives. | 552 | of all other spinlock primitives. |
553 | </para> | 553 | </para> |
554 | |||
554 | <table> | 555 | <table> |
555 | <title>Table of Locking Requirements</title> | 556 | <title>Table of Locking Requirements</title> |
556 | <tgroup cols="11"> | 557 | <tgroup cols="11"> |
557 | <tbody> | 558 | <tbody> |
559 | |||
558 | <row> | 560 | <row> |
559 | <entry></entry> | 561 | <entry></entry> |
560 | <entry>IRQ Handler A</entry> | 562 | <entry>IRQ Handler A</entry> |
@@ -576,97 +578,128 @@ | |||
576 | 578 | ||
577 | <row> | 579 | <row> |
578 | <entry>IRQ Handler B</entry> | 580 | <entry>IRQ Handler B</entry> |
579 | <entry>spin_lock_irqsave</entry> | 581 | <entry>SLIS</entry> |
580 | <entry>None</entry> | 582 | <entry>None</entry> |
581 | </row> | 583 | </row> |
582 | 584 | ||
583 | <row> | 585 | <row> |
584 | <entry>Softirq A</entry> | 586 | <entry>Softirq A</entry> |
585 | <entry>spin_lock_irq</entry> | 587 | <entry>SLI</entry> |
586 | <entry>spin_lock_irq</entry> | 588 | <entry>SLI</entry> |
587 | <entry>spin_lock</entry> | 589 | <entry>SL</entry> |
588 | </row> | 590 | </row> |
589 | 591 | ||
590 | <row> | 592 | <row> |
591 | <entry>Softirq B</entry> | 593 | <entry>Softirq B</entry> |
592 | <entry>spin_lock_irq</entry> | 594 | <entry>SLI</entry> |
593 | <entry>spin_lock_irq</entry> | 595 | <entry>SLI</entry> |
594 | <entry>spin_lock</entry> | 596 | <entry>SL</entry> |
595 | <entry>spin_lock</entry> | 597 | <entry>SL</entry> |
596 | </row> | 598 | </row> |
597 | 599 | ||
598 | <row> | 600 | <row> |
599 | <entry>Tasklet A</entry> | 601 | <entry>Tasklet A</entry> |
600 | <entry>spin_lock_irq</entry> | 602 | <entry>SLI</entry> |
601 | <entry>spin_lock_irq</entry> | 603 | <entry>SLI</entry> |
602 | <entry>spin_lock</entry> | 604 | <entry>SL</entry> |
603 | <entry>spin_lock</entry> | 605 | <entry>SL</entry> |
604 | <entry>None</entry> | 606 | <entry>None</entry> |
605 | </row> | 607 | </row> |
606 | 608 | ||
607 | <row> | 609 | <row> |
608 | <entry>Tasklet B</entry> | 610 | <entry>Tasklet B</entry> |
609 | <entry>spin_lock_irq</entry> | 611 | <entry>SLI</entry> |
610 | <entry>spin_lock_irq</entry> | 612 | <entry>SLI</entry> |
611 | <entry>spin_lock</entry> | 613 | <entry>SL</entry> |
612 | <entry>spin_lock</entry> | 614 | <entry>SL</entry> |
613 | <entry>spin_lock</entry> | 615 | <entry>SL</entry> |
614 | <entry>None</entry> | 616 | <entry>None</entry> |
615 | </row> | 617 | </row> |
616 | 618 | ||
617 | <row> | 619 | <row> |
618 | <entry>Timer A</entry> | 620 | <entry>Timer A</entry> |
619 | <entry>spin_lock_irq</entry> | 621 | <entry>SLI</entry> |
620 | <entry>spin_lock_irq</entry> | 622 | <entry>SLI</entry> |
621 | <entry>spin_lock</entry> | 623 | <entry>SL</entry> |
622 | <entry>spin_lock</entry> | 624 | <entry>SL</entry> |
623 | <entry>spin_lock</entry> | 625 | <entry>SL</entry> |
624 | <entry>spin_lock</entry> | 626 | <entry>SL</entry> |
625 | <entry>None</entry> | 627 | <entry>None</entry> |
626 | </row> | 628 | </row> |
627 | 629 | ||
628 | <row> | 630 | <row> |
629 | <entry>Timer B</entry> | 631 | <entry>Timer B</entry> |
630 | <entry>spin_lock_irq</entry> | 632 | <entry>SLI</entry> |
631 | <entry>spin_lock_irq</entry> | 633 | <entry>SLI</entry> |
632 | <entry>spin_lock</entry> | 634 | <entry>SL</entry> |
633 | <entry>spin_lock</entry> | 635 | <entry>SL</entry> |
634 | <entry>spin_lock</entry> | 636 | <entry>SL</entry> |
635 | <entry>spin_lock</entry> | 637 | <entry>SL</entry> |
636 | <entry>spin_lock</entry> | 638 | <entry>SL</entry> |
637 | <entry>None</entry> | 639 | <entry>None</entry> |
638 | </row> | 640 | </row> |
639 | 641 | ||
640 | <row> | 642 | <row> |
641 | <entry>User Context A</entry> | 643 | <entry>User Context A</entry> |
642 | <entry>spin_lock_irq</entry> | 644 | <entry>SLI</entry> |
643 | <entry>spin_lock_irq</entry> | 645 | <entry>SLI</entry> |
644 | <entry>spin_lock_bh</entry> | 646 | <entry>SLBH</entry> |
645 | <entry>spin_lock_bh</entry> | 647 | <entry>SLBH</entry> |
646 | <entry>spin_lock_bh</entry> | 648 | <entry>SLBH</entry> |
647 | <entry>spin_lock_bh</entry> | 649 | <entry>SLBH</entry> |
648 | <entry>spin_lock_bh</entry> | 650 | <entry>SLBH</entry> |
649 | <entry>spin_lock_bh</entry> | 651 | <entry>SLBH</entry> |
650 | <entry>None</entry> | 652 | <entry>None</entry> |
651 | </row> | 653 | </row> |
652 | 654 | ||
653 | <row> | 655 | <row> |
654 | <entry>User Context B</entry> | 656 | <entry>User Context B</entry> |
657 | <entry>SLI</entry> | ||
658 | <entry>SLI</entry> | ||
659 | <entry>SLBH</entry> | ||
660 | <entry>SLBH</entry> | ||
661 | <entry>SLBH</entry> | ||
662 | <entry>SLBH</entry> | ||
663 | <entry>SLBH</entry> | ||
664 | <entry>SLBH</entry> | ||
665 | <entry>DI</entry> | ||
666 | <entry>None</entry> | ||
667 | </row> | ||
668 | |||
669 | </tbody> | ||
670 | </tgroup> | ||
671 | </table> | ||
672 | |||
673 | <table> | ||
674 | <title>Legend for Locking Requirements Table</title> | ||
675 | <tgroup cols="2"> | ||
676 | <tbody> | ||
677 | |||
678 | <row> | ||
679 | <entry>SLIS</entry> | ||
680 | <entry>spin_lock_irqsave</entry> | ||
681 | </row> | ||
682 | <row> | ||
683 | <entry>SLI</entry> | ||
655 | <entry>spin_lock_irq</entry> | 684 | <entry>spin_lock_irq</entry> |
656 | <entry>spin_lock_irq</entry> | 685 | </row> |
657 | <entry>spin_lock_bh</entry> | 686 | <row> |
658 | <entry>spin_lock_bh</entry> | 687 | <entry>SL</entry> |
659 | <entry>spin_lock_bh</entry> | 688 | <entry>spin_lock</entry> |
660 | <entry>spin_lock_bh</entry> | 689 | </row> |
661 | <entry>spin_lock_bh</entry> | 690 | <row> |
691 | <entry>SLBH</entry> | ||
662 | <entry>spin_lock_bh</entry> | 692 | <entry>spin_lock_bh</entry> |
693 | </row> | ||
694 | <row> | ||
695 | <entry>DI</entry> | ||
663 | <entry>down_interruptible</entry> | 696 | <entry>down_interruptible</entry> |
664 | <entry>None</entry> | ||
665 | </row> | 697 | </row> |
666 | 698 | ||
667 | </tbody> | 699 | </tbody> |
668 | </tgroup> | 700 | </tgroup> |
669 | </table> | 701 | </table> |
702 | |||
670 | </sect1> | 703 | </sect1> |
671 | </chapter> | 704 | </chapter> |
672 | 705 | ||
diff --git a/Documentation/DocBook/usb.tmpl b/Documentation/DocBook/usb.tmpl index a2ebd651b05a..af293606fbe3 100644 --- a/Documentation/DocBook/usb.tmpl +++ b/Documentation/DocBook/usb.tmpl | |||
@@ -185,7 +185,7 @@ | |||
185 | 185 | ||
186 | </chapter> | 186 | </chapter> |
187 | 187 | ||
188 | <chapter><title>USB-Standard Types</title> | 188 | <chapter id="types"><title>USB-Standard Types</title> |
189 | 189 | ||
190 | <para>In <filename><linux/usb/ch9.h></filename> you will find | 190 | <para>In <filename><linux/usb/ch9.h></filename> you will find |
191 | the USB data types defined in chapter 9 of the USB specification. | 191 | the USB data types defined in chapter 9 of the USB specification. |
@@ -197,7 +197,7 @@ | |||
197 | 197 | ||
198 | </chapter> | 198 | </chapter> |
199 | 199 | ||
200 | <chapter><title>Host-Side Data Types and Macros</title> | 200 | <chapter id="hostside"><title>Host-Side Data Types and Macros</title> |
201 | 201 | ||
202 | <para>The host side API exposes several layers to drivers, some of | 202 | <para>The host side API exposes several layers to drivers, some of |
203 | which are more necessary than others. | 203 | which are more necessary than others. |
@@ -211,7 +211,7 @@ | |||
211 | 211 | ||
212 | </chapter> | 212 | </chapter> |
213 | 213 | ||
214 | <chapter><title>USB Core APIs</title> | 214 | <chapter id="usbcore"><title>USB Core APIs</title> |
215 | 215 | ||
216 | <para>There are two basic I/O models in the USB API. | 216 | <para>There are two basic I/O models in the USB API. |
217 | The most elemental one is asynchronous: drivers submit requests | 217 | The most elemental one is asynchronous: drivers submit requests |
@@ -248,7 +248,7 @@ | |||
248 | !Edrivers/usb/core/hub.c | 248 | !Edrivers/usb/core/hub.c |
249 | </chapter> | 249 | </chapter> |
250 | 250 | ||
251 | <chapter><title>Host Controller APIs</title> | 251 | <chapter id="hcd"><title>Host Controller APIs</title> |
252 | 252 | ||
253 | <para>These APIs are only for use by host controller drivers, | 253 | <para>These APIs are only for use by host controller drivers, |
254 | most of which implement standard register interfaces such as | 254 | most of which implement standard register interfaces such as |
@@ -285,7 +285,7 @@ | |||
285 | !Idrivers/usb/core/buffer.c | 285 | !Idrivers/usb/core/buffer.c |
286 | </chapter> | 286 | </chapter> |
287 | 287 | ||
288 | <chapter> | 288 | <chapter id="usbfs"> |
289 | <title>The USB Filesystem (usbfs)</title> | 289 | <title>The USB Filesystem (usbfs)</title> |
290 | 290 | ||
291 | <para>This chapter presents the Linux <emphasis>usbfs</emphasis>. | 291 | <para>This chapter presents the Linux <emphasis>usbfs</emphasis>. |
@@ -317,7 +317,7 @@ | |||
317 | not it has a kernel driver. | 317 | not it has a kernel driver. |
318 | </para> | 318 | </para> |
319 | 319 | ||
320 | <sect1> | 320 | <sect1 id="usbfs-files"> |
321 | <title>What files are in "usbfs"?</title> | 321 | <title>What files are in "usbfs"?</title> |
322 | 322 | ||
323 | <para>Conventionally mounted at | 323 | <para>Conventionally mounted at |
@@ -356,7 +356,7 @@ | |||
356 | 356 | ||
357 | </sect1> | 357 | </sect1> |
358 | 358 | ||
359 | <sect1> | 359 | <sect1 id="usbfs-fstab"> |
360 | <title>Mounting and Access Control</title> | 360 | <title>Mounting and Access Control</title> |
361 | 361 | ||
362 | <para>There are a number of mount options for usbfs, which will | 362 | <para>There are a number of mount options for usbfs, which will |
@@ -439,7 +439,7 @@ | |||
439 | 439 | ||
440 | </sect1> | 440 | </sect1> |
441 | 441 | ||
442 | <sect1> | 442 | <sect1 id="usbfs-devices"> |
443 | <title>/proc/bus/usb/devices</title> | 443 | <title>/proc/bus/usb/devices</title> |
444 | 444 | ||
445 | <para>This file is handy for status viewing tools in user | 445 | <para>This file is handy for status viewing tools in user |
@@ -473,7 +473,7 @@ for (;;) { | |||
473 | </para> | 473 | </para> |
474 | </sect1> | 474 | </sect1> |
475 | 475 | ||
476 | <sect1> | 476 | <sect1 id="usbfs-bbbddd"> |
477 | <title>/proc/bus/usb/BBB/DDD</title> | 477 | <title>/proc/bus/usb/BBB/DDD</title> |
478 | 478 | ||
479 | <para>Use these files in one of these basic ways: | 479 | <para>Use these files in one of these basic ways: |
@@ -510,7 +510,7 @@ for (;;) { | |||
510 | </sect1> | 510 | </sect1> |
511 | 511 | ||
512 | 512 | ||
513 | <sect1> | 513 | <sect1 id="usbfs-lifecycle"> |
514 | <title>Life Cycle of User Mode Drivers</title> | 514 | <title>Life Cycle of User Mode Drivers</title> |
515 | 515 | ||
516 | <para>Such a driver first needs to find a device file | 516 | <para>Such a driver first needs to find a device file |
@@ -565,7 +565,7 @@ for (;;) { | |||
565 | 565 | ||
566 | </sect1> | 566 | </sect1> |
567 | 567 | ||
568 | <sect1><title>The ioctl() Requests</title> | 568 | <sect1 id="usbfs-ioctl"><title>The ioctl() Requests</title> |
569 | 569 | ||
570 | <para>To use these ioctls, you need to include the following | 570 | <para>To use these ioctls, you need to include the following |
571 | headers in your userspace program: | 571 | headers in your userspace program: |
@@ -604,7 +604,7 @@ for (;;) { | |||
604 | </para> | 604 | </para> |
605 | 605 | ||
606 | 606 | ||
607 | <sect2> | 607 | <sect2 id="usbfs-mgmt"> |
608 | <title>Management/Status Requests</title> | 608 | <title>Management/Status Requests</title> |
609 | 609 | ||
610 | <para>A number of usbfs requests don't deal very directly | 610 | <para>A number of usbfs requests don't deal very directly |
@@ -736,7 +736,7 @@ usbdev_ioctl (int fd, int ifno, unsigned request, void *param) | |||
736 | 736 | ||
737 | </sect2> | 737 | </sect2> |
738 | 738 | ||
739 | <sect2> | 739 | <sect2 id="usbfs-sync"> |
740 | <title>Synchronous I/O Support</title> | 740 | <title>Synchronous I/O Support</title> |
741 | 741 | ||
742 | <para>Synchronous requests involve the kernel blocking | 742 | <para>Synchronous requests involve the kernel blocking |
@@ -865,7 +865,7 @@ usbdev_ioctl (int fd, int ifno, unsigned request, void *param) | |||
865 | </variablelist> | 865 | </variablelist> |
866 | </sect2> | 866 | </sect2> |
867 | 867 | ||
868 | <sect2> | 868 | <sect2 id="usbfs-async"> |
869 | <title>Asynchronous I/O Support</title> | 869 | <title>Asynchronous I/O Support</title> |
870 | 870 | ||
871 | <para>As mentioned above, there are situations where it may be | 871 | <para>As mentioned above, there are situations where it may be |