Merge git://git.kernel.org/pub/scm/linux/kernel/git/bunk/trivial
* git://git.kernel.org/pub/scm/linux/kernel/git/bunk/trivial: (25 commits) Documentation/kernel-docs.txt update. arch/cris: typo in KERN_INFO Storage class should be before const qualifier kernel/printk.c: comment fix update I/O sched Kconfig help texts - CFQ is now default, not AS. Remove duplicate listing of Cris arch from README kbuild: more doc. cleanups doc: make doc. for maxcpus= more visible drivers/net/eexpress.c: remove duplicate comment add a help text for BLK_DEV_GENERIC correct a dead URL in the IP_MULTICAST help text fix the BAYCOM_SER_HDX help text fix SCSI_SCAN_ASYNC help text trivial documentation patch for platform.txt Fix typos concerning hierarchy Fix comment typo "spin_lock_irqrestore". Fix misspellings of "agressive". drivers/scsi/a100u2w.c: trivial typo patch Correct trivial typo in log2.h. Remove useless FIND_FIRST_BIT() macro from cardbus.c. ...
This commit is contained in:
commit
874ff01bd9
|
@ -66,7 +66,7 @@ runtime memory footprint:
|
||||||
|
|
||||||
Device Enumeration
|
Device Enumeration
|
||||||
~~~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~~~
|
||||||
As a rule, platform specific (and often board-specific) setup code wil
|
As a rule, platform specific (and often board-specific) setup code will
|
||||||
register platform devices:
|
register platform devices:
|
||||||
|
|
||||||
int platform_device_register(struct platform_device *pdev);
|
int platform_device_register(struct platform_device *pdev);
|
||||||
|
@ -106,7 +106,7 @@ It's built from two components:
|
||||||
* platform_device.id ... the device instance number, or else "-1"
|
* platform_device.id ... the device instance number, or else "-1"
|
||||||
to indicate there's only one.
|
to indicate there's only one.
|
||||||
|
|
||||||
These are catenated, so name/id "serial"/0 indicates bus_id "serial.0", and
|
These are concatenated, so name/id "serial"/0 indicates bus_id "serial.0", and
|
||||||
"serial/3" indicates bus_id "serial.3"; both would use the platform_driver
|
"serial/3" indicates bus_id "serial.3"; both would use the platform_driver
|
||||||
named "serial". While "my_rtc"/-1 would be bus_id "my_rtc" (no instance id)
|
named "serial". While "my_rtc"/-1 would be bus_id "my_rtc" (no instance id)
|
||||||
and use the platform_driver called "my_rtc".
|
and use the platform_driver called "my_rtc".
|
||||||
|
|
|
@ -65,7 +65,7 @@ Accessing legacy resources through sysfs
|
||||||
----------------------------------------
|
----------------------------------------
|
||||||
|
|
||||||
Legacy I/O port and ISA memory resources are also provided in sysfs if the
|
Legacy I/O port and ISA memory resources are also provided in sysfs if the
|
||||||
underlying platform supports them. They're located in the PCI class heirarchy,
|
underlying platform supports them. They're located in the PCI class hierarchy,
|
||||||
e.g.
|
e.g.
|
||||||
|
|
||||||
/sys/class/pci_bus/0000:17/
|
/sys/class/pci_bus/0000:17/
|
||||||
|
|
|
@ -34,7 +34,7 @@ This document describes the Linux kernel Makefiles.
|
||||||
--- 6.1 Set variables to tweak the build to the architecture
|
--- 6.1 Set variables to tweak the build to the architecture
|
||||||
--- 6.2 Add prerequisites to archprepare:
|
--- 6.2 Add prerequisites to archprepare:
|
||||||
--- 6.3 List directories to visit when descending
|
--- 6.3 List directories to visit when descending
|
||||||
--- 6.4 Architecture specific boot images
|
--- 6.4 Architecture-specific boot images
|
||||||
--- 6.5 Building non-kbuild targets
|
--- 6.5 Building non-kbuild targets
|
||||||
--- 6.6 Commands useful for building a boot image
|
--- 6.6 Commands useful for building a boot image
|
||||||
--- 6.7 Custom kbuild commands
|
--- 6.7 Custom kbuild commands
|
||||||
|
@ -124,7 +124,7 @@ more details, with real examples.
|
||||||
Example:
|
Example:
|
||||||
obj-y += foo.o
|
obj-y += foo.o
|
||||||
|
|
||||||
This tell kbuild that there is one object in that directory, named
|
This tells kbuild that there is one object in that directory, named
|
||||||
foo.o. foo.o will be built from foo.c or foo.S.
|
foo.o. foo.o will be built from foo.c or foo.S.
|
||||||
|
|
||||||
If foo.o shall be built as a module, the variable obj-m is used.
|
If foo.o shall be built as a module, the variable obj-m is used.
|
||||||
|
@ -353,7 +353,7 @@ more details, with real examples.
|
||||||
Special rules are used when the kbuild infrastructure does
|
Special rules are used when the kbuild infrastructure does
|
||||||
not provide the required support. A typical example is
|
not provide the required support. A typical example is
|
||||||
header files generated during the build process.
|
header files generated during the build process.
|
||||||
Another example are the architecture specific Makefiles which
|
Another example are the architecture-specific Makefiles which
|
||||||
need special rules to prepare boot images etc.
|
need special rules to prepare boot images etc.
|
||||||
|
|
||||||
Special rules are written as normal Make rules.
|
Special rules are written as normal Make rules.
|
||||||
|
@ -416,7 +416,7 @@ more details, with real examples.
|
||||||
#arch/i386/kernel/Makefile
|
#arch/i386/kernel/Makefile
|
||||||
vsyscall-flags += $(call ld-option, -Wl$(comma)--hash-style=sysv)
|
vsyscall-flags += $(call ld-option, -Wl$(comma)--hash-style=sysv)
|
||||||
|
|
||||||
In the above example vsyscall-flags will be assigned the option
|
In the above example, vsyscall-flags will be assigned the option
|
||||||
-Wl$(comma)--hash-style=sysv if it is supported by $(CC).
|
-Wl$(comma)--hash-style=sysv if it is supported by $(CC).
|
||||||
The second argument is optional, and if supplied will be used
|
The second argument is optional, and if supplied will be used
|
||||||
if first argument is not supported.
|
if first argument is not supported.
|
||||||
|
@ -434,7 +434,7 @@ more details, with real examples.
|
||||||
#arch/i386/Makefile
|
#arch/i386/Makefile
|
||||||
cflags-y += $(call cc-option,-march=pentium-mmx,-march=i586)
|
cflags-y += $(call cc-option,-march=pentium-mmx,-march=i586)
|
||||||
|
|
||||||
In the above example cflags-y will be assigned the option
|
In the above example, cflags-y will be assigned the option
|
||||||
-march=pentium-mmx if supported by $(CC), otherwise -march=i586.
|
-march=pentium-mmx if supported by $(CC), otherwise -march=i586.
|
||||||
The second argument to cc-option is optional, and if omitted,
|
The second argument to cc-option is optional, and if omitted,
|
||||||
cflags-y will be assigned no value if first option is not supported.
|
cflags-y will be assigned no value if first option is not supported.
|
||||||
|
@ -750,10 +750,10 @@ When kbuild executes, the following steps are followed (roughly):
|
||||||
located at the root of the obj tree.
|
located at the root of the obj tree.
|
||||||
The very first objects linked are listed in head-y, assigned by
|
The very first objects linked are listed in head-y, assigned by
|
||||||
arch/$(ARCH)/Makefile.
|
arch/$(ARCH)/Makefile.
|
||||||
7) Finally, the architecture specific part does any required post processing
|
7) Finally, the architecture-specific part does any required post processing
|
||||||
and builds the final bootimage.
|
and builds the final bootimage.
|
||||||
- This includes building boot records
|
- This includes building boot records
|
||||||
- Preparing initrd images and thelike
|
- Preparing initrd images and the like
|
||||||
|
|
||||||
|
|
||||||
--- 6.1 Set variables to tweak the build to the architecture
|
--- 6.1 Set variables to tweak the build to the architecture
|
||||||
|
@ -880,7 +880,7 @@ When kbuild executes, the following steps are followed (roughly):
|
||||||
|
|
||||||
$(head-y) lists objects to be linked first in vmlinux.
|
$(head-y) lists objects to be linked first in vmlinux.
|
||||||
$(libs-y) lists directories where a lib.a archive can be located.
|
$(libs-y) lists directories where a lib.a archive can be located.
|
||||||
The rest lists directories where a built-in.o object file can be
|
The rest list directories where a built-in.o object file can be
|
||||||
located.
|
located.
|
||||||
|
|
||||||
$(init-y) objects will be located after $(head-y).
|
$(init-y) objects will be located after $(head-y).
|
||||||
|
@ -888,7 +888,7 @@ When kbuild executes, the following steps are followed (roughly):
|
||||||
$(core-y), $(libs-y), $(drivers-y) and $(net-y).
|
$(core-y), $(libs-y), $(drivers-y) and $(net-y).
|
||||||
|
|
||||||
The top level Makefile defines values for all generic directories,
|
The top level Makefile defines values for all generic directories,
|
||||||
and arch/$(ARCH)/Makefile only adds architecture specific directories.
|
and arch/$(ARCH)/Makefile only adds architecture-specific directories.
|
||||||
|
|
||||||
Example:
|
Example:
|
||||||
#arch/sparc64/Makefile
|
#arch/sparc64/Makefile
|
||||||
|
@ -897,7 +897,7 @@ When kbuild executes, the following steps are followed (roughly):
|
||||||
drivers-$(CONFIG_OPROFILE) += arch/sparc64/oprofile/
|
drivers-$(CONFIG_OPROFILE) += arch/sparc64/oprofile/
|
||||||
|
|
||||||
|
|
||||||
--- 6.4 Architecture specific boot images
|
--- 6.4 Architecture-specific boot images
|
||||||
|
|
||||||
An arch Makefile specifies goals that take the vmlinux file, compress
|
An arch Makefile specifies goals that take the vmlinux file, compress
|
||||||
it, wrap it in bootstrapping code, and copy the resulting files
|
it, wrap it in bootstrapping code, and copy the resulting files
|
||||||
|
@ -924,7 +924,7 @@ When kbuild executes, the following steps are followed (roughly):
|
||||||
"$(Q)$(MAKE) $(build)=<dir>" is the recommended way to invoke
|
"$(Q)$(MAKE) $(build)=<dir>" is the recommended way to invoke
|
||||||
make in a subdirectory.
|
make in a subdirectory.
|
||||||
|
|
||||||
There are no rules for naming architecture specific targets,
|
There are no rules for naming architecture-specific targets,
|
||||||
but executing "make help" will list all relevant targets.
|
but executing "make help" will list all relevant targets.
|
||||||
To support this, $(archhelp) must be defined.
|
To support this, $(archhelp) must be defined.
|
||||||
|
|
||||||
|
@ -982,7 +982,7 @@ When kbuild executes, the following steps are followed (roughly):
|
||||||
$(call if_changed,ld/objcopy/gzip)
|
$(call if_changed,ld/objcopy/gzip)
|
||||||
|
|
||||||
When the rule is evaluated, it is checked to see if any files
|
When the rule is evaluated, it is checked to see if any files
|
||||||
needs an update, or the command line has changed since the last
|
need an update, or the command line has changed since the last
|
||||||
invocation. The latter will force a rebuild if any options
|
invocation. The latter will force a rebuild if any options
|
||||||
to the executable have changed.
|
to the executable have changed.
|
||||||
Any target that utilises if_changed must be listed in $(targets),
|
Any target that utilises if_changed must be listed in $(targets),
|
||||||
|
@ -1089,7 +1089,7 @@ When kbuild executes, the following steps are followed (roughly):
|
||||||
assignment.
|
assignment.
|
||||||
|
|
||||||
The kbuild infrastructure for *lds file are used in several
|
The kbuild infrastructure for *lds file are used in several
|
||||||
architecture specific files.
|
architecture-specific files.
|
||||||
|
|
||||||
|
|
||||||
=== 7 Kbuild Variables
|
=== 7 Kbuild Variables
|
||||||
|
@ -1133,7 +1133,7 @@ The top Makefile exports the following variables:
|
||||||
|
|
||||||
This variable defines a place for the arch Makefiles to install
|
This variable defines a place for the arch Makefiles to install
|
||||||
the resident kernel image and System.map file.
|
the resident kernel image and System.map file.
|
||||||
Use this for architecture specific install targets.
|
Use this for architecture-specific install targets.
|
||||||
|
|
||||||
INSTALL_MOD_PATH, MODLIB
|
INSTALL_MOD_PATH, MODLIB
|
||||||
|
|
||||||
|
|
|
@ -1,10 +1,10 @@
|
||||||
|
|
||||||
Index of Documentation for People Interested in Writing and/or
|
Index of Documentation for People Interested in Writing and/or
|
||||||
|
|
||||||
Understanding the Linux Kernel.
|
Understanding the Linux Kernel.
|
||||||
|
|
||||||
Juan-Mariano de Goyeneche <jmseyas@dit.upm.es>
|
Juan-Mariano de Goyeneche <jmseyas@dit.upm.es>
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* The latest version of this document may be found at:
|
* The latest version of this document may be found at:
|
||||||
* http://www.dit.upm.es/~jmseyas/linux/kernel/hackers-docs.html
|
* http://www.dit.upm.es/~jmseyas/linux/kernel/hackers-docs.html
|
||||||
|
@ -61,18 +61,18 @@
|
||||||
13.-The Linux Kernel Sources, A.-Linux Data Structures, B.-The
|
13.-The Linux Kernel Sources, A.-Linux Data Structures, B.-The
|
||||||
Alpha AXP Processor, C.-Useful Web and FTP Sites, D.-The GNU
|
Alpha AXP Processor, C.-Useful Web and FTP Sites, D.-The GNU
|
||||||
General Public License, Glossary". In short: a must have.
|
General Public License, Glossary". In short: a must have.
|
||||||
|
|
||||||
* Title: "The Linux Kernel Hackers' Guide"
|
* Title: "Linux Device Drivers, 2nd Edition"
|
||||||
Author: Michael K.Johnson and others.
|
Author: Alessandro Rubini and Jonathan Corbet.
|
||||||
URL: http://www.tldp.org/LDP/khg/HyperNews/get/khg.html
|
URL: http://www.xml.com/ldd/chapter/book/index.html
|
||||||
Keywords: everything!
|
Keywords: device drivers, modules, debugging, memory, hardware,
|
||||||
Description: No more Postscript book-like version. Only HTML now.
|
interrupt handling, char drivers, block drivers, kmod, mmap, DMA,
|
||||||
Many people have contributed. The interface is similar to web
|
buses.
|
||||||
available mailing lists archives. You can find some articles and
|
Description: O'Reilly's popular book, now also on-line under the
|
||||||
then some mails asking questions about them and/or complementing
|
GNU Free Documentation License.
|
||||||
previous contributions. A little bit anarchic in this aspect, but
|
Notes: You can also buy it in paper-form from O'Reilly. See below
|
||||||
with some valuable information in some cases.
|
under BOOKS (Not on-line).
|
||||||
|
|
||||||
* Title: "Conceptual Architecture of the Linux Kernel"
|
* Title: "Conceptual Architecture of the Linux Kernel"
|
||||||
Author: Ivan T. Bowman.
|
Author: Ivan T. Bowman.
|
||||||
URL: http://plg.uwaterloo.ca/~itbowman/papers/CS746G-a1.html
|
URL: http://plg.uwaterloo.ca/~itbowman/papers/CS746G-a1.html
|
||||||
|
@ -81,17 +81,17 @@
|
||||||
Description: Conceptual software arquitecture of the Linux kernel,
|
Description: Conceptual software arquitecture of the Linux kernel,
|
||||||
automatically extracted from the source code. Very detailed. Good
|
automatically extracted from the source code. Very detailed. Good
|
||||||
figures. Gives good overall kernel understanding.
|
figures. Gives good overall kernel understanding.
|
||||||
|
|
||||||
* Title: "Concrete Architecture of the Linux Kernel"
|
* Title: "Concrete Architecture of the Linux Kernel"
|
||||||
Author: Ivan T. Bowman, Saheem Siddiqi, and Meyer C. Tanuan.
|
Author: Ivan T. Bowman, Saheem Siddiqi, and Meyer C. Tanuan.
|
||||||
URL: http://plg.uwaterloo.ca/~itbowman/papers/CS746G-a2.html
|
URL: http://plg.uwaterloo.ca/~itbowman/papers/CS746G-a2.html
|
||||||
Keywords: concrete arquitecture, extracted design, reverse
|
Keywords: concrete architecture, extracted design, reverse
|
||||||
engineering, system structure, dependencies.
|
engineering, system structure, dependencies.
|
||||||
Description: Concrete arquitecture of the Linux kernel,
|
Description: Concrete architecture of the Linux kernel,
|
||||||
automatically extracted from the source code. Very detailed. Good
|
automatically extracted from the source code. Very detailed. Good
|
||||||
figures. Gives good overall kernel understanding. This papers
|
figures. Gives good overall kernel understanding. This papers
|
||||||
focus on lower details than its predecessor (files, variables...).
|
focus on lower details than its predecessor (files, variables...).
|
||||||
|
|
||||||
* Title: "Linux as a Case Study: Its Extracted Software
|
* Title: "Linux as a Case Study: Its Extracted Software
|
||||||
Architecture"
|
Architecture"
|
||||||
Author: Ivan T. Bowman, Richard C. Holt and Neil V. Brewster.
|
Author: Ivan T. Bowman, Richard C. Holt and Neil V. Brewster.
|
||||||
|
@ -101,7 +101,7 @@
|
||||||
Description: Paper appeared at ICSE'99, Los Angeles, May 16-22,
|
Description: Paper appeared at ICSE'99, Los Angeles, May 16-22,
|
||||||
1999. A mixture of the previous two documents from the same
|
1999. A mixture of the previous two documents from the same
|
||||||
author.
|
author.
|
||||||
|
|
||||||
* Title: "Overview of the Virtual File System"
|
* Title: "Overview of the Virtual File System"
|
||||||
Author: Richard Gooch.
|
Author: Richard Gooch.
|
||||||
URL: http://www.atnf.csiro.au/~rgooch/linux/vfs.txt
|
URL: http://www.atnf.csiro.au/~rgooch/linux/vfs.txt
|
||||||
|
@ -111,20 +111,20 @@
|
||||||
What is it, how it works, operations taken when opening a file or
|
What is it, how it works, operations taken when opening a file or
|
||||||
mounting a file system and description of important data
|
mounting a file system and description of important data
|
||||||
structures explaining the purpose of each of their entries.
|
structures explaining the purpose of each of their entries.
|
||||||
|
|
||||||
* Title: "The Linux RAID-1, 4, 5 Code"
|
* Title: "The Linux RAID-1, 4, 5 Code"
|
||||||
Author: Ingo Molnar, Gadi Oxman and Miguel de Icaza.
|
Author: Ingo Molnar, Gadi Oxman and Miguel de Icaza.
|
||||||
URL: http://www2.linuxjournal.com/lj-issues/issue44/2391.html
|
URL: http://www.linuxjournal.com/article.php?sid=2391
|
||||||
Keywords: RAID, MD driver.
|
Keywords: RAID, MD driver.
|
||||||
Description: Linux Journal Kernel Korner article. Here is it's
|
Description: Linux Journal Kernel Korner article. Here is it's
|
||||||
abstract: "A description of the implementation of the RAID-1,
|
abstract: "A description of the implementation of the RAID-1,
|
||||||
RAID-4 and RAID-5 personalities of the MD device driver in the
|
RAID-4 and RAID-5 personalities of the MD device driver in the
|
||||||
Linux kernel, providing users with high performance and reliable,
|
Linux kernel, providing users with high performance and reliable,
|
||||||
secondary-storage capability using software".
|
secondary-storage capability using software".
|
||||||
|
|
||||||
* Title: "Dynamic Kernels: Modularized Device Drivers"
|
* Title: "Dynamic Kernels: Modularized Device Drivers"
|
||||||
Author: Alessandro Rubini.
|
Author: Alessandro Rubini.
|
||||||
URL: http://www2.linuxjournal.com/lj-issues/issue23/1219.html
|
URL: http://www.linuxjournal.com/article.php?sid=1219
|
||||||
Keywords: device driver, module, loading/unloading modules,
|
Keywords: device driver, module, loading/unloading modules,
|
||||||
allocating resources.
|
allocating resources.
|
||||||
Description: Linux Journal Kernel Korner article. Here is it's
|
Description: Linux Journal Kernel Korner article. Here is it's
|
||||||
|
@ -134,10 +134,10 @@
|
||||||
loadable modules. This installment presents an introduction to the
|
loadable modules. This installment presents an introduction to the
|
||||||
topic, preparing the reader to understand next month's
|
topic, preparing the reader to understand next month's
|
||||||
installment".
|
installment".
|
||||||
|
|
||||||
* Title: "Dynamic Kernels: Discovery"
|
* Title: "Dynamic Kernels: Discovery"
|
||||||
Author: Alessandro Rubini.
|
Author: Alessandro Rubini.
|
||||||
URL: http://www2.linuxjournal.com/lj-issues/issue24/1220.html
|
URL: http://www.linuxjournal.com/article.php?sid=1220
|
||||||
Keywords: character driver, init_module, clean_up module,
|
Keywords: character driver, init_module, clean_up module,
|
||||||
autodetection, mayor number, minor number, file operations,
|
autodetection, mayor number, minor number, file operations,
|
||||||
open(), close().
|
open(), close().
|
||||||
|
@ -146,20 +146,20 @@
|
||||||
the actual code to create custom module implementing a character
|
the actual code to create custom module implementing a character
|
||||||
device driver. It describes the code for module initialization and
|
device driver. It describes the code for module initialization and
|
||||||
cleanup, as well as the open() and close() system calls".
|
cleanup, as well as the open() and close() system calls".
|
||||||
|
|
||||||
* Title: "The Devil's in the Details"
|
* Title: "The Devil's in the Details"
|
||||||
Author: Georg v. Zezschwitz and Alessandro Rubini.
|
Author: Georg v. Zezschwitz and Alessandro Rubini.
|
||||||
URL: http://www2.linuxjournal.com/lj-issues/issue25/1221.html
|
URL: http://www.linuxjournal.com/article.php?sid=1221
|
||||||
Keywords: read(), write(), select(), ioctl(), blocking/non
|
Keywords: read(), write(), select(), ioctl(), blocking/non
|
||||||
blocking mode, interrupt handler.
|
blocking mode, interrupt handler.
|
||||||
Description: Linux Journal Kernel Korner article. Here is it's
|
Description: Linux Journal Kernel Korner article. Here is it's
|
||||||
abstract: "This article, the third of four on writing character
|
abstract: "This article, the third of four on writing character
|
||||||
device drivers, introduces concepts of reading, writing, and using
|
device drivers, introduces concepts of reading, writing, and using
|
||||||
ioctl-calls".
|
ioctl-calls".
|
||||||
|
|
||||||
* Title: "Dissecting Interrupts and Browsing DMA"
|
* Title: "Dissecting Interrupts and Browsing DMA"
|
||||||
Author: Alessandro Rubini and Georg v. Zezschwitz.
|
Author: Alessandro Rubini and Georg v. Zezschwitz.
|
||||||
URL: http://www2.linuxjournal.com/lj-issues/issue26/1222.html
|
URL: http://www.linuxjournal.com/article.php?sid=1222
|
||||||
Keywords: interrupts, irqs, DMA, bottom halves, task queues.
|
Keywords: interrupts, irqs, DMA, bottom halves, task queues.
|
||||||
Description: Linux Journal Kernel Korner article. Here is it's
|
Description: Linux Journal Kernel Korner article. Here is it's
|
||||||
abstract: "This is the fourth in a series of articles about
|
abstract: "This is the fourth in a series of articles about
|
||||||
|
@ -170,10 +170,10 @@
|
||||||
writing, and several different facilities have been provided for
|
writing, and several different facilities have been provided for
|
||||||
different situations. We also investigate the complex topic of
|
different situations. We also investigate the complex topic of
|
||||||
DMA".
|
DMA".
|
||||||
|
|
||||||
* Title: "Device Drivers Concluded"
|
* Title: "Device Drivers Concluded"
|
||||||
Author: Georg v. Zezschwitz.
|
Author: Georg v. Zezschwitz.
|
||||||
URL: http://www2.linuxjournal.com/lj-issues/issue28/1287.html
|
URL: http://www.linuxjournal.com/article.php?sid=1287
|
||||||
Keywords: address spaces, pages, pagination, page management,
|
Keywords: address spaces, pages, pagination, page management,
|
||||||
demand loading, swapping, memory protection, memory mapping, mmap,
|
demand loading, swapping, memory protection, memory mapping, mmap,
|
||||||
virtual memory areas (VMAs), vremap, PCI.
|
virtual memory areas (VMAs), vremap, PCI.
|
||||||
|
@ -182,10 +182,10 @@
|
||||||
five articles about character device drivers. In this final
|
five articles about character device drivers. In this final
|
||||||
section, Georg deals with memory mapping devices, beginning with
|
section, Georg deals with memory mapping devices, beginning with
|
||||||
an overall description of the Linux memory management concepts".
|
an overall description of the Linux memory management concepts".
|
||||||
|
|
||||||
* Title: "Network Buffers And Memory Management"
|
* Title: "Network Buffers And Memory Management"
|
||||||
Author: Alan Cox.
|
Author: Alan Cox.
|
||||||
URL: http://www2.linuxjournal.com/lj-issues/issue30/1312.html
|
URL: http://www.linuxjournal.com/article.php?sid=1312
|
||||||
Keywords: sk_buffs, network devices, protocol/link layer
|
Keywords: sk_buffs, network devices, protocol/link layer
|
||||||
variables, network devices flags, transmit, receive,
|
variables, network devices flags, transmit, receive,
|
||||||
configuration, multicast.
|
configuration, multicast.
|
||||||
|
@ -214,28 +214,26 @@
|
||||||
of the Coda filesystem. This version document is meant to describe
|
of the Coda filesystem. This version document is meant to describe
|
||||||
the current interface (version 1.0) as well as improvements we
|
the current interface (version 1.0) as well as improvements we
|
||||||
envisage".
|
envisage".
|
||||||
|
|
||||||
* Title: "Programming PCI-Devices under Linux"
|
* Title: "Programming PCI-Devices under Linux"
|
||||||
Author: Claus Schroeter.
|
Author: Claus Schroeter.
|
||||||
URL:
|
URL:
|
||||||
ftp://ftp.llp.fu-berlin.de/pub/linux/LINUX-LAB/whitepapers/pcip.ps
|
ftp://ftp.llp.fu-berlin.de/pub/linux/LINUX-LAB/whitepapers/pcip.ps.gz
|
||||||
.gz
|
|
||||||
Keywords: PCI, device, busmastering.
|
Keywords: PCI, device, busmastering.
|
||||||
Description: 6 pages tutorial on PCI programming under Linux.
|
Description: 6 pages tutorial on PCI programming under Linux.
|
||||||
Gives the basic concepts on the architecture of the PCI subsystem,
|
Gives the basic concepts on the architecture of the PCI subsystem,
|
||||||
as long as basic functions and macros to read/write the devices
|
as long as basic functions and macros to read/write the devices
|
||||||
and perform busmastering.
|
and perform busmastering.
|
||||||
|
|
||||||
* Title: "Writing Character Device Driver for Linux"
|
* Title: "Writing Character Device Driver for Linux"
|
||||||
Author: R. Baruch and C. Schroeter.
|
Author: R. Baruch and C. Schroeter.
|
||||||
URL:
|
URL:
|
||||||
ftp://ftp.llp.fu-berlin.de/pub/linux/LINUX-LAB/whitepapers/drivers
|
ftp://ftp.llp.fu-berlin.de/pub/linux/LINUX-LAB/whitepapers/drivers.ps.gz
|
||||||
.ps.gz
|
|
||||||
Keywords: character device drivers, I/O, signals, DMA, accessing
|
Keywords: character device drivers, I/O, signals, DMA, accessing
|
||||||
ports in user space, kernel environment.
|
ports in user space, kernel environment.
|
||||||
Description: 68 pages paper on writing character drivers. A little
|
Description: 68 pages paper on writing character drivers. A little
|
||||||
bit old (1.993, 1.994) although still useful.
|
bit old (1.993, 1.994) although still useful.
|
||||||
|
|
||||||
* Title: "Design and Implementation of the Second Extended
|
* Title: "Design and Implementation of the Second Extended
|
||||||
Filesystem"
|
Filesystem"
|
||||||
Author: Rémy Card, Theodore Ts'o, Stephen Tweedie.
|
Author: Rémy Card, Theodore Ts'o, Stephen Tweedie.
|
||||||
|
@ -249,14 +247,14 @@
|
||||||
e2fsck's passes description... A must read!
|
e2fsck's passes description... A must read!
|
||||||
Notes: This paper was first published in the Proceedings of the
|
Notes: This paper was first published in the Proceedings of the
|
||||||
First Dutch International Symposium on Linux, ISBN 90-367-0385-9.
|
First Dutch International Symposium on Linux, ISBN 90-367-0385-9.
|
||||||
|
|
||||||
* Title: "Analysis of the Ext2fs structure"
|
* Title: "Analysis of the Ext2fs structure"
|
||||||
Author: Louis-Dominique Dubeau.
|
Author: Louis-Dominique Dubeau.
|
||||||
URL: http://step.polymtl.ca/~ldd/ext2fs/ext2fs_toc.html
|
URL: http://www.nondot.org/sabre/os/files/FileSystems/ext2fs/
|
||||||
Keywords: ext2, filesystem, ext2fs.
|
Keywords: ext2, filesystem, ext2fs.
|
||||||
Description: Description of ext2's blocks, directories, inodes,
|
Description: Description of ext2's blocks, directories, inodes,
|
||||||
bitmaps, invariants...
|
bitmaps, invariants...
|
||||||
|
|
||||||
* Title: "Journaling the Linux ext2fs Filesystem"
|
* Title: "Journaling the Linux ext2fs Filesystem"
|
||||||
Author: Stephen C. Tweedie.
|
Author: Stephen C. Tweedie.
|
||||||
URL:
|
URL:
|
||||||
|
@ -265,7 +263,7 @@
|
||||||
Description: Excellent 8-pages paper explaining the journaling
|
Description: Excellent 8-pages paper explaining the journaling
|
||||||
capabilities added to ext2 by the author, showing different
|
capabilities added to ext2 by the author, showing different
|
||||||
problems faced and the alternatives chosen.
|
problems faced and the alternatives chosen.
|
||||||
|
|
||||||
* Title: "Kernel API changes from 2.0 to 2.2"
|
* Title: "Kernel API changes from 2.0 to 2.2"
|
||||||
Author: Richard Gooch.
|
Author: Richard Gooch.
|
||||||
URL:
|
URL:
|
||||||
|
@ -273,7 +271,7 @@
|
||||||
Keywords: 2.2, changes.
|
Keywords: 2.2, changes.
|
||||||
Description: Kernel functions/structures/variables which changed
|
Description: Kernel functions/structures/variables which changed
|
||||||
from 2.0.x to 2.2.x.
|
from 2.0.x to 2.2.x.
|
||||||
|
|
||||||
* Title: "Kernel API changes from 2.2 to 2.4"
|
* Title: "Kernel API changes from 2.2 to 2.4"
|
||||||
Author: Richard Gooch.
|
Author: Richard Gooch.
|
||||||
URL:
|
URL:
|
||||||
|
@ -345,17 +343,7 @@
|
||||||
Notes: Beware: the main page states: "This document may not be
|
Notes: Beware: the main page states: "This document may not be
|
||||||
published, printed or used in excerpts without explicit permission
|
published, printed or used in excerpts without explicit permission
|
||||||
of the author". Fortunately, it may still be read...
|
of the author". Fortunately, it may still be read...
|
||||||
|
|
||||||
* Title: "Tour Of the Linux Kernel Source"
|
|
||||||
Author: Vijo Cherian.
|
|
||||||
URL: http://www.geocities.com/vijoc/tolks/tolks.html
|
|
||||||
Keywords: .
|
|
||||||
Description: A classic of this page! Was lost for a while and is
|
|
||||||
back again. Thanks Vijo! TOLKS: the name says it all. A tour of
|
|
||||||
the sources, describing directories, files, variables, data
|
|
||||||
structures... It covers general stuff, device drivers,
|
|
||||||
filesystems, IPC and Networking Code.
|
|
||||||
|
|
||||||
* Title: "Linux Kernel Mailing List Glossary"
|
* Title: "Linux Kernel Mailing List Glossary"
|
||||||
Author: various
|
Author: various
|
||||||
URL: http://kernelnewbies.org/glossary/
|
URL: http://kernelnewbies.org/glossary/
|
||||||
|
@ -377,7 +365,17 @@
|
||||||
kernels, but most of it applies to 2.2 too; 2.0 is slightly
|
kernels, but most of it applies to 2.2 too; 2.0 is slightly
|
||||||
different". Freely redistributable under the conditions of the GNU
|
different". Freely redistributable under the conditions of the GNU
|
||||||
General Public License.
|
General Public License.
|
||||||
|
|
||||||
|
* Title: "Global spinlock list and usage"
|
||||||
|
Author: Rick Lindsley.
|
||||||
|
URL: http://lse.sourceforge.net/lockhier/global-spin-lock
|
||||||
|
Keywords: spinlock.
|
||||||
|
Description: This is an attempt to document both the existence and
|
||||||
|
usage of the spinlocks in the Linux 2.4.5 kernel. Comprehensive
|
||||||
|
list of spinlocks showing when they are used, which functions
|
||||||
|
access them, how each lock is acquired, under what conditions it
|
||||||
|
is held, whether interrupts can occur or not while it is held...
|
||||||
|
|
||||||
* Title: "Porting Linux 2.0 Drivers To Linux 2.2: Changes and New
|
* Title: "Porting Linux 2.0 Drivers To Linux 2.2: Changes and New
|
||||||
Features "
|
Features "
|
||||||
Author: Alan Cox.
|
Author: Alan Cox.
|
||||||
|
@ -385,70 +383,70 @@
|
||||||
Keywords: ports, porting.
|
Keywords: ports, porting.
|
||||||
Description: Article from Linux Magazine on porting from 2.0 to
|
Description: Article from Linux Magazine on porting from 2.0 to
|
||||||
2.2 kernels.
|
2.2 kernels.
|
||||||
|
|
||||||
* Title: "Porting Device Drivers To Linux 2.2: part II"
|
* Title: "Porting Device Drivers To Linux 2.2: part II"
|
||||||
Author: Alan Cox.
|
Author: Alan Cox.
|
||||||
URL: http://www.linux-mag.com/1999-06/gear_01.html
|
URL: http://www.linux-mag.com/1999-06/gear_01.html
|
||||||
Keywords: ports, porting.
|
Keywords: ports, porting.
|
||||||
Description: Second part on porting from 2.0 to 2.2 kernels.
|
Description: Second part on porting from 2.0 to 2.2 kernels.
|
||||||
|
|
||||||
* Title: "How To Make Sure Your Driver Will Work On The Power
|
* Title: "How To Make Sure Your Driver Will Work On The Power
|
||||||
Macintosh"
|
Macintosh"
|
||||||
Author: Paul Mackerras.
|
Author: Paul Mackerras.
|
||||||
URL: http://www.linux-mag.com/1999-07/gear_01.html
|
URL: http://www.linux-mag.com/1999-07/gear_01.html
|
||||||
Keywords: Mac, Power Macintosh, porting, drivers, compatibility.
|
Keywords: Mac, Power Macintosh, porting, drivers, compatibility.
|
||||||
Description: The title says it all.
|
Description: The title says it all.
|
||||||
|
|
||||||
* Title: "An Introduction to SCSI Drivers"
|
* Title: "An Introduction to SCSI Drivers"
|
||||||
Author: Alan Cox.
|
Author: Alan Cox.
|
||||||
URL: http://www.linux-mag.com/1999-08/gear_01.html
|
URL: http://www.linux-mag.com/1999-08/gear_01.html
|
||||||
Keywords: SCSI, device, driver.
|
Keywords: SCSI, device, driver.
|
||||||
Description: The title says it all.
|
Description: The title says it all.
|
||||||
|
|
||||||
* Title: "Advanced SCSI Drivers And Other Tales"
|
* Title: "Advanced SCSI Drivers And Other Tales"
|
||||||
Author: Alan Cox.
|
Author: Alan Cox.
|
||||||
URL: http://www.linux-mag.com/1999-09/gear_01.html
|
URL: http://www.linux-mag.com/1999-09/gear_01.html
|
||||||
Keywords: SCSI, device, driver, advanced.
|
Keywords: SCSI, device, driver, advanced.
|
||||||
Description: The title says it all.
|
Description: The title says it all.
|
||||||
|
|
||||||
* Title: "Writing Linux Mouse Drivers"
|
* Title: "Writing Linux Mouse Drivers"
|
||||||
Author: Alan Cox.
|
Author: Alan Cox.
|
||||||
URL: http://www.linux-mag.com/1999-10/gear_01.html
|
URL: http://www.linux-mag.com/1999-10/gear_01.html
|
||||||
Keywords: mouse, driver, gpm.
|
Keywords: mouse, driver, gpm.
|
||||||
Description: The title says it all.
|
Description: The title says it all.
|
||||||
|
|
||||||
* Title: "More on Mouse Drivers"
|
* Title: "More on Mouse Drivers"
|
||||||
Author: Alan Cox.
|
Author: Alan Cox.
|
||||||
URL: http://www.linux-mag.com/1999-11/gear_01.html
|
URL: http://www.linux-mag.com/1999-11/gear_01.html
|
||||||
Keywords: mouse, driver, gpm, races, asynchronous I/O.
|
Keywords: mouse, driver, gpm, races, asynchronous I/O.
|
||||||
Description: The title still says it all.
|
Description: The title still says it all.
|
||||||
|
|
||||||
* Title: "Writing Video4linux Radio Driver"
|
* Title: "Writing Video4linux Radio Driver"
|
||||||
Author: Alan Cox.
|
Author: Alan Cox.
|
||||||
URL: http://www.linux-mag.com/1999-12/gear_01.html
|
URL: http://www.linux-mag.com/1999-12/gear_01.html
|
||||||
Keywords: video4linux, driver, radio, radio devices.
|
Keywords: video4linux, driver, radio, radio devices.
|
||||||
Description: The title says it all.
|
Description: The title says it all.
|
||||||
|
|
||||||
* Title: "Video4linux Drivers, Part 1: Video-Capture Device"
|
* Title: "Video4linux Drivers, Part 1: Video-Capture Device"
|
||||||
Author: Alan Cox.
|
Author: Alan Cox.
|
||||||
URL: http://www.linux-mag.com/2000-01/gear_01.html
|
URL: http://www.linux-mag.com/2000-01/gear_01.html
|
||||||
Keywords: video4linux, driver, video capture, capture devices,
|
Keywords: video4linux, driver, video capture, capture devices,
|
||||||
camera driver.
|
camera driver.
|
||||||
Description: The title says it all.
|
Description: The title says it all.
|
||||||
|
|
||||||
* Title: "Video4linux Drivers, Part 2: Video-capture Devices"
|
* Title: "Video4linux Drivers, Part 2: Video-capture Devices"
|
||||||
Author: Alan Cox.
|
Author: Alan Cox.
|
||||||
URL: http://www.linux-mag.com/2000-02/gear_01.html
|
URL: http://www.linux-mag.com/2000-02/gear_01.html
|
||||||
Keywords: video4linux, driver, video capture, capture devices,
|
Keywords: video4linux, driver, video capture, capture devices,
|
||||||
camera driver, control, query capabilities, capability, facility.
|
camera driver, control, query capabilities, capability, facility.
|
||||||
Description: The title says it all.
|
Description: The title says it all.
|
||||||
|
|
||||||
* Title: "PCI Management in Linux 2.2"
|
* Title: "PCI Management in Linux 2.2"
|
||||||
Author: Alan Cox.
|
Author: Alan Cox.
|
||||||
URL: http://www.linux-mag.com/2000-03/gear_01.html
|
URL: http://www.linux-mag.com/2000-03/gear_01.html
|
||||||
Keywords: PCI, bus, bus-mastering.
|
Keywords: PCI, bus, bus-mastering.
|
||||||
Description: The title says it all.
|
Description: The title says it all.
|
||||||
|
|
||||||
* Title: "Linux 2.4 Kernel Internals"
|
* Title: "Linux 2.4 Kernel Internals"
|
||||||
Author: Tigran Aivazian and Christoph Hellwig.
|
Author: Tigran Aivazian and Christoph Hellwig.
|
||||||
URL: http://www.moses.uklinux.net/patches/lki.html
|
URL: http://www.moses.uklinux.net/patches/lki.html
|
||||||
|
@ -456,13 +454,11 @@
|
||||||
Description: A little book used for a short training course.
|
Description: A little book used for a short training course.
|
||||||
Covers building the kernel image, booting (including SMP bootup),
|
Covers building the kernel image, booting (including SMP bootup),
|
||||||
process management, VFS and more.
|
process management, VFS and more.
|
||||||
|
|
||||||
* Title: "Linux IP Networking. A Guide to the Implementation and
|
* Title: "Linux IP Networking. A Guide to the Implementation and
|
||||||
Modification of the Linux Protocol Stack."
|
Modification of the Linux Protocol Stack."
|
||||||
Author: Glenn Herrin.
|
Author: Glenn Herrin.
|
||||||
URL:
|
URL: http://www.cs.unh.edu/cnrg/gherrin
|
||||||
http://kernelnewbies.org/documents/ipnetworking/linuxipnetworking.
|
|
||||||
html
|
|
||||||
Keywords: network, networking, protocol, IP, UDP, TCP, connection,
|
Keywords: network, networking, protocol, IP, UDP, TCP, connection,
|
||||||
socket, receiving, transmitting, forwarding, routing, packets,
|
socket, receiving, transmitting, forwarding, routing, packets,
|
||||||
modules, /proc, sk_buff, FIB, tags.
|
modules, /proc, sk_buff, FIB, tags.
|
||||||
|
@ -495,7 +491,7 @@
|
||||||
drivers for the Linux PCMCIA Card Services interface. It also
|
drivers for the Linux PCMCIA Card Services interface. It also
|
||||||
describes how to write user-mode utilities for communicating with
|
describes how to write user-mode utilities for communicating with
|
||||||
Card Services.
|
Card Services.
|
||||||
|
|
||||||
* Title: "The Linux Kernel NFSD Implementation"
|
* Title: "The Linux Kernel NFSD Implementation"
|
||||||
Author: Neil Brown.
|
Author: Neil Brown.
|
||||||
URL:
|
URL:
|
||||||
|
@ -591,47 +587,22 @@
|
||||||
Pages: 520.
|
Pages: 520.
|
||||||
ISBN: 2-212-08932-5
|
ISBN: 2-212-08932-5
|
||||||
Notes: French.
|
Notes: French.
|
||||||
|
|
||||||
* Title: "The Linux Kernel Book"
|
|
||||||
Author: Remy Card, Eric Dumas, Franck Mevel.
|
|
||||||
Publisher: John Wiley & Sons.
|
|
||||||
Date: 1998.
|
|
||||||
ISBN: 0-471-98141-9
|
|
||||||
Notes: English translation.
|
|
||||||
|
|
||||||
* Title: "Linux 2.0"
|
|
||||||
Author: Remy Card, Eric Dumas, Franck Mevel.
|
|
||||||
Publisher: Gestión 2000.
|
|
||||||
Date: 1997.
|
|
||||||
Pages: 501.
|
|
||||||
ISBN: 8-480-88208-5
|
|
||||||
Notes: Spanish translation.
|
|
||||||
|
|
||||||
* Title: "Unix internals -- the new frontiers"
|
* Title: "Unix internals -- the new frontiers"
|
||||||
Author: Uresh Vahalia.
|
Author: Uresh Vahalia.
|
||||||
Publisher: Prentice Hall.
|
Publisher: Prentice Hall.
|
||||||
Date: 1996.
|
Date: 1996.
|
||||||
Pages: 600.
|
Pages: 600.
|
||||||
ISBN: 0-13-101908-2
|
ISBN: 0-13-101908-2
|
||||||
|
|
||||||
* Title: "Linux Core Kernel Commentary. Guide to Insider's Knowledge
|
* Title: "The Design and Implementation of the 4.4 BSD UNIX
|
||||||
on the Core Kernel of the Linux Code"
|
Operating System"
|
||||||
Author: Scott Maxwell.
|
Author: Marshall Kirk McKusick, Keith Bostic, Michael J. Karels,
|
||||||
Publisher: Coriolis.
|
John S. Quarterman.
|
||||||
Date: 1999.
|
Publisher: Addison-Wesley.
|
||||||
Pages: 592.
|
Date: 1996.
|
||||||
ISBN: 1-57610-469-9
|
ISBN: 0-201-54979-4
|
||||||
Notes: CD-ROM included. Line by line commentary of the kernel
|
|
||||||
code.
|
|
||||||
|
|
||||||
* Title: "Linux IP Stacks Commentary"
|
|
||||||
Author: Stephen Satchell and HBJ Clifford.
|
|
||||||
Publisher: Coriolis.
|
|
||||||
Date: 2000.
|
|
||||||
Pages: ???.
|
|
||||||
ISBN: 1-57610-470-2
|
|
||||||
Notes: Line by line source code commentary book.
|
|
||||||
|
|
||||||
* Title: "Programming for the real world - POSIX.4"
|
* Title: "Programming for the real world - POSIX.4"
|
||||||
Author: Bill O. Gallmeister.
|
Author: Bill O. Gallmeister.
|
||||||
Publisher: O'Reilly & Associates, Inc..
|
Publisher: O'Reilly & Associates, Inc..
|
||||||
|
@ -640,18 +611,32 @@
|
||||||
ISBN: I-56592-074-0
|
ISBN: I-56592-074-0
|
||||||
Notes: Though not being directly about Linux, Linux aims to be
|
Notes: Though not being directly about Linux, Linux aims to be
|
||||||
POSIX. Good reference.
|
POSIX. Good reference.
|
||||||
|
|
||||||
* Title: "Understanding the Linux Kernel"
|
* Title: "UNIX Systems for Modern Architectures: Symmetric
|
||||||
Author: Daniel P. Bovet and Marco Cesati.
|
Multiprocesssing and Caching for Kernel Programmers"
|
||||||
Publisher: O'Reilly & Associates, Inc..
|
Author: Curt Schimmel.
|
||||||
Date: 2000.
|
Publisher: Addison Wesley.
|
||||||
Pages: 702.
|
Date: June, 1994.
|
||||||
ISBN: 0-596-00002-2
|
Pages: 432.
|
||||||
Notes: Further information in
|
ISBN: 0-201-63338-8
|
||||||
http://www.oreilly.com/catalog/linuxkernel/
|
|
||||||
|
* Title: "The Design and Implementation of the 4.3 BSD UNIX
|
||||||
|
Operating System"
|
||||||
|
Author: Samuel J. Leffler, Marshall Kirk McKusick, Michael J.
|
||||||
|
Karels, John S. Quarterman.
|
||||||
|
Publisher: Addison-Wesley.
|
||||||
|
Date: 1989 (reprinted with corrections on October, 1990).
|
||||||
|
ISBN: 0-201-06196-1
|
||||||
|
|
||||||
|
* Title: "The Design of the UNIX Operating System"
|
||||||
|
Author: Maurice J. Bach.
|
||||||
|
Publisher: Prentice Hall.
|
||||||
|
Date: 1986.
|
||||||
|
Pages: 471.
|
||||||
|
ISBN: 0-13-201757-1
|
||||||
|
|
||||||
MISCELLANEOUS:
|
MISCELLANEOUS:
|
||||||
|
|
||||||
* Name: linux/Documentation
|
* Name: linux/Documentation
|
||||||
Author: Many.
|
Author: Many.
|
||||||
URL: Just look inside your kernel sources.
|
URL: Just look inside your kernel sources.
|
||||||
|
@ -660,7 +645,7 @@
|
||||||
inside the Documentation directory. Some pages from this document
|
inside the Documentation directory. Some pages from this document
|
||||||
(including this document itself) have been moved there, and might
|
(including this document itself) have been moved there, and might
|
||||||
be more up to date than the web version.
|
be more up to date than the web version.
|
||||||
|
|
||||||
* Name: "Linux Source Driver"
|
* Name: "Linux Source Driver"
|
||||||
URL: http://lsd.linux.cz
|
URL: http://lsd.linux.cz
|
||||||
Keywords: Browsing source code.
|
Keywords: Browsing source code.
|
||||||
|
@ -671,7 +656,7 @@
|
||||||
you can search Linux kernel (fulltext, macros, types, functions
|
you can search Linux kernel (fulltext, macros, types, functions
|
||||||
and variables) and LSD can generate patches for you on the fly
|
and variables) and LSD can generate patches for you on the fly
|
||||||
(files, directories or kernel)".
|
(files, directories or kernel)".
|
||||||
|
|
||||||
* Name: "Linux Kernel Source Reference"
|
* Name: "Linux Kernel Source Reference"
|
||||||
Author: Thomas Graichen.
|
Author: Thomas Graichen.
|
||||||
URL: http://innominate.org/~graichen/projects/lksr/
|
URL: http://innominate.org/~graichen/projects/lksr/
|
||||||
|
@ -681,27 +666,27 @@
|
||||||
sources of any version starting from 1.0 up to the (daily updated)
|
sources of any version starting from 1.0 up to the (daily updated)
|
||||||
current version available. Also you can check the differences
|
current version available. Also you can check the differences
|
||||||
between two versions of a file".
|
between two versions of a file".
|
||||||
|
|
||||||
* Name: "Cross-Referencing Linux"
|
* Name: "Cross-Referencing Linux"
|
||||||
URL: http://lxr.linux.no/source/
|
URL: http://lxr.linux.no/source/
|
||||||
Keywords: Browsing source code.
|
Keywords: Browsing source code.
|
||||||
Description: Another web-based Linux kernel source code browser.
|
Description: Another web-based Linux kernel source code browser.
|
||||||
Lots of cross references to variables and functions. You can see
|
Lots of cross references to variables and functions. You can see
|
||||||
where they are defined and where they are used.
|
where they are defined and where they are used.
|
||||||
|
|
||||||
* Name: "Linux Weekly News"
|
* Name: "Linux Weekly News"
|
||||||
URL: http://lwn.net
|
URL: http://lwn.net
|
||||||
Keywords: latest kernel news.
|
Keywords: latest kernel news.
|
||||||
Description: The title says it all. There's a fixed kernel section
|
Description: The title says it all. There's a fixed kernel section
|
||||||
summarizing developers' work, bug fixes, new features and versions
|
summarizing developers' work, bug fixes, new features and versions
|
||||||
produced during the week. Published every Thursday.
|
produced during the week. Published every Thursday.
|
||||||
|
|
||||||
* Name: "Kernel Traffic"
|
* Name: "Kernel Traffic"
|
||||||
URL: http://www.kerneltraffic.org/kernel-traffic/
|
URL: http://kt.zork.net/kernel-traffic/
|
||||||
Keywords: linux-kernel mailing list, weekly kernel news.
|
Keywords: linux-kernel mailing list, weekly kernel news.
|
||||||
Description: Weekly newsletter covering the most relevant
|
Description: Weekly newsletter covering the most relevant
|
||||||
discussions of the linux-kernel mailing list.
|
discussions of the linux-kernel mailing list.
|
||||||
|
|
||||||
* Name: "CuTTiNG.eDGe.LiNuX"
|
* Name: "CuTTiNG.eDGe.LiNuX"
|
||||||
URL: http://edge.kernelnotes.org
|
URL: http://edge.kernelnotes.org
|
||||||
Keywords: changelist.
|
Keywords: changelist.
|
||||||
|
@ -709,7 +694,7 @@
|
||||||
release. What's new, what's better, what's changed. Myrdraal reads
|
release. What's new, what's better, what's changed. Myrdraal reads
|
||||||
the patches and describes them. Pointers to the patches are there,
|
the patches and describes them. Pointers to the patches are there,
|
||||||
too.
|
too.
|
||||||
|
|
||||||
* Name: "New linux-kernel Mailing List FAQ"
|
* Name: "New linux-kernel Mailing List FAQ"
|
||||||
URL: http://www.tux.org/lkml/
|
URL: http://www.tux.org/lkml/
|
||||||
Keywords: linux-kernel mailing list FAQ.
|
Keywords: linux-kernel mailing list FAQ.
|
||||||
|
@ -719,7 +704,7 @@
|
||||||
it. Read it to see how to join the mailing list. Dozens of
|
it. Read it to see how to join the mailing list. Dozens of
|
||||||
interesting questions regarding the list, Linux, developers (who
|
interesting questions regarding the list, Linux, developers (who
|
||||||
is ...?), terms (what is...?) are answered here too. Just read it.
|
is ...?), terms (what is...?) are answered here too. Just read it.
|
||||||
|
|
||||||
* Name: "Linux Virtual File System"
|
* Name: "Linux Virtual File System"
|
||||||
Author: Peter J. Braam.
|
Author: Peter J. Braam.
|
||||||
URL: http://www.coda.cs.cmu.edu/doc/talks/linuxvfs/
|
URL: http://www.coda.cs.cmu.edu/doc/talks/linuxvfs/
|
||||||
|
@ -727,10 +712,10 @@
|
||||||
Description: Set of slides, presumably from a presentation on the
|
Description: Set of slides, presumably from a presentation on the
|
||||||
Linux VFS layer. Covers version 2.1.x, with dentries and the
|
Linux VFS layer. Covers version 2.1.x, with dentries and the
|
||||||
dcache.
|
dcache.
|
||||||
|
|
||||||
* Name: "Gary's Encyclopedia - The Linux Kernel"
|
* Name: "Gary's Encyclopedia - The Linux Kernel"
|
||||||
Author: Gary (I suppose...).
|
Author: Gary (I suppose...).
|
||||||
URL: http://members.aa.net/~swear/pedia/kernel.html
|
URL: http://www.lisoleg.net/cgi-bin/lisoleg.pl?view=kernel.htm
|
||||||
Keywords: links, not found here?.
|
Keywords: links, not found here?.
|
||||||
Description: Gary's Encyclopedia exists to allow the rapid finding
|
Description: Gary's Encyclopedia exists to allow the rapid finding
|
||||||
of documentation and other information of interest to GNU/Linux
|
of documentation and other information of interest to GNU/Linux
|
||||||
|
@ -738,7 +723,7 @@
|
||||||
categories. This link is for kernel-specific links, documents,
|
categories. This link is for kernel-specific links, documents,
|
||||||
sites... Look there if you could not find here what you were
|
sites... Look there if you could not find here what you were
|
||||||
looking for.
|
looking for.
|
||||||
|
|
||||||
* Name: "The home page of Linux-MM"
|
* Name: "The home page of Linux-MM"
|
||||||
Author: The Linux-MM team.
|
Author: The Linux-MM team.
|
||||||
URL: http://linux-mm.org/
|
URL: http://linux-mm.org/
|
||||||
|
@ -747,7 +732,7 @@
|
||||||
Description: Site devoted to Linux Memory Management development.
|
Description: Site devoted to Linux Memory Management development.
|
||||||
Memory related patches, HOWTOs, links, mm developers... Don't miss
|
Memory related patches, HOWTOs, links, mm developers... Don't miss
|
||||||
it if you are interested in memory management development!
|
it if you are interested in memory management development!
|
||||||
|
|
||||||
* Name: "Kernel Newbies IRC Channel"
|
* Name: "Kernel Newbies IRC Channel"
|
||||||
URL: http://www.kernelnewbies.org
|
URL: http://www.kernelnewbies.org
|
||||||
Keywords: IRC, newbies, channel, asking doubts.
|
Keywords: IRC, newbies, channel, asking doubts.
|
||||||
|
|
|
@ -864,7 +864,14 @@ and is between 256 and 4096 characters. It is defined in the file
|
||||||
Format: <1-256>
|
Format: <1-256>
|
||||||
|
|
||||||
maxcpus= [SMP] Maximum number of processors that an SMP kernel
|
maxcpus= [SMP] Maximum number of processors that an SMP kernel
|
||||||
should make use of
|
should make use of.
|
||||||
|
Using "nosmp" or "maxcpus=0" will disable SMP
|
||||||
|
entirely (the MPS table probe still happens, though).
|
||||||
|
A command-line option of "maxcpus=<NUM>", where <NUM>
|
||||||
|
is an integer greater than 0, limits the maximum number
|
||||||
|
of CPUs activated in SMP mode to <NUM>.
|
||||||
|
Using "maxcpus=1" on an SMP kernel is the trivial
|
||||||
|
case of an SMP kernel with only one CPU.
|
||||||
|
|
||||||
max_addr=[KMG] [KNL,BOOT,ia64] All physical memory greater than or
|
max_addr=[KMG] [KNL,BOOT,ia64] All physical memory greater than or
|
||||||
equal to this physical address is ignored.
|
equal to this physical address is ignored.
|
||||||
|
|
|
@ -17,7 +17,7 @@ of the board-specific code (with the exception of stboards) ended up
|
||||||
in arch/sh/kernel/ directly, with board-specific headers ending up in
|
in arch/sh/kernel/ directly, with board-specific headers ending up in
|
||||||
include/asm-sh/. For the new kernel, things are broken out by board type,
|
include/asm-sh/. For the new kernel, things are broken out by board type,
|
||||||
companion chip type, and CPU type. Looking at a tree view of this directory
|
companion chip type, and CPU type. Looking at a tree view of this directory
|
||||||
heirarchy looks like the following:
|
hierarchy looks like the following:
|
||||||
|
|
||||||
Board-specific code:
|
Board-specific code:
|
||||||
|
|
||||||
|
@ -108,7 +108,7 @@ overloading), and you can feel free to name the directory after the family
|
||||||
member itself.
|
member itself.
|
||||||
|
|
||||||
There are a few things that each board is required to have, both in the
|
There are a few things that each board is required to have, both in the
|
||||||
arch/sh/boards and the include/asm-sh/ heirarchy. In order to better
|
arch/sh/boards and the include/asm-sh/ hierarchy. In order to better
|
||||||
explain this, we use some examples for adding an imaginary board. For
|
explain this, we use some examples for adding an imaginary board. For
|
||||||
setup code, we're required at the very least to provide definitions for
|
setup code, we're required at the very least to provide definitions for
|
||||||
get_system_type() and platform_setup(). For our imaginary board, this
|
get_system_type() and platform_setup(). For our imaginary board, this
|
||||||
|
|
|
@ -57,7 +57,7 @@ bttv.o
|
||||||
i2c_udelay= Allow reduce I2C speed. Default is 5 usecs
|
i2c_udelay= Allow reduce I2C speed. Default is 5 usecs
|
||||||
(meaning 66,67 Kbps). The default is the
|
(meaning 66,67 Kbps). The default is the
|
||||||
maximum supported speed by kernel bitbang
|
maximum supported speed by kernel bitbang
|
||||||
algoritm. You may use lower numbers, if I2C
|
algorithm. You may use lower numbers, if I2C
|
||||||
messages are lost (16 is known to work on
|
messages are lost (16 is known to work on
|
||||||
all supported cards).
|
all supported cards).
|
||||||
|
|
||||||
|
|
2
README
2
README
|
@ -24,7 +24,7 @@ ON WHAT HARDWARE DOES IT RUN?
|
||||||
today Linux also runs on (at least) the Compaq Alpha AXP, Sun SPARC and
|
today Linux also runs on (at least) the Compaq Alpha AXP, Sun SPARC and
|
||||||
UltraSPARC, Motorola 68000, PowerPC, PowerPC64, ARM, Hitachi SuperH, Cell,
|
UltraSPARC, Motorola 68000, PowerPC, PowerPC64, ARM, Hitachi SuperH, Cell,
|
||||||
IBM S/390, MIPS, HP PA-RISC, Intel IA-64, DEC VAX, AMD x86-64, AXIS CRIS,
|
IBM S/390, MIPS, HP PA-RISC, Intel IA-64, DEC VAX, AMD x86-64, AXIS CRIS,
|
||||||
Cris, Xtensa, AVR32 and Renesas M32R architectures.
|
Xtensa, AVR32 and Renesas M32R architectures.
|
||||||
|
|
||||||
Linux is easily portable to most general-purpose 32- or 64-bit architectures
|
Linux is easily portable to most general-purpose 32- or 64-bit architectures
|
||||||
as long as they have a paged memory management unit (PMMU) and a port of the
|
as long as they have a paged memory management unit (PMMU) and a port of the
|
||||||
|
|
|
@ -427,7 +427,7 @@ source arch/arm/mm/Kconfig
|
||||||
|
|
||||||
config IWMMXT
|
config IWMMXT
|
||||||
bool "Enable iWMMXt support"
|
bool "Enable iWMMXt support"
|
||||||
depends CPU_XSCALE || CPU_XSC3
|
depends on CPU_XSCALE || CPU_XSC3
|
||||||
default y if PXA27x
|
default y if PXA27x
|
||||||
help
|
help
|
||||||
Enable support for iWMMXt context switching at run time if
|
Enable support for iWMMXt context switching at run time if
|
||||||
|
|
|
@ -525,7 +525,7 @@ config CPU_BIG_ENDIAN
|
||||||
of your chipset/board/processor.
|
of your chipset/board/processor.
|
||||||
|
|
||||||
config CPU_HIGH_VECTOR
|
config CPU_HIGH_VECTOR
|
||||||
depends !MMU && CPU_CP15 && !CPU_ARM740T
|
depends on !MMU && CPU_CP15 && !CPU_ARM740T
|
||||||
bool "Select the High exception vector"
|
bool "Select the High exception vector"
|
||||||
default n
|
default n
|
||||||
help
|
help
|
||||||
|
|
|
@ -311,7 +311,7 @@ pcf8563_register(void)
|
||||||
{
|
{
|
||||||
pcf8563_init();
|
pcf8563_init();
|
||||||
if (register_chrdev(PCF8563_MAJOR, DEVICE_NAME, &pcf8563_fops) < 0) {
|
if (register_chrdev(PCF8563_MAJOR, DEVICE_NAME, &pcf8563_fops) < 0) {
|
||||||
printk(KERN_INFO "%s: Unable to get major numer %d for RTC device.\n",
|
printk(KERN_INFO "%s: Unable to get major number %d for RTC device.\n",
|
||||||
PCF8563_NAME, PCF8563_MAJOR);
|
PCF8563_NAME, PCF8563_MAJOR);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
|
@ -171,7 +171,7 @@ pcf8563_init(void)
|
||||||
goto err;
|
goto err;
|
||||||
|
|
||||||
if (register_chrdev(PCF8563_MAJOR, DEVICE_NAME, &pcf8563_fops) < 0) {
|
if (register_chrdev(PCF8563_MAJOR, DEVICE_NAME, &pcf8563_fops) < 0) {
|
||||||
printk(KERN_INFO "%s: Unable to get major numer %d for RTC device.\n",
|
printk(KERN_INFO "%s: Unable to get major number %d for RTC device.\n",
|
||||||
PCF8563_NAME, PCF8563_MAJOR);
|
PCF8563_NAME, PCF8563_MAJOR);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,6 +11,7 @@
|
||||||
#include <endian.h>
|
#include <endian.h>
|
||||||
|
|
||||||
#define MAX_SHDRS 100
|
#define MAX_SHDRS 100
|
||||||
|
#define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))
|
||||||
static Elf32_Ehdr ehdr;
|
static Elf32_Ehdr ehdr;
|
||||||
static Elf32_Shdr shdr[MAX_SHDRS];
|
static Elf32_Shdr shdr[MAX_SHDRS];
|
||||||
static Elf32_Sym *symtab[MAX_SHDRS];
|
static Elf32_Sym *symtab[MAX_SHDRS];
|
||||||
|
@ -71,7 +72,7 @@ static const char *sym_type(unsigned type)
|
||||||
#undef SYM_TYPE
|
#undef SYM_TYPE
|
||||||
};
|
};
|
||||||
const char *name = "unknown sym type name";
|
const char *name = "unknown sym type name";
|
||||||
if (type < sizeof(type_name)/sizeof(type_name[0])) {
|
if (type < ARRAY_SIZE(type_name)) {
|
||||||
name = type_name[type];
|
name = type_name[type];
|
||||||
}
|
}
|
||||||
return name;
|
return name;
|
||||||
|
@ -87,7 +88,7 @@ static const char *sym_bind(unsigned bind)
|
||||||
#undef SYM_BIND
|
#undef SYM_BIND
|
||||||
};
|
};
|
||||||
const char *name = "unknown sym bind name";
|
const char *name = "unknown sym bind name";
|
||||||
if (bind < sizeof(bind_name)/sizeof(bind_name[0])) {
|
if (bind < ARRAY_SIZE(bind_name)) {
|
||||||
name = bind_name[bind];
|
name = bind_name[bind];
|
||||||
}
|
}
|
||||||
return name;
|
return name;
|
||||||
|
@ -104,7 +105,7 @@ static const char *sym_visibility(unsigned visibility)
|
||||||
#undef SYM_VISIBILITY
|
#undef SYM_VISIBILITY
|
||||||
};
|
};
|
||||||
const char *name = "unknown sym visibility name";
|
const char *name = "unknown sym visibility name";
|
||||||
if (visibility < sizeof(visibility_name)/sizeof(visibility_name[0])) {
|
if (visibility < ARRAY_SIZE(visibility_name)) {
|
||||||
name = visibility_name[visibility];
|
name = visibility_name[visibility];
|
||||||
}
|
}
|
||||||
return name;
|
return name;
|
||||||
|
@ -128,7 +129,7 @@ static const char *rel_type(unsigned type)
|
||||||
#undef REL_TYPE
|
#undef REL_TYPE
|
||||||
};
|
};
|
||||||
const char *name = "unknown type rel type name";
|
const char *name = "unknown type rel type name";
|
||||||
if (type < sizeof(type_name)/sizeof(type_name[0])) {
|
if (type < ARRAY_SIZE(type_name)) {
|
||||||
name = type_name[type];
|
name = type_name[type];
|
||||||
}
|
}
|
||||||
return name;
|
return name;
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* arch/i386/kernel/topology.c - Populate driverfs with topology information
|
* arch/i386/kernel/topology.c - Populate sysfs with topology information
|
||||||
*
|
*
|
||||||
* Written by: Matthew Dobson, IBM Corporation
|
* Written by: Matthew Dobson, IBM Corporation
|
||||||
* Original Code: Paul Dorwin, IBM Corporation, Patrick Mochel, OSDL
|
* Original Code: Paul Dorwin, IBM Corporation, Patrick Mochel, OSDL
|
||||||
|
|
|
@ -63,7 +63,7 @@ static struct sys_device device_oprofile = {
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
static int __init init_driverfs(void)
|
static int __init init_sysfs(void)
|
||||||
{
|
{
|
||||||
int error;
|
int error;
|
||||||
if (!(error = sysdev_class_register(&oprofile_sysclass)))
|
if (!(error = sysdev_class_register(&oprofile_sysclass)))
|
||||||
|
@ -72,15 +72,15 @@ static int __init init_driverfs(void)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static void exit_driverfs(void)
|
static void exit_sysfs(void)
|
||||||
{
|
{
|
||||||
sysdev_unregister(&device_oprofile);
|
sysdev_unregister(&device_oprofile);
|
||||||
sysdev_class_unregister(&oprofile_sysclass);
|
sysdev_class_unregister(&oprofile_sysclass);
|
||||||
}
|
}
|
||||||
|
|
||||||
#else
|
#else
|
||||||
#define init_driverfs() do { } while (0)
|
#define init_sysfs() do { } while (0)
|
||||||
#define exit_driverfs() do { } while (0)
|
#define exit_sysfs() do { } while (0)
|
||||||
#endif /* CONFIG_PM */
|
#endif /* CONFIG_PM */
|
||||||
|
|
||||||
static int profile_exceptions_notify(struct notifier_block *self,
|
static int profile_exceptions_notify(struct notifier_block *self,
|
||||||
|
@ -385,7 +385,7 @@ static int __init ppro_init(char ** cpu_type)
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* in order to get driverfs right */
|
/* in order to get sysfs right */
|
||||||
static int using_nmi;
|
static int using_nmi;
|
||||||
|
|
||||||
int __init op_nmi_init(struct oprofile_operations *ops)
|
int __init op_nmi_init(struct oprofile_operations *ops)
|
||||||
|
@ -440,7 +440,7 @@ int __init op_nmi_init(struct oprofile_operations *ops)
|
||||||
return -ENODEV;
|
return -ENODEV;
|
||||||
}
|
}
|
||||||
|
|
||||||
init_driverfs();
|
init_sysfs();
|
||||||
using_nmi = 1;
|
using_nmi = 1;
|
||||||
ops->create_files = nmi_create_files;
|
ops->create_files = nmi_create_files;
|
||||||
ops->setup = nmi_setup;
|
ops->setup = nmi_setup;
|
||||||
|
@ -456,5 +456,5 @@ int __init op_nmi_init(struct oprofile_operations *ops)
|
||||||
void op_nmi_exit(void)
|
void op_nmi_exit(void)
|
||||||
{
|
{
|
||||||
if (using_nmi)
|
if (using_nmi)
|
||||||
exit_driverfs();
|
exit_sysfs();
|
||||||
}
|
}
|
||||||
|
|
|
@ -147,7 +147,7 @@
|
||||||
* in UP:
|
* in UP:
|
||||||
* - we need to protect against PMU overflow interrupts (local_irq_disable)
|
* - we need to protect against PMU overflow interrupts (local_irq_disable)
|
||||||
*
|
*
|
||||||
* spin_lock_irqsave()/spin_lock_irqrestore():
|
* spin_lock_irqsave()/spin_unlock_irqrestore():
|
||||||
* in SMP: local_irq_disable + spin_lock
|
* in SMP: local_irq_disable + spin_lock
|
||||||
* in UP : local_irq_disable
|
* in UP : local_irq_disable
|
||||||
*
|
*
|
||||||
|
|
|
@ -293,7 +293,7 @@ long strnlen_user(const char __user *s, long n)
|
||||||
: "0" (n), "1" (s), "r" (n & 3), "r" (mask), "r"(0x01010101)
|
: "0" (n), "1" (s), "r" (n & 3), "r" (mask), "r"(0x01010101)
|
||||||
: "r0", "r1", "cbit");
|
: "r0", "r1", "cbit");
|
||||||
|
|
||||||
/* NOTE: strnlen_user() algorism:
|
/* NOTE: strnlen_user() algorithm:
|
||||||
* {
|
* {
|
||||||
* char *p;
|
* char *p;
|
||||||
* for (p = s; n-- && *p != '\0'; ++p)
|
* for (p = s; n-- && *p != '\0'; ++p)
|
||||||
|
@ -369,7 +369,7 @@ long strnlen_user(const char __user *s, long n)
|
||||||
: "0" (n), "1" (s), "r" (n & 3), "r" (mask), "r"(0x01010101)
|
: "0" (n), "1" (s), "r" (n & 3), "r" (mask), "r"(0x01010101)
|
||||||
: "r0", "r1", "r2", "r3", "cbit");
|
: "r0", "r1", "r2", "r3", "cbit");
|
||||||
|
|
||||||
/* NOTE: strnlen_user() algorism:
|
/* NOTE: strnlen_user() algorithm:
|
||||||
* {
|
* {
|
||||||
* char *p;
|
* char *p;
|
||||||
* for (p = s; n-- && *p != '\0'; ++p)
|
* for (p = s; n-- && *p != '\0'; ++p)
|
||||||
|
|
|
@ -104,7 +104,7 @@ unsigned long coldfire_timer_offset(void)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Choose a reasonably fast profile timer. Make it an odd value to
|
* Choose a reasonably fast profile timer. Make it an odd value to
|
||||||
* try and get good coverage of kernal operations.
|
* try and get good coverage of kernel operations.
|
||||||
*/
|
*/
|
||||||
#define PROFILEHZ 1013
|
#define PROFILEHZ 1013
|
||||||
|
|
||||||
|
|
|
@ -13,8 +13,8 @@
|
||||||
#include <asm/cacheflush.h>
|
#include <asm/cacheflush.h>
|
||||||
#include <asm/page.h>
|
#include <asm/page.h>
|
||||||
|
|
||||||
const extern unsigned char relocate_new_kernel[];
|
extern const unsigned char relocate_new_kernel[];
|
||||||
const extern unsigned int relocate_new_kernel_size;
|
extern const unsigned int relocate_new_kernel_size;
|
||||||
|
|
||||||
extern unsigned long kexec_start_address;
|
extern unsigned long kexec_start_address;
|
||||||
extern unsigned long kexec_indirection_page;
|
extern unsigned long kexec_indirection_page;
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* arch/parisc/kernel/topology.c - Populate driverfs with topology information
|
* arch/parisc/kernel/topology.c - Populate sysfs with topology information
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
@ -182,7 +182,7 @@ void rtas_progress(char *s, unsigned short hex)
|
||||||
char *os;
|
char *os;
|
||||||
static int display_character, set_indicator;
|
static int display_character, set_indicator;
|
||||||
static int display_width, display_lines, form_feed;
|
static int display_width, display_lines, form_feed;
|
||||||
const static int *row_width;
|
static const int *row_width;
|
||||||
static DEFINE_SPINLOCK(progress_lock);
|
static DEFINE_SPINLOCK(progress_lock);
|
||||||
static int current_line;
|
static int current_line;
|
||||||
static int pending_newline = 0; /* did last write end with unprinted newline? */
|
static int pending_newline = 0; /* did last write end with unprinted newline? */
|
||||||
|
|
|
@ -154,7 +154,7 @@ EXPORT_SYMBOL_GPL(of_node_to_nid);
|
||||||
* characteristics relative to its multiple connections. We ignore
|
* characteristics relative to its multiple connections. We ignore
|
||||||
* this for now. We also assume that all cpu and memory sets have
|
* this for now. We also assume that all cpu and memory sets have
|
||||||
* their distances represented at a common level. This won't be
|
* their distances represented at a common level. This won't be
|
||||||
* true for heirarchical NUMA.
|
* true for hierarchical NUMA.
|
||||||
*
|
*
|
||||||
* In any case the ibm,associativity-reference-points should give
|
* In any case the ibm,associativity-reference-points should give
|
||||||
* the correct depth for a normal NUMA system.
|
* the correct depth for a normal NUMA system.
|
||||||
|
|
|
@ -18,8 +18,8 @@
|
||||||
#include <asm/freq.h>
|
#include <asm/freq.h>
|
||||||
#include <asm/io.h>
|
#include <asm/io.h>
|
||||||
|
|
||||||
const static int pll1rate[]={1,2};
|
static const int pll1rate[] = {1,2};
|
||||||
const static int pfc_divisors[]={1,2,0,4};
|
static const int pfc_divisors[] = {1,2,0,4};
|
||||||
|
|
||||||
#if (CONFIG_SH_CLK_MD == 1) || (CONFIG_SH_CLK_MD == 2)
|
#if (CONFIG_SH_CLK_MD == 1) || (CONFIG_SH_CLK_MD == 2)
|
||||||
#define PLL2 (4)
|
#define PLL2 (4)
|
||||||
|
|
|
@ -18,8 +18,8 @@
|
||||||
#include <asm/freq.h>
|
#include <asm/freq.h>
|
||||||
#include <asm/io.h>
|
#include <asm/io.h>
|
||||||
|
|
||||||
const static int pll1rate[]={1,2,3,4,6,8};
|
static const int pll1rate[]={1,2,3,4,6,8};
|
||||||
const static int pfc_divisors[]={1,2,3,4,6,8,12};
|
static const int pfc_divisors[]={1,2,3,4,6,8,12};
|
||||||
#define ifc_divisors pfc_divisors
|
#define ifc_divisors pfc_divisors
|
||||||
|
|
||||||
#if (CONFIG_SH_CLK_MD == 2)
|
#if (CONFIG_SH_CLK_MD == 2)
|
||||||
|
|
|
@ -217,7 +217,7 @@ menu "Processor type and features"
|
||||||
# Some platforms pre-zero memory, in which case the kernel doesn't need to
|
# Some platforms pre-zero memory, in which case the kernel doesn't need to
|
||||||
config ZERO_BSS
|
config ZERO_BSS
|
||||||
bool
|
bool
|
||||||
depends !V850E2_SIM85E2C
|
depends on !V850E2_SIM85E2C
|
||||||
default y
|
default y
|
||||||
|
|
||||||
# The crappy-ass zone allocator requires that the start of allocatable
|
# The crappy-ass zone allocator requires that the start of allocatable
|
||||||
|
|
|
@ -418,7 +418,7 @@ static struct sysdev_class timer_sysclass = {
|
||||||
set_kset_name("timer"),
|
set_kset_name("timer"),
|
||||||
};
|
};
|
||||||
|
|
||||||
/* XXX this driverfs stuff should probably go elsewhere later -john */
|
/* XXX this sysfs stuff should probably go elsewhere later -john */
|
||||||
static struct sys_device device_timer = {
|
static struct sys_device device_timer = {
|
||||||
.id = 0,
|
.id = 0,
|
||||||
.cls = &timer_sysclass,
|
.cls = &timer_sysclass,
|
||||||
|
|
|
@ -16,10 +16,10 @@ config IOSCHED_AS
|
||||||
tristate "Anticipatory I/O scheduler"
|
tristate "Anticipatory I/O scheduler"
|
||||||
default y
|
default y
|
||||||
---help---
|
---help---
|
||||||
The anticipatory I/O scheduler is the default disk scheduler. It is
|
The anticipatory I/O scheduler is generally a good choice for most
|
||||||
generally a good choice for most environments, but is quite large and
|
environments, but is quite large and complex when compared to the
|
||||||
complex when compared to the deadline I/O scheduler, it can also be
|
deadline I/O scheduler, it can also be slower in some cases
|
||||||
slower in some cases especially some database loads.
|
especially some database loads.
|
||||||
|
|
||||||
config IOSCHED_DEADLINE
|
config IOSCHED_DEADLINE
|
||||||
tristate "Deadline I/O scheduler"
|
tristate "Deadline I/O scheduler"
|
||||||
|
@ -38,6 +38,7 @@ config IOSCHED_CFQ
|
||||||
The CFQ I/O scheduler tries to distribute bandwidth equally
|
The CFQ I/O scheduler tries to distribute bandwidth equally
|
||||||
among all processes in the system. It should provide a fair
|
among all processes in the system. It should provide a fair
|
||||||
working environment, suitable for desktop systems.
|
working environment, suitable for desktop systems.
|
||||||
|
This is the default I/O scheduler.
|
||||||
|
|
||||||
choice
|
choice
|
||||||
prompt "Default I/O scheduler"
|
prompt "Default I/O scheduler"
|
||||||
|
|
|
@ -103,7 +103,7 @@ static SYSDEV_ATTR(crash_notes, 0400, show_crash_notes, NULL);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* register_cpu - Setup a driverfs device for a CPU.
|
* register_cpu - Setup a sysfs device for a CPU.
|
||||||
* @cpu - cpu->hotpluggable field set to 1 will generate a control file in
|
* @cpu - cpu->hotpluggable field set to 1 will generate a control file in
|
||||||
* sysfs for this CPU.
|
* sysfs for this CPU.
|
||||||
* @num - CPU number to use when creating the device.
|
* @num - CPU number to use when creating the device.
|
||||||
|
|
|
@ -133,7 +133,7 @@ static SYSDEV_ATTR(distance, S_IRUGO, node_read_distance, NULL);
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* register_node - Setup a driverfs device for a node.
|
* register_node - Setup a sysfs device for a node.
|
||||||
* @num - Node number to use when creating the device.
|
* @num - Node number to use when creating the device.
|
||||||
*
|
*
|
||||||
* Initialize and register the node device.
|
* Initialize and register the node device.
|
||||||
|
|
|
@ -1146,7 +1146,7 @@ static int __init rio_init(void)
|
||||||
rio_dprintk(RIO_DEBUG_INIT, "Enabling interrupts on rio card.\n");
|
rio_dprintk(RIO_DEBUG_INIT, "Enabling interrupts on rio card.\n");
|
||||||
hp->Mode |= RIO_PCI_INT_ENABLE;
|
hp->Mode |= RIO_PCI_INT_ENABLE;
|
||||||
} else
|
} else
|
||||||
hp->Mode &= !RIO_PCI_INT_ENABLE;
|
hp->Mode &= ~RIO_PCI_INT_ENABLE;
|
||||||
rio_dprintk(RIO_DEBUG_INIT, "New Mode: %x\n", hp->Mode);
|
rio_dprintk(RIO_DEBUG_INIT, "New Mode: %x\n", hp->Mode);
|
||||||
rio_start_card_running(hp);
|
rio_start_card_running(hp);
|
||||||
}
|
}
|
||||||
|
|
|
@ -494,7 +494,7 @@ static int __devinit ali1535_probe(struct pci_dev *dev, const struct pci_device_
|
||||||
return -ENODEV;
|
return -ENODEV;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* set up the driverfs linkage to our parent device */
|
/* set up the sysfs linkage to our parent device */
|
||||||
ali1535_adapter.dev.parent = &dev->dev;
|
ali1535_adapter.dev.parent = &dev->dev;
|
||||||
|
|
||||||
snprintf(ali1535_adapter.name, I2C_NAME_SIZE,
|
snprintf(ali1535_adapter.name, I2C_NAME_SIZE,
|
||||||
|
|
|
@ -489,7 +489,7 @@ static int __devinit ali15x3_probe(struct pci_dev *dev, const struct pci_device_
|
||||||
return -ENODEV;
|
return -ENODEV;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* set up the driverfs linkage to our parent device */
|
/* set up the sysfs linkage to our parent device */
|
||||||
ali15x3_adapter.dev.parent = &dev->dev;
|
ali15x3_adapter.dev.parent = &dev->dev;
|
||||||
|
|
||||||
snprintf(ali15x3_adapter.name, I2C_NAME_SIZE,
|
snprintf(ali15x3_adapter.name, I2C_NAME_SIZE,
|
||||||
|
|
|
@ -374,7 +374,7 @@ static int __devinit amd756_probe(struct pci_dev *pdev,
|
||||||
dev_dbg(&pdev->dev, "SMBREV = 0x%X\n", temp);
|
dev_dbg(&pdev->dev, "SMBREV = 0x%X\n", temp);
|
||||||
dev_dbg(&pdev->dev, "AMD756_smba = 0x%X\n", amd756_ioport);
|
dev_dbg(&pdev->dev, "AMD756_smba = 0x%X\n", amd756_ioport);
|
||||||
|
|
||||||
/* set up the driverfs linkage to our parent device */
|
/* set up the sysfs linkage to our parent device */
|
||||||
amd756_smbus.dev.parent = &pdev->dev;
|
amd756_smbus.dev.parent = &pdev->dev;
|
||||||
|
|
||||||
sprintf(amd756_smbus.name, "SMBus %s adapter at %04x",
|
sprintf(amd756_smbus.name, "SMBus %s adapter at %04x",
|
||||||
|
|
|
@ -371,7 +371,7 @@ static int __devinit amd8111_probe(struct pci_dev *dev,
|
||||||
smbus->adapter.algo = &smbus_algorithm;
|
smbus->adapter.algo = &smbus_algorithm;
|
||||||
smbus->adapter.algo_data = smbus;
|
smbus->adapter.algo_data = smbus;
|
||||||
|
|
||||||
/* set up the driverfs linkage to our parent device */
|
/* set up the sysfs linkage to our parent device */
|
||||||
smbus->adapter.dev.parent = &dev->dev;
|
smbus->adapter.dev.parent = &dev->dev;
|
||||||
|
|
||||||
pci_write_config_dword(smbus->dev, AMD_PCI_MISC, 0);
|
pci_write_config_dword(smbus->dev, AMD_PCI_MISC, 0);
|
||||||
|
|
|
@ -522,7 +522,7 @@ static int __devinit i801_probe(struct pci_dev *dev, const struct pci_device_id
|
||||||
else
|
else
|
||||||
dev_dbg(&dev->dev, "SMBus using PCI Interrupt\n");
|
dev_dbg(&dev->dev, "SMBus using PCI Interrupt\n");
|
||||||
|
|
||||||
/* set up the driverfs linkage to our parent device */
|
/* set up the sysfs linkage to our parent device */
|
||||||
i801_adapter.dev.parent = &dev->dev;
|
i801_adapter.dev.parent = &dev->dev;
|
||||||
|
|
||||||
snprintf(i801_adapter.name, I2C_NAME_SIZE,
|
snprintf(i801_adapter.name, I2C_NAME_SIZE,
|
||||||
|
|
|
@ -425,7 +425,7 @@ static int __devinit piix4_probe(struct pci_dev *dev,
|
||||||
if (retval)
|
if (retval)
|
||||||
return retval;
|
return retval;
|
||||||
|
|
||||||
/* set up the driverfs linkage to our parent device */
|
/* set up the sysfs linkage to our parent device */
|
||||||
piix4_adapter.dev.parent = &dev->dev;
|
piix4_adapter.dev.parent = &dev->dev;
|
||||||
|
|
||||||
snprintf(piix4_adapter.name, I2C_NAME_SIZE,
|
snprintf(piix4_adapter.name, I2C_NAME_SIZE,
|
||||||
|
|
|
@ -384,7 +384,7 @@ static int __devinit sis5595_probe(struct pci_dev *dev, const struct pci_device_
|
||||||
return -ENODEV;
|
return -ENODEV;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* set up the driverfs linkage to our parent device */
|
/* set up the sysfs linkage to our parent device */
|
||||||
sis5595_adapter.dev.parent = &dev->dev;
|
sis5595_adapter.dev.parent = &dev->dev;
|
||||||
|
|
||||||
sprintf(sis5595_adapter.name, "SMBus SIS5595 adapter at %04x",
|
sprintf(sis5595_adapter.name, "SMBus SIS5595 adapter at %04x",
|
||||||
|
|
|
@ -477,7 +477,7 @@ static int __devinit sis630_probe(struct pci_dev *dev, const struct pci_device_i
|
||||||
return -ENODEV;
|
return -ENODEV;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* set up the driverfs linkage to our parent device */
|
/* set up the sysfs linkage to our parent device */
|
||||||
sis630_adapter.dev.parent = &dev->dev;
|
sis630_adapter.dev.parent = &dev->dev;
|
||||||
|
|
||||||
sprintf(sis630_adapter.name, "SMBus SIS630 adapter at %04x",
|
sprintf(sis630_adapter.name, "SMBus SIS630 adapter at %04x",
|
||||||
|
|
|
@ -297,7 +297,7 @@ static int __devinit sis96x_probe(struct pci_dev *dev,
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* set up the driverfs linkage to our parent device */
|
/* set up the sysfs linkage to our parent device */
|
||||||
sis96x_adapter.dev.parent = &dev->dev;
|
sis96x_adapter.dev.parent = &dev->dev;
|
||||||
|
|
||||||
snprintf(sis96x_adapter.name, I2C_NAME_SIZE,
|
snprintf(sis96x_adapter.name, I2C_NAME_SIZE,
|
||||||
|
|
|
@ -138,7 +138,7 @@ static int __devinit vt586b_probe(struct pci_dev *dev, const struct pci_device_i
|
||||||
outb(inb(I2C_DIR) & ~(I2C_SDA | I2C_SCL), I2C_DIR);
|
outb(inb(I2C_DIR) & ~(I2C_SDA | I2C_SCL), I2C_DIR);
|
||||||
outb(inb(I2C_OUT) & ~(I2C_SDA | I2C_SCL), I2C_OUT);
|
outb(inb(I2C_OUT) & ~(I2C_SDA | I2C_SCL), I2C_OUT);
|
||||||
|
|
||||||
/* set up the driverfs linkage to our parent device */
|
/* set up the sysfs linkage to our parent device */
|
||||||
vt586b_adapter.dev.parent = &dev->dev;
|
vt586b_adapter.dev.parent = &dev->dev;
|
||||||
|
|
||||||
res = i2c_bit_add_bus(&vt586b_adapter);
|
res = i2c_bit_add_bus(&vt586b_adapter);
|
||||||
|
|
|
@ -383,6 +383,9 @@ config BLK_DEV_OFFBOARD
|
||||||
config BLK_DEV_GENERIC
|
config BLK_DEV_GENERIC
|
||||||
tristate "Generic PCI IDE Chipset Support"
|
tristate "Generic PCI IDE Chipset Support"
|
||||||
depends on BLK_DEV_IDEPCI
|
depends on BLK_DEV_IDEPCI
|
||||||
|
help
|
||||||
|
This option provides generic support for various PCI IDE Chipsets
|
||||||
|
which otherwise might not be supported.
|
||||||
|
|
||||||
config BLK_DEV_OPTI621
|
config BLK_DEV_OPTI621
|
||||||
tristate "OPTi 82C621 chipset enhanced support (EXPERIMENTAL)"
|
tristate "OPTi 82C621 chipset enhanced support (EXPERIMENTAL)"
|
||||||
|
|
|
@ -180,7 +180,7 @@ static int alloc_dma_trm_ctx(struct ti_ohci *ohci, struct dma_trm_ctx *d,
|
||||||
static void ohci1394_pci_remove(struct pci_dev *pdev);
|
static void ohci1394_pci_remove(struct pci_dev *pdev);
|
||||||
|
|
||||||
#ifndef __LITTLE_ENDIAN
|
#ifndef __LITTLE_ENDIAN
|
||||||
const static size_t hdr_sizes[] = {
|
static const size_t hdr_sizes[] = {
|
||||||
3, /* TCODE_WRITEQ */
|
3, /* TCODE_WRITEQ */
|
||||||
4, /* TCODE_WRITEB */
|
4, /* TCODE_WRITEB */
|
||||||
3, /* TCODE_WRITE_RESPONSE */
|
3, /* TCODE_WRITE_RESPONSE */
|
||||||
|
|
|
@ -1534,7 +1534,7 @@ static int ipath_ht_early_init(struct ipath_devdata *dd)
|
||||||
* @kbase: ipath_base_info pointer
|
* @kbase: ipath_base_info pointer
|
||||||
*
|
*
|
||||||
* We set the PCIE flag because the lower bandwidth on PCIe vs
|
* We set the PCIE flag because the lower bandwidth on PCIe vs
|
||||||
* HyperTransport can affect some user packet algorithims.
|
* HyperTransport can affect some user packet algorithms.
|
||||||
*/
|
*/
|
||||||
static int ipath_ht_get_base_info(struct ipath_portdata *pd, void *kbase)
|
static int ipath_ht_get_base_info(struct ipath_portdata *pd, void *kbase)
|
||||||
{
|
{
|
||||||
|
|
|
@ -1293,7 +1293,7 @@ int __attribute__((weak)) ipath_unordered_wc(void)
|
||||||
* @kbase: ipath_base_info pointer
|
* @kbase: ipath_base_info pointer
|
||||||
*
|
*
|
||||||
* We set the PCIE flag because the lower bandwidth on PCIe vs
|
* We set the PCIE flag because the lower bandwidth on PCIe vs
|
||||||
* HyperTransport can affect some user packet algorithims.
|
* HyperTransport can affect some user packet algorithms.
|
||||||
*/
|
*/
|
||||||
static int ipath_pe_get_base_info(struct ipath_portdata *pd, void *kbase)
|
static int ipath_pe_get_base_info(struct ipath_portdata *pd, void *kbase)
|
||||||
{
|
{
|
||||||
|
|
|
@ -97,7 +97,7 @@ EXPORT_SYMBOL(ps2_drain);
|
||||||
|
|
||||||
int ps2_is_keyboard_id(char id_byte)
|
int ps2_is_keyboard_id(char id_byte)
|
||||||
{
|
{
|
||||||
const static char keyboard_ids[] = {
|
static const char keyboard_ids[] = {
|
||||||
0xab, /* Regular keyboards */
|
0xab, /* Regular keyboards */
|
||||||
0xac, /* NCD Sun keyboard */
|
0xac, /* NCD Sun keyboard */
|
||||||
0x2b, /* Trust keyboard, translated */
|
0x2b, /* Trust keyboard, translated */
|
||||||
|
|
|
@ -1680,7 +1680,7 @@ static void isdn_ppp_mp_receive(isdn_net_dev * net_dev, isdn_net_local * lp,
|
||||||
* - we hit a gap in the sequence, so no reassembly/processing is
|
* - we hit a gap in the sequence, so no reassembly/processing is
|
||||||
* possible ('start' would be set to NULL)
|
* possible ('start' would be set to NULL)
|
||||||
*
|
*
|
||||||
* algorightm for this code is derived from code in the book
|
* algorithm for this code is derived from code in the book
|
||||||
* 'PPP Design And Debugging' by James Carlson (Addison-Wesley)
|
* 'PPP Design And Debugging' by James Carlson (Addison-Wesley)
|
||||||
*/
|
*/
|
||||||
while (start != NULL || newfrag != NULL) {
|
while (start != NULL || newfrag != NULL) {
|
||||||
|
|
|
@ -915,7 +915,7 @@ static int dvb_frontend_ioctl(struct inode *inode, struct file *file,
|
||||||
fetunesettings.parameters.inversion = INVERSION_AUTO;
|
fetunesettings.parameters.inversion = INVERSION_AUTO;
|
||||||
}
|
}
|
||||||
if (fe->ops.info.type == FE_OFDM) {
|
if (fe->ops.info.type == FE_OFDM) {
|
||||||
/* without hierachical coding code_rate_LP is irrelevant,
|
/* without hierarchical coding code_rate_LP is irrelevant,
|
||||||
* so we tolerate the otherwise invalid FEC_NONE setting */
|
* so we tolerate the otherwise invalid FEC_NONE setting */
|
||||||
if (fepriv->parameters.u.ofdm.hierarchy_information == HIERARCHY_NONE &&
|
if (fepriv->parameters.u.ofdm.hierarchy_information == HIERARCHY_NONE &&
|
||||||
fepriv->parameters.u.ofdm.code_rate_LP == FEC_NONE)
|
fepriv->parameters.u.ofdm.code_rate_LP == FEC_NONE)
|
||||||
|
|
|
@ -239,7 +239,7 @@ static int dib3000mb_set_frontend(struct dvb_frontend* fe,
|
||||||
default:
|
default:
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
deb_setf("hierachy: ");
|
deb_setf("hierarchy: ");
|
||||||
switch (ofdm->hierarchy_information) {
|
switch (ofdm->hierarchy_information) {
|
||||||
case HIERARCHY_NONE:
|
case HIERARCHY_NONE:
|
||||||
deb_setf("none ");
|
deb_setf("none ");
|
||||||
|
|
|
@ -158,7 +158,7 @@ static unsigned int pvr2_msp3400_describe(struct pvr2_msp3400_handler *ctxt,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
const static struct pvr2_i2c_handler_functions msp3400_funcs = {
|
static const struct pvr2_i2c_handler_functions msp3400_funcs = {
|
||||||
.detach = (void (*)(void *))pvr2_msp3400_detach,
|
.detach = (void (*)(void *))pvr2_msp3400_detach,
|
||||||
.check = (int (*)(void *))msp3400_check,
|
.check = (int (*)(void *))msp3400_check,
|
||||||
.update = (void (*)(void *))msp3400_update,
|
.update = (void (*)(void *))msp3400_update,
|
||||||
|
|
|
@ -226,7 +226,7 @@ static void decoder_reset(struct pvr2_v4l_cx2584x *ctxt)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
const static struct pvr2_i2c_handler_functions hfuncs = {
|
static const struct pvr2_i2c_handler_functions hfuncs = {
|
||||||
.detach = (void (*)(void *))decoder_detach,
|
.detach = (void (*)(void *))decoder_detach,
|
||||||
.check = (int (*)(void *))decoder_check,
|
.check = (int (*)(void *))decoder_check,
|
||||||
.update = (void (*)(void *))decoder_update,
|
.update = (void (*)(void *))decoder_update,
|
||||||
|
|
|
@ -78,14 +78,14 @@ struct std_name {
|
||||||
#define CSTD_ALL (CSTD_PAL|CSTD_NTSC|CSTD_SECAM)
|
#define CSTD_ALL (CSTD_PAL|CSTD_NTSC|CSTD_SECAM)
|
||||||
|
|
||||||
/* Mapping of standard bits to color system */
|
/* Mapping of standard bits to color system */
|
||||||
const static struct std_name std_groups[] = {
|
static const struct std_name std_groups[] = {
|
||||||
{"PAL",CSTD_PAL},
|
{"PAL",CSTD_PAL},
|
||||||
{"NTSC",CSTD_NTSC},
|
{"NTSC",CSTD_NTSC},
|
||||||
{"SECAM",CSTD_SECAM},
|
{"SECAM",CSTD_SECAM},
|
||||||
};
|
};
|
||||||
|
|
||||||
/* Mapping of standard bits to modulation system */
|
/* Mapping of standard bits to modulation system */
|
||||||
const static struct std_name std_items[] = {
|
static const struct std_name std_items[] = {
|
||||||
{"B",TSTD_B},
|
{"B",TSTD_B},
|
||||||
{"B1",TSTD_B1},
|
{"B1",TSTD_B1},
|
||||||
{"D",TSTD_D},
|
{"D",TSTD_D},
|
||||||
|
|
|
@ -80,7 +80,7 @@ static unsigned int pvr2_tuner_describe(struct pvr2_tuner_handler *ctxt,char *bu
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
const static struct pvr2_i2c_handler_functions tuner_funcs = {
|
static const struct pvr2_i2c_handler_functions tuner_funcs = {
|
||||||
.detach = (void (*)(void *))pvr2_tuner_detach,
|
.detach = (void (*)(void *))pvr2_tuner_detach,
|
||||||
.check = (int (*)(void *))tuner_check,
|
.check = (int (*)(void *))tuner_check,
|
||||||
.update = (void (*)(void *))tuner_update,
|
.update = (void (*)(void *))tuner_update,
|
||||||
|
|
|
@ -201,7 +201,7 @@ static unsigned int decoder_describe(struct pvr2_v4l_decoder *ctxt,char *buf,uns
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
const static struct pvr2_i2c_handler_functions hfuncs = {
|
static const struct pvr2_i2c_handler_functions hfuncs = {
|
||||||
.detach = (void (*)(void *))decoder_detach,
|
.detach = (void (*)(void *))decoder_detach,
|
||||||
.check = (int (*)(void *))decoder_check,
|
.check = (int (*)(void *))decoder_check,
|
||||||
.update = (void (*)(void *))decoder_update,
|
.update = (void (*)(void *))decoder_update,
|
||||||
|
|
|
@ -126,7 +126,7 @@ static void wm8775_update(struct pvr2_v4l_wm8775 *ctxt)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
const static struct pvr2_i2c_handler_functions hfuncs = {
|
static const struct pvr2_i2c_handler_functions hfuncs = {
|
||||||
.detach = (void (*)(void *))wm8775_detach,
|
.detach = (void (*)(void *))wm8775_detach,
|
||||||
.check = (int (*)(void *))wm8775_check,
|
.check = (int (*)(void *))wm8775_check,
|
||||||
.update = (void (*)(void *))wm8775_update,
|
.update = (void (*)(void *))wm8775_update,
|
||||||
|
|
|
@ -3253,7 +3253,7 @@ struct e1000_host_command_info {
|
||||||
#define IFE_PMC_AUTO_MDIX 0x0080 /* 1=enable MDI/MDI-X feature, default 0=disabled */
|
#define IFE_PMC_AUTO_MDIX 0x0080 /* 1=enable MDI/MDI-X feature, default 0=disabled */
|
||||||
#define IFE_PMC_FORCE_MDIX 0x0040 /* 1=force MDIX-X, 0=force MDI */
|
#define IFE_PMC_FORCE_MDIX 0x0040 /* 1=force MDIX-X, 0=force MDI */
|
||||||
#define IFE_PMC_MDIX_STATUS 0x0020 /* 1=MDI-X, 0=MDI */
|
#define IFE_PMC_MDIX_STATUS 0x0020 /* 1=MDI-X, 0=MDI */
|
||||||
#define IFE_PMC_AUTO_MDIX_COMPLETE 0x0010 /* Resolution algorthm is completed */
|
#define IFE_PMC_AUTO_MDIX_COMPLETE 0x0010 /* Resolution algorithm is completed */
|
||||||
#define IFE_PMC_MDIX_MODE_SHIFT 6
|
#define IFE_PMC_MDIX_MODE_SHIFT 6
|
||||||
#define IFE_PHC_MDIX_RESET_ALL_MASK 0x0000 /* Disable auto MDI-X */
|
#define IFE_PHC_MDIX_RESET_ALL_MASK 0x0000 /* Disable auto MDI-X */
|
||||||
|
|
||||||
|
|
|
@ -707,13 +707,6 @@ static int eexp_xmit(struct sk_buff *buf, struct net_device *dev)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
* Handle an EtherExpress interrupt
|
|
||||||
* If we've finished initializing, start the RU and CU up.
|
|
||||||
* If we've already started, reap tx buffers, handle any received packets,
|
|
||||||
* check to make sure we've not become wedged.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Handle an EtherExpress interrupt
|
* Handle an EtherExpress interrupt
|
||||||
* If we've finished initializing, start the RU and CU up.
|
* If we've finished initializing, start the RU and CU up.
|
||||||
|
|
|
@ -138,7 +138,7 @@ config BAYCOM_SER_HDX
|
||||||
---help---
|
---help---
|
||||||
This is one of two drivers for Baycom style simple amateur radio
|
This is one of two drivers for Baycom style simple amateur radio
|
||||||
modems that connect to a serial interface. The driver supports the
|
modems that connect to a serial interface. The driver supports the
|
||||||
ser12 design in full-duplex mode. This is the old driver. It is
|
ser12 design in half-duplex mode. This is the old driver. It is
|
||||||
still provided in case your serial interface chip does not work with
|
still provided in case your serial interface chip does not work with
|
||||||
the full-duplex driver. This driver is depreciated. To configure
|
the full-duplex driver. This driver is depreciated. To configure
|
||||||
the driver, use the sethdlc utility available in the standard ax25
|
the driver, use the sethdlc utility available in the standard ax25
|
||||||
|
@ -190,3 +190,4 @@ config YAM
|
||||||
To compile this driver as a module, choose M here: the module
|
To compile this driver as a module, choose M here: the module
|
||||||
will be called yam.
|
will be called yam.
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1168,7 +1168,7 @@ wv_mmc_show(struct net_device * dev)
|
||||||
m.mmr_unused0[6],
|
m.mmr_unused0[6],
|
||||||
m.mmr_unused0[7]);
|
m.mmr_unused0[7]);
|
||||||
#endif /* DEBUG_SHOW_UNUSED */
|
#endif /* DEBUG_SHOW_UNUSED */
|
||||||
printk(KERN_DEBUG "Encryption algorythm: %02X - Status: %02X\n",
|
printk(KERN_DEBUG "Encryption algorithm: %02X - Status: %02X\n",
|
||||||
m.mmr_des_avail, m.mmr_des_status);
|
m.mmr_des_avail, m.mmr_des_status);
|
||||||
#ifdef DEBUG_SHOW_UNUSED
|
#ifdef DEBUG_SHOW_UNUSED
|
||||||
printk(KERN_DEBUG "mmc_unused1[]: %02X:%02X:%02X:%02X:%02X\n",
|
printk(KERN_DEBUG "mmc_unused1[]: %02X:%02X:%02X:%02X:%02X\n",
|
||||||
|
@ -3590,9 +3590,9 @@ wv_82593_config(struct net_device * dev)
|
||||||
cfblk.acloc = TRUE; /* Disable source addr insertion by i82593 */
|
cfblk.acloc = TRUE; /* Disable source addr insertion by i82593 */
|
||||||
cfblk.preamb_len = 0; /* 2 bytes preamble (SFD) */
|
cfblk.preamb_len = 0; /* 2 bytes preamble (SFD) */
|
||||||
cfblk.loopback = FALSE;
|
cfblk.loopback = FALSE;
|
||||||
cfblk.lin_prio = 0; /* conform to 802.3 backoff algoritm */
|
cfblk.lin_prio = 0; /* conform to 802.3 backoff algorithm */
|
||||||
cfblk.exp_prio = 5; /* conform to 802.3 backoff algoritm */
|
cfblk.exp_prio = 5; /* conform to 802.3 backoff algorithm */
|
||||||
cfblk.bof_met = 1; /* conform to 802.3 backoff algoritm */
|
cfblk.bof_met = 1; /* conform to 802.3 backoff algorithm */
|
||||||
cfblk.ifrm_spc = 0x20 >> 4; /* 32 bit times interframe spacing */
|
cfblk.ifrm_spc = 0x20 >> 4; /* 32 bit times interframe spacing */
|
||||||
cfblk.slottim_low = 0x20 >> 5; /* 32 bit times slot time */
|
cfblk.slottim_low = 0x20 >> 5; /* 32 bit times slot time */
|
||||||
cfblk.slottim_hi = 0x0;
|
cfblk.slottim_hi = 0x0;
|
||||||
|
|
|
@ -85,7 +85,7 @@ struct aer_rpc {
|
||||||
struct mutex rpc_mutex; /*
|
struct mutex rpc_mutex; /*
|
||||||
* only one thread could do
|
* only one thread could do
|
||||||
* recovery on the same
|
* recovery on the same
|
||||||
* root port hierachy
|
* root port hierarchy
|
||||||
*/
|
*/
|
||||||
wait_queue_head_t wait_release;
|
wait_queue_head_t wait_release;
|
||||||
};
|
};
|
||||||
|
|
|
@ -40,8 +40,6 @@
|
||||||
|
|
||||||
/*====================================================================*/
|
/*====================================================================*/
|
||||||
|
|
||||||
#define FIND_FIRST_BIT(n) ((n) - ((n) & ((n)-1)))
|
|
||||||
|
|
||||||
/* Offsets in the Expansion ROM Image Header */
|
/* Offsets in the Expansion ROM Image Header */
|
||||||
#define ROM_SIGNATURE 0x0000 /* 2 bytes */
|
#define ROM_SIGNATURE 0x0000 /* 2 bytes */
|
||||||
#define ROM_DATA_PTR 0x0018 /* 2 bytes */
|
#define ROM_DATA_PTR 0x0018 /* 2 bytes */
|
||||||
|
|
|
@ -14,7 +14,7 @@
|
||||||
/* NOTE: It seems to me that the documentation regarding the
|
/* NOTE: It seems to me that the documentation regarding the
|
||||||
pcd8584t/pcf8584 does not show the correct way to address the i2c bus.
|
pcd8584t/pcf8584 does not show the correct way to address the i2c bus.
|
||||||
Based on the information on the I2C bus itself and the remainder of
|
Based on the information on the I2C bus itself and the remainder of
|
||||||
the Phillips docs the following algorithims apper to be correct. I am
|
the Phillips docs the following algorithms appear to be correct. I am
|
||||||
fairly certain that the flowcharts in the phillips docs are wrong. */
|
fairly certain that the flowcharts in the phillips docs are wrong. */
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -230,6 +230,7 @@ config SCSI_SCAN_ASYNC
|
||||||
The SCSI subsystem can probe for devices while the rest of the
|
The SCSI subsystem can probe for devices while the rest of the
|
||||||
system continues booting, and even probe devices on different
|
system continues booting, and even probe devices on different
|
||||||
busses in parallel, leading to a significant speed-up.
|
busses in parallel, leading to a significant speed-up.
|
||||||
|
|
||||||
If you have built SCSI as modules, enabling this option can
|
If you have built SCSI as modules, enabling this option can
|
||||||
be a problem as the devices may not have been found by the
|
be a problem as the devices may not have been found by the
|
||||||
time your system expects them to have been. You can load the
|
time your system expects them to have been. You can load the
|
||||||
|
@ -237,8 +238,8 @@ config SCSI_SCAN_ASYNC
|
||||||
If you build your SCSI drivers into the kernel, then everything
|
If you build your SCSI drivers into the kernel, then everything
|
||||||
will work fine if you say Y here.
|
will work fine if you say Y here.
|
||||||
|
|
||||||
You can override this choice by specifying scsi_mod.scan="sync"
|
You can override this choice by specifying "scsi_mod.scan=sync"
|
||||||
or "async" on the kernel's command line.
|
or async on the kernel's command line.
|
||||||
|
|
||||||
menu "SCSI Transports"
|
menu "SCSI Transports"
|
||||||
depends on SCSI
|
depends on SCSI
|
||||||
|
|
|
@ -1067,7 +1067,7 @@ static int __devinit inia100_probe_one(struct pci_dev *pdev,
|
||||||
goto out_disable_device;
|
goto out_disable_device;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* <02> read from base address + 0x50 offset to get the bios balue. */
|
/* <02> read from base address + 0x50 offset to get the bios value. */
|
||||||
bios = ORC_RDWORD(port, 0x50);
|
bios = ORC_RDWORD(port, 0x50);
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -196,7 +196,7 @@ static void eesoxscsi_buffer_in(void *buf, int length, void __iomem *base)
|
||||||
const void __iomem *reg_fas = base + EESOX_FAS216_OFFSET;
|
const void __iomem *reg_fas = base + EESOX_FAS216_OFFSET;
|
||||||
const void __iomem *reg_dmastat = base + EESOX_DMASTAT;
|
const void __iomem *reg_dmastat = base + EESOX_DMASTAT;
|
||||||
const void __iomem *reg_dmadata = base + EESOX_DMADATA;
|
const void __iomem *reg_dmadata = base + EESOX_DMADATA;
|
||||||
const register unsigned long mask = 0xffff;
|
register const unsigned long mask = 0xffff;
|
||||||
|
|
||||||
do {
|
do {
|
||||||
unsigned int status;
|
unsigned int status;
|
||||||
|
|
|
@ -5574,14 +5574,14 @@ static ssize_t osst_version_show(struct device_driver *ddd, char *buf)
|
||||||
|
|
||||||
static DRIVER_ATTR(version, S_IRUGO, osst_version_show, NULL);
|
static DRIVER_ATTR(version, S_IRUGO, osst_version_show, NULL);
|
||||||
|
|
||||||
static int osst_create_driverfs_files(struct device_driver *driverfs)
|
static int osst_create_sysfs_files(struct device_driver *sysfs)
|
||||||
{
|
{
|
||||||
return driver_create_file(driverfs, &driver_attr_version);
|
return driver_create_file(sysfs, &driver_attr_version);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void osst_remove_driverfs_files(struct device_driver *driverfs)
|
static void osst_remove_sysfs_files(struct device_driver *sysfs)
|
||||||
{
|
{
|
||||||
driver_remove_file(driverfs, &driver_attr_version);
|
driver_remove_file(sysfs, &driver_attr_version);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -5953,7 +5953,7 @@ static int __init init_osst(void)
|
||||||
if (err)
|
if (err)
|
||||||
goto err_out_chrdev;
|
goto err_out_chrdev;
|
||||||
|
|
||||||
err = osst_create_driverfs_files(&osst_template.gendrv);
|
err = osst_create_sysfs_files(&osst_template.gendrv);
|
||||||
if (err)
|
if (err)
|
||||||
goto err_out_scsidrv;
|
goto err_out_scsidrv;
|
||||||
|
|
||||||
|
@ -5973,7 +5973,7 @@ static void __exit exit_osst (void)
|
||||||
int i;
|
int i;
|
||||||
struct osst_tape * STp;
|
struct osst_tape * STp;
|
||||||
|
|
||||||
osst_remove_driverfs_files(&osst_template.gendrv);
|
osst_remove_sysfs_files(&osst_template.gendrv);
|
||||||
scsi_unregister_driver(&osst_template.gendrv);
|
scsi_unregister_driver(&osst_template.gendrv);
|
||||||
unregister_chrdev(OSST_MAJOR, "osst");
|
unregister_chrdev(OSST_MAJOR, "osst");
|
||||||
osst_sysfs_cleanup();
|
osst_sysfs_cleanup();
|
||||||
|
|
|
@ -54,7 +54,7 @@
|
||||||
#define SCSI_TIMEOUT (2*HZ)
|
#define SCSI_TIMEOUT (2*HZ)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Prefix values for the SCSI id's (stored in driverfs name field)
|
* Prefix values for the SCSI id's (stored in sysfs name field)
|
||||||
*/
|
*/
|
||||||
#define SCSI_UID_SER_NUM 'S'
|
#define SCSI_UID_SER_NUM 'S'
|
||||||
#define SCSI_UID_UNKNOWN 'Z'
|
#define SCSI_UID_UNKNOWN 'Z'
|
||||||
|
|
|
@ -855,7 +855,7 @@ static FC_CLASS_DEVICE_ATTR(rport, fast_io_fail_tmo, S_IRUGO | S_IWUSR,
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Note: in the target show function we recognize when the remote
|
* Note: in the target show function we recognize when the remote
|
||||||
* port is in the heirarchy and do not allow the driver to get
|
* port is in the hierarchy and do not allow the driver to get
|
||||||
* involved in sysfs functions. The driver only gets involved if
|
* involved in sysfs functions. The driver only gets involved if
|
||||||
* it's the "old" style that doesn't use rports.
|
* it's the "old" style that doesn't use rports.
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -500,7 +500,7 @@ struct sas_phy *sas_phy_alloc(struct device *parent, int number)
|
||||||
EXPORT_SYMBOL(sas_phy_alloc);
|
EXPORT_SYMBOL(sas_phy_alloc);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* sas_phy_add -- add a SAS PHY to the device hierachy
|
* sas_phy_add -- add a SAS PHY to the device hierarchy
|
||||||
* @phy: The PHY to be added
|
* @phy: The PHY to be added
|
||||||
*
|
*
|
||||||
* Publishes a SAS PHY to the rest of the system.
|
* Publishes a SAS PHY to the rest of the system.
|
||||||
|
@ -1265,7 +1265,7 @@ struct sas_rphy *sas_expander_alloc(struct sas_port *parent,
|
||||||
EXPORT_SYMBOL(sas_expander_alloc);
|
EXPORT_SYMBOL(sas_expander_alloc);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* sas_rphy_add -- add a SAS remote PHY to the device hierachy
|
* sas_rphy_add -- add a SAS remote PHY to the device hierarchy
|
||||||
* @rphy: The remote PHY to be added
|
* @rphy: The remote PHY to be added
|
||||||
*
|
*
|
||||||
* Publishes a SAS remote PHY to the rest of the system.
|
* Publishes a SAS remote PHY to the rest of the system.
|
||||||
|
|
|
@ -195,8 +195,8 @@ static int sgl_unmap_user_pages(struct scatterlist *, const unsigned int, int);
|
||||||
static int st_probe(struct device *);
|
static int st_probe(struct device *);
|
||||||
static int st_remove(struct device *);
|
static int st_remove(struct device *);
|
||||||
|
|
||||||
static int do_create_driverfs_files(void);
|
static int do_create_sysfs_files(void);
|
||||||
static void do_remove_driverfs_files(void);
|
static void do_remove_sysfs_files(void);
|
||||||
static int do_create_class_files(struct scsi_tape *, int, int);
|
static int do_create_class_files(struct scsi_tape *, int, int);
|
||||||
|
|
||||||
static struct scsi_driver st_template = {
|
static struct scsi_driver st_template = {
|
||||||
|
@ -4193,7 +4193,7 @@ static int __init init_st(void)
|
||||||
if (err)
|
if (err)
|
||||||
goto err_chrdev;
|
goto err_chrdev;
|
||||||
|
|
||||||
err = do_create_driverfs_files();
|
err = do_create_sysfs_files();
|
||||||
if (err)
|
if (err)
|
||||||
goto err_scsidrv;
|
goto err_scsidrv;
|
||||||
|
|
||||||
|
@ -4211,7 +4211,7 @@ err_class:
|
||||||
|
|
||||||
static void __exit exit_st(void)
|
static void __exit exit_st(void)
|
||||||
{
|
{
|
||||||
do_remove_driverfs_files();
|
do_remove_sysfs_files();
|
||||||
scsi_unregister_driver(&st_template.gendrv);
|
scsi_unregister_driver(&st_template.gendrv);
|
||||||
unregister_chrdev_region(MKDEV(SCSI_TAPE_MAJOR, 0),
|
unregister_chrdev_region(MKDEV(SCSI_TAPE_MAJOR, 0),
|
||||||
ST_MAX_TAPE_ENTRIES);
|
ST_MAX_TAPE_ENTRIES);
|
||||||
|
@ -4249,43 +4249,43 @@ static ssize_t st_version_show(struct device_driver *ddd, char *buf)
|
||||||
}
|
}
|
||||||
static DRIVER_ATTR(version, S_IRUGO, st_version_show, NULL);
|
static DRIVER_ATTR(version, S_IRUGO, st_version_show, NULL);
|
||||||
|
|
||||||
static int do_create_driverfs_files(void)
|
static int do_create_sysfs_files(void)
|
||||||
{
|
{
|
||||||
struct device_driver *driverfs = &st_template.gendrv;
|
struct device_driver *sysfs = &st_template.gendrv;
|
||||||
int err;
|
int err;
|
||||||
|
|
||||||
err = driver_create_file(driverfs, &driver_attr_try_direct_io);
|
err = driver_create_file(sysfs, &driver_attr_try_direct_io);
|
||||||
if (err)
|
if (err)
|
||||||
return err;
|
return err;
|
||||||
err = driver_create_file(driverfs, &driver_attr_fixed_buffer_size);
|
err = driver_create_file(sysfs, &driver_attr_fixed_buffer_size);
|
||||||
if (err)
|
if (err)
|
||||||
goto err_try_direct_io;
|
goto err_try_direct_io;
|
||||||
err = driver_create_file(driverfs, &driver_attr_max_sg_segs);
|
err = driver_create_file(sysfs, &driver_attr_max_sg_segs);
|
||||||
if (err)
|
if (err)
|
||||||
goto err_attr_fixed_buf;
|
goto err_attr_fixed_buf;
|
||||||
err = driver_create_file(driverfs, &driver_attr_version);
|
err = driver_create_file(sysfs, &driver_attr_version);
|
||||||
if (err)
|
if (err)
|
||||||
goto err_attr_max_sg;
|
goto err_attr_max_sg;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
err_attr_max_sg:
|
err_attr_max_sg:
|
||||||
driver_remove_file(driverfs, &driver_attr_max_sg_segs);
|
driver_remove_file(sysfs, &driver_attr_max_sg_segs);
|
||||||
err_attr_fixed_buf:
|
err_attr_fixed_buf:
|
||||||
driver_remove_file(driverfs, &driver_attr_fixed_buffer_size);
|
driver_remove_file(sysfs, &driver_attr_fixed_buffer_size);
|
||||||
err_try_direct_io:
|
err_try_direct_io:
|
||||||
driver_remove_file(driverfs, &driver_attr_try_direct_io);
|
driver_remove_file(sysfs, &driver_attr_try_direct_io);
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void do_remove_driverfs_files(void)
|
static void do_remove_sysfs_files(void)
|
||||||
{
|
{
|
||||||
struct device_driver *driverfs = &st_template.gendrv;
|
struct device_driver *sysfs = &st_template.gendrv;
|
||||||
|
|
||||||
driver_remove_file(driverfs, &driver_attr_version);
|
driver_remove_file(sysfs, &driver_attr_version);
|
||||||
driver_remove_file(driverfs, &driver_attr_max_sg_segs);
|
driver_remove_file(sysfs, &driver_attr_max_sg_segs);
|
||||||
driver_remove_file(driverfs, &driver_attr_fixed_buffer_size);
|
driver_remove_file(sysfs, &driver_attr_fixed_buffer_size);
|
||||||
driver_remove_file(driverfs, &driver_attr_try_direct_io);
|
driver_remove_file(sysfs, &driver_attr_try_direct_io);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1020,7 +1020,7 @@ static struct SYM_FWA_SCR SYM_FWA_SCR = {
|
||||||
* It shall be a tagged command.
|
* It shall be a tagged command.
|
||||||
* Read SIMPLE+TAG.
|
* Read SIMPLE+TAG.
|
||||||
* The C code will deal with errors.
|
* The C code will deal with errors.
|
||||||
* Agressive optimization, is'nt it? :)
|
* Aggressive optimization, isn't it? :)
|
||||||
*/
|
*/
|
||||||
SCR_MOVE_ABS (2) ^ SCR_MSG_IN,
|
SCR_MOVE_ABS (2) ^ SCR_MSG_IN,
|
||||||
HADDR_1 (msgin),
|
HADDR_1 (msgin),
|
||||||
|
@ -1044,7 +1044,7 @@ static struct SYM_FWA_SCR SYM_FWA_SCR = {
|
||||||
RADDR_1 (dsa),
|
RADDR_1 (dsa),
|
||||||
/*
|
/*
|
||||||
* The SIDL still contains the TAG value.
|
* The SIDL still contains the TAG value.
|
||||||
* Agressive optimization, isn't it? :):)
|
* Aggressive optimization, isn't it? :):)
|
||||||
*/
|
*/
|
||||||
SCR_REG_SFBR (sidl, SCR_SHL, 0),
|
SCR_REG_SFBR (sidl, SCR_SHL, 0),
|
||||||
0,
|
0,
|
||||||
|
|
|
@ -956,7 +956,7 @@ static struct SYM_FWA_SCR SYM_FWA_SCR = {
|
||||||
* It shall be a tagged command.
|
* It shall be a tagged command.
|
||||||
* Read SIMPLE+TAG.
|
* Read SIMPLE+TAG.
|
||||||
* The C code will deal with errors.
|
* The C code will deal with errors.
|
||||||
* Agressive optimization, is'nt it? :)
|
* Aggressive optimization, isn't it? :)
|
||||||
*/
|
*/
|
||||||
SCR_MOVE_ABS (2) ^ SCR_MSG_IN,
|
SCR_MOVE_ABS (2) ^ SCR_MSG_IN,
|
||||||
HADDR_1 (msgin),
|
HADDR_1 (msgin),
|
||||||
|
@ -968,7 +968,7 @@ static struct SYM_FWA_SCR SYM_FWA_SCR = {
|
||||||
offsetof(struct sym_lcb, head.itlq_tbl_sa),
|
offsetof(struct sym_lcb, head.itlq_tbl_sa),
|
||||||
/*
|
/*
|
||||||
* The SIDL still contains the TAG value.
|
* The SIDL still contains the TAG value.
|
||||||
* Agressive optimization, isn't it? :):)
|
* Aggressive optimization, isn't it? :):)
|
||||||
*/
|
*/
|
||||||
SCR_REG_SFBR (sidl, SCR_SHL, 0),
|
SCR_REG_SFBR (sidl, SCR_SHL, 0),
|
||||||
0,
|
0,
|
||||||
|
|
|
@ -322,7 +322,7 @@ static inline void remove_debug_files (struct ehci_hcd *bus) { }
|
||||||
|
|
||||||
#else
|
#else
|
||||||
|
|
||||||
/* troubleshooting help: expose state in driverfs */
|
/* troubleshooting help: expose state in sysfs */
|
||||||
|
|
||||||
#define speed_char(info1) ({ char tmp; \
|
#define speed_char(info1) ({ char tmp; \
|
||||||
switch (info1 & (3 << 12)) { \
|
switch (info1 & (3 << 12)) { \
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
The CIFS VFS support for Linux supports many advanced network filesystem
|
The CIFS VFS support for Linux supports many advanced network filesystem
|
||||||
features such as heirarchical dfs like namespace, hardlinks, locking and more.
|
features such as hierarchical dfs like namespace, hardlinks, locking and more.
|
||||||
It was designed to comply with the SNIA CIFS Technical Reference (which
|
It was designed to comply with the SNIA CIFS Technical Reference (which
|
||||||
supersedes the 1992 X/Open SMB Standard) as well as to perform best practice
|
supersedes the 1992 X/Open SMB Standard) as well as to perform best practice
|
||||||
practical interoperability with Windows 2000, Windows XP, Samba and equivalent
|
practical interoperability with Windows 2000, Windows XP, Samba and equivalent
|
||||||
|
|
|
@ -2824,10 +2824,10 @@ GetExtAttrOut:
|
||||||
|
|
||||||
|
|
||||||
/* security id for everyone */
|
/* security id for everyone */
|
||||||
const static struct cifs_sid sid_everyone =
|
static const struct cifs_sid sid_everyone =
|
||||||
{1, 1, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0}};
|
{1, 1, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0}};
|
||||||
/* group users */
|
/* group users */
|
||||||
const static struct cifs_sid sid_user =
|
static const struct cifs_sid sid_user =
|
||||||
{1, 2 , {0, 0, 0, 0, 0, 5}, {32, 545, 0, 0}};
|
{1, 2 , {0, 0, 0, 0, 0, 5}, {32, 545, 0, 0}};
|
||||||
|
|
||||||
/* Convert CIFS ACL to POSIX form */
|
/* Convert CIFS ACL to POSIX form */
|
||||||
|
|
|
@ -222,7 +222,7 @@ static int ext4_ext_space_block(struct inode *inode)
|
||||||
|
|
||||||
size = (inode->i_sb->s_blocksize - sizeof(struct ext4_extent_header))
|
size = (inode->i_sb->s_blocksize - sizeof(struct ext4_extent_header))
|
||||||
/ sizeof(struct ext4_extent);
|
/ sizeof(struct ext4_extent);
|
||||||
#ifdef AGRESSIVE_TEST
|
#ifdef AGGRESSIVE_TEST
|
||||||
if (size > 6)
|
if (size > 6)
|
||||||
size = 6;
|
size = 6;
|
||||||
#endif
|
#endif
|
||||||
|
@ -235,7 +235,7 @@ static int ext4_ext_space_block_idx(struct inode *inode)
|
||||||
|
|
||||||
size = (inode->i_sb->s_blocksize - sizeof(struct ext4_extent_header))
|
size = (inode->i_sb->s_blocksize - sizeof(struct ext4_extent_header))
|
||||||
/ sizeof(struct ext4_extent_idx);
|
/ sizeof(struct ext4_extent_idx);
|
||||||
#ifdef AGRESSIVE_TEST
|
#ifdef AGGRESSIVE_TEST
|
||||||
if (size > 5)
|
if (size > 5)
|
||||||
size = 5;
|
size = 5;
|
||||||
#endif
|
#endif
|
||||||
|
@ -249,7 +249,7 @@ static int ext4_ext_space_root(struct inode *inode)
|
||||||
size = sizeof(EXT4_I(inode)->i_data);
|
size = sizeof(EXT4_I(inode)->i_data);
|
||||||
size -= sizeof(struct ext4_extent_header);
|
size -= sizeof(struct ext4_extent_header);
|
||||||
size /= sizeof(struct ext4_extent);
|
size /= sizeof(struct ext4_extent);
|
||||||
#ifdef AGRESSIVE_TEST
|
#ifdef AGGRESSIVE_TEST
|
||||||
if (size > 3)
|
if (size > 3)
|
||||||
size = 3;
|
size = 3;
|
||||||
#endif
|
#endif
|
||||||
|
@ -263,7 +263,7 @@ static int ext4_ext_space_root_idx(struct inode *inode)
|
||||||
size = sizeof(EXT4_I(inode)->i_data);
|
size = sizeof(EXT4_I(inode)->i_data);
|
||||||
size -= sizeof(struct ext4_extent_header);
|
size -= sizeof(struct ext4_extent_header);
|
||||||
size /= sizeof(struct ext4_extent_idx);
|
size /= sizeof(struct ext4_extent_idx);
|
||||||
#ifdef AGRESSIVE_TEST
|
#ifdef AGGRESSIVE_TEST
|
||||||
if (size > 4)
|
if (size > 4)
|
||||||
size = 4;
|
size = 4;
|
||||||
#endif
|
#endif
|
||||||
|
@ -1118,7 +1118,7 @@ ext4_can_extents_be_merged(struct inode *inode, struct ext4_extent *ex1,
|
||||||
*/
|
*/
|
||||||
if (le16_to_cpu(ex1->ee_len) + le16_to_cpu(ex2->ee_len) > EXT_MAX_LEN)
|
if (le16_to_cpu(ex1->ee_len) + le16_to_cpu(ex2->ee_len) > EXT_MAX_LEN)
|
||||||
return 0;
|
return 0;
|
||||||
#ifdef AGRESSIVE_TEST
|
#ifdef AGGRESSIVE_TEST
|
||||||
if (le16_to_cpu(ex1->ee_len) >= 4)
|
if (le16_to_cpu(ex1->ee_len) >= 4)
|
||||||
return 0;
|
return 0;
|
||||||
#endif
|
#endif
|
||||||
|
@ -1891,8 +1891,8 @@ void ext4_ext_init(struct super_block *sb)
|
||||||
|
|
||||||
if (test_opt(sb, EXTENTS)) {
|
if (test_opt(sb, EXTENTS)) {
|
||||||
printk("EXT4-fs: file extents enabled");
|
printk("EXT4-fs: file extents enabled");
|
||||||
#ifdef AGRESSIVE_TEST
|
#ifdef AGGRESSIVE_TEST
|
||||||
printk(", agressive tests");
|
printk(", aggressive tests");
|
||||||
#endif
|
#endif
|
||||||
#ifdef CHECK_BINSEARCH
|
#ifdef CHECK_BINSEARCH
|
||||||
printk(", check binsearch");
|
printk(", check binsearch");
|
||||||
|
|
|
@ -440,7 +440,7 @@ static ctl_table nlm_sysctl_root[] = {
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Module (and driverfs) parameters.
|
* Module (and sysfs) parameters.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define param_set_min_max(name, type, which_strtol, min, max) \
|
#define param_set_min_max(name, type, which_strtol, min, max) \
|
||||||
|
|
|
@ -1098,7 +1098,7 @@ static int ocfs2_rename(struct inode *old_dir,
|
||||||
BUG();
|
BUG();
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Assume a directory heirarchy thusly:
|
/* Assume a directory hierarchy thusly:
|
||||||
* a/b/c
|
* a/b/c
|
||||||
* a/d
|
* a/d
|
||||||
* a,b,c, and d are all directories.
|
* a,b,c, and d are all directories.
|
||||||
|
|
|
@ -109,7 +109,7 @@ extern int __get_user_4(void *);
|
||||||
|
|
||||||
#define get_user(x,p) \
|
#define get_user(x,p) \
|
||||||
({ \
|
({ \
|
||||||
const register typeof(*(p)) __user *__p asm("r0") = (p);\
|
register const typeof(*(p)) __user *__p asm("r0") = (p);\
|
||||||
register unsigned long __r2 asm("r2"); \
|
register unsigned long __r2 asm("r2"); \
|
||||||
register int __e asm("r0"); \
|
register int __e asm("r0"); \
|
||||||
switch (sizeof(*(__p))) { \
|
switch (sizeof(*(__p))) { \
|
||||||
|
@ -143,8 +143,8 @@ extern int __put_user_8(void *, unsigned long long);
|
||||||
|
|
||||||
#define put_user(x,p) \
|
#define put_user(x,p) \
|
||||||
({ \
|
({ \
|
||||||
const register typeof(*(p)) __r2 asm("r2") = (x); \
|
register const typeof(*(p)) __r2 asm("r2") = (x); \
|
||||||
const register typeof(*(p)) __user *__p asm("r0") = (p);\
|
register const typeof(*(p)) __user *__p asm("r0") = (p);\
|
||||||
register int __e asm("r0"); \
|
register int __e asm("r0"); \
|
||||||
switch (sizeof(*(__p))) { \
|
switch (sizeof(*(__p))) { \
|
||||||
case 1: \
|
case 1: \
|
||||||
|
|
|
@ -74,7 +74,7 @@ extern int __get_user_bad(void);
|
||||||
|
|
||||||
#define get_user(x,p) \
|
#define get_user(x,p) \
|
||||||
({ \
|
({ \
|
||||||
const register typeof(*(p)) *__p asm("r0") = (p); \
|
register const typeof(*(p)) *__p asm("r0") = (p); \
|
||||||
register typeof(*(p)) __r1 asm("r1"); \
|
register typeof(*(p)) __r1 asm("r1"); \
|
||||||
register int __e asm("r0"); \
|
register int __e asm("r0"); \
|
||||||
switch (sizeof(*(p))) { \
|
switch (sizeof(*(p))) { \
|
||||||
|
@ -139,8 +139,8 @@ extern int __put_user_bad(void);
|
||||||
|
|
||||||
#define put_user(x,p) \
|
#define put_user(x,p) \
|
||||||
({ \
|
({ \
|
||||||
const register typeof(*(p)) __r1 asm("r1") = (x); \
|
register const typeof(*(p)) __r1 asm("r1") = (x); \
|
||||||
const register typeof(*(p)) *__p asm("r0") = (p); \
|
register const typeof(*(p)) *__p asm("r0") = (p); \
|
||||||
register int __e asm("r0"); \
|
register int __e asm("r0"); \
|
||||||
switch (sizeof(*(__p))) { \
|
switch (sizeof(*(__p))) { \
|
||||||
case 1: \
|
case 1: \
|
||||||
|
@ -170,8 +170,8 @@ extern int __put_user_bad(void);
|
||||||
|
|
||||||
#define put_user(x,p) \
|
#define put_user(x,p) \
|
||||||
({ \
|
({ \
|
||||||
const register typeof(*(p)) __r1 asm("r1") = (x); \
|
register const typeof(*(p)) __r1 asm("r1") = (x); \
|
||||||
const register typeof(*(p)) *__p asm("r0") = (p); \
|
register const typeof(*(p)) *__p asm("r0") = (p); \
|
||||||
register int __e asm("r0"); \
|
register int __e asm("r0"); \
|
||||||
switch (sizeof(*(p))) { \
|
switch (sizeof(*(p))) { \
|
||||||
case 1: \
|
case 1: \
|
||||||
|
|
|
@ -23,7 +23,7 @@
|
||||||
|
|
||||||
extern struct kimage *ia64_kimage;
|
extern struct kimage *ia64_kimage;
|
||||||
DECLARE_PER_CPU(u64, ia64_mca_pal_base);
|
DECLARE_PER_CPU(u64, ia64_mca_pal_base);
|
||||||
const extern unsigned int relocate_new_kernel_size;
|
extern const unsigned int relocate_new_kernel_size;
|
||||||
extern void relocate_new_kernel(unsigned long, unsigned long,
|
extern void relocate_new_kernel(unsigned long, unsigned long,
|
||||||
struct ia64_boot_param *, unsigned long);
|
struct ia64_boot_param *, unsigned long);
|
||||||
static inline void
|
static inline void
|
||||||
|
|
|
@ -32,7 +32,7 @@
|
||||||
#define PAL_CACHE_FLUSH 1 /* flush i/d cache */
|
#define PAL_CACHE_FLUSH 1 /* flush i/d cache */
|
||||||
#define PAL_CACHE_INFO 2 /* get detailed i/d cache info */
|
#define PAL_CACHE_INFO 2 /* get detailed i/d cache info */
|
||||||
#define PAL_CACHE_INIT 3 /* initialize i/d cache */
|
#define PAL_CACHE_INIT 3 /* initialize i/d cache */
|
||||||
#define PAL_CACHE_SUMMARY 4 /* get summary of cache heirarchy */
|
#define PAL_CACHE_SUMMARY 4 /* get summary of cache hierarchy */
|
||||||
#define PAL_MEM_ATTRIB 5 /* list supported memory attributes */
|
#define PAL_MEM_ATTRIB 5 /* list supported memory attributes */
|
||||||
#define PAL_PTCE_INFO 6 /* purge TLB info */
|
#define PAL_PTCE_INFO 6 /* purge TLB info */
|
||||||
#define PAL_VM_INFO 7 /* return supported virtual memory features */
|
#define PAL_VM_INFO 7 /* return supported virtual memory features */
|
||||||
|
@ -113,14 +113,14 @@ typedef s64 pal_status_t;
|
||||||
*/
|
*/
|
||||||
#define PAL_STATUS_REQUIRES_MEMORY (-9) /* Call requires PAL memory buffer */
|
#define PAL_STATUS_REQUIRES_MEMORY (-9) /* Call requires PAL memory buffer */
|
||||||
|
|
||||||
/* Processor cache level in the heirarchy */
|
/* Processor cache level in the hierarchy */
|
||||||
typedef u64 pal_cache_level_t;
|
typedef u64 pal_cache_level_t;
|
||||||
#define PAL_CACHE_LEVEL_L0 0 /* L0 */
|
#define PAL_CACHE_LEVEL_L0 0 /* L0 */
|
||||||
#define PAL_CACHE_LEVEL_L1 1 /* L1 */
|
#define PAL_CACHE_LEVEL_L1 1 /* L1 */
|
||||||
#define PAL_CACHE_LEVEL_L2 2 /* L2 */
|
#define PAL_CACHE_LEVEL_L2 2 /* L2 */
|
||||||
|
|
||||||
|
|
||||||
/* Processor cache type at a particular level in the heirarchy */
|
/* Processor cache type at a particular level in the hierarchy */
|
||||||
|
|
||||||
typedef u64 pal_cache_type_t;
|
typedef u64 pal_cache_type_t;
|
||||||
#define PAL_CACHE_TYPE_INSTRUCTION 1 /* Instruction cache */
|
#define PAL_CACHE_TYPE_INSTRUCTION 1 /* Instruction cache */
|
||||||
|
@ -272,14 +272,14 @@ typedef struct pal_cache_protection_info_s {
|
||||||
#define PAL_CACHE_PROT_METHOD_ECC 3 /* ECC protection */
|
#define PAL_CACHE_PROT_METHOD_ECC 3 /* ECC protection */
|
||||||
|
|
||||||
|
|
||||||
/* Processor cache line identification in the heirarchy */
|
/* Processor cache line identification in the hierarchy */
|
||||||
typedef union pal_cache_line_id_u {
|
typedef union pal_cache_line_id_u {
|
||||||
u64 pclid_data;
|
u64 pclid_data;
|
||||||
struct {
|
struct {
|
||||||
u64 cache_type : 8, /* 7-0 cache type */
|
u64 cache_type : 8, /* 7-0 cache type */
|
||||||
level : 8, /* 15-8 level of the
|
level : 8, /* 15-8 level of the
|
||||||
* cache in the
|
* cache in the
|
||||||
* heirarchy.
|
* hierarchy.
|
||||||
*/
|
*/
|
||||||
way : 8, /* 23-16 way in the set
|
way : 8, /* 23-16 way in the set
|
||||||
*/
|
*/
|
||||||
|
@ -292,7 +292,7 @@ typedef union pal_cache_line_id_u {
|
||||||
u64 cache_type : 8, /* 7-0 cache type */
|
u64 cache_type : 8, /* 7-0 cache type */
|
||||||
level : 8, /* 15-8 level of the
|
level : 8, /* 15-8 level of the
|
||||||
* cache in the
|
* cache in the
|
||||||
* heirarchy.
|
* hierarchy.
|
||||||
*/
|
*/
|
||||||
way : 8, /* 23-16 way in the set
|
way : 8, /* 23-16 way in the set
|
||||||
*/
|
*/
|
||||||
|
@ -978,7 +978,7 @@ ia64_pal_cache_read (pal_cache_line_id_u_t line_id, u64 physical_addr)
|
||||||
return iprv.status;
|
return iprv.status;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Return summary information about the heirarchy of caches controlled by the processor */
|
/* Return summary information about the hierarchy of caches controlled by the processor */
|
||||||
static inline s64
|
static inline s64
|
||||||
ia64_pal_cache_summary (u64 *cache_levels, u64 *unique_caches)
|
ia64_pal_cache_summary (u64 *cache_levels, u64 *unique_caches)
|
||||||
{
|
{
|
||||||
|
|
|
@ -102,7 +102,7 @@ extern int bus_unregister_notifier(struct bus_type *bus,
|
||||||
#define BUS_NOTIFY_UNBIND_DRIVER 0x00000004 /* driver about to be
|
#define BUS_NOTIFY_UNBIND_DRIVER 0x00000004 /* driver about to be
|
||||||
unbound */
|
unbound */
|
||||||
|
|
||||||
/* driverfs interface for exporting bus attributes */
|
/* sysfs interface for exporting bus attributes */
|
||||||
|
|
||||||
struct bus_attribute {
|
struct bus_attribute {
|
||||||
struct attribute attr;
|
struct attribute attr;
|
||||||
|
@ -147,7 +147,7 @@ extern void put_driver(struct device_driver * drv);
|
||||||
extern struct device_driver *driver_find(const char *name, struct bus_type *bus);
|
extern struct device_driver *driver_find(const char *name, struct bus_type *bus);
|
||||||
extern int driver_probe_done(void);
|
extern int driver_probe_done(void);
|
||||||
|
|
||||||
/* driverfs interface for exporting driver attributes */
|
/* sysfs interface for exporting driver attributes */
|
||||||
|
|
||||||
struct driver_attribute {
|
struct driver_attribute {
|
||||||
struct attribute attr;
|
struct attribute attr;
|
||||||
|
|
|
@ -22,12 +22,12 @@
|
||||||
#include <linux/ext4_fs.h>
|
#include <linux/ext4_fs.h>
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* With AGRESSIVE_TEST defined, the capacity of index/leaf blocks
|
* With AGGRESSIVE_TEST defined, the capacity of index/leaf blocks
|
||||||
* becomes very small, so index split, in-depth growing and
|
* becomes very small, so index split, in-depth growing and
|
||||||
* other hard changes happen much more often.
|
* other hard changes happen much more often.
|
||||||
* This is for debug purposes only.
|
* This is for debug purposes only.
|
||||||
*/
|
*/
|
||||||
#define AGRESSIVE_TEST_
|
#define AGGRESSIVE_TEST_
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* With EXTENTS_STATS defined, the number of blocks and extents
|
* With EXTENTS_STATS defined, the number of blocks and extents
|
||||||
|
|
|
@ -152,7 +152,7 @@ unsigned long __roundup_pow_of_two(unsigned long n)
|
||||||
* roundup_pow_of_two - round the given value up to nearest power of two
|
* roundup_pow_of_two - round the given value up to nearest power of two
|
||||||
* @n - parameter
|
* @n - parameter
|
||||||
*
|
*
|
||||||
* round the given balue up to the nearest power of two
|
* round the given value up to the nearest power of two
|
||||||
* - the result is undefined when n == 0
|
* - the result is undefined when n == 0
|
||||||
* - this can be used to initialise global variables from constant data
|
* - this can be used to initialise global variables from constant data
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -59,7 +59,7 @@ struct kparam_array
|
||||||
};
|
};
|
||||||
|
|
||||||
/* This is the fundamental function for registering boot/module
|
/* This is the fundamental function for registering boot/module
|
||||||
parameters. perm sets the visibility in driverfs: 000 means it's
|
parameters. perm sets the visibility in sysfs: 000 means it's
|
||||||
not there, read bits mean it's readable, write bits mean it's
|
not there, read bits mean it's readable, write bits mean it's
|
||||||
writable. */
|
writable. */
|
||||||
#define __module_param_call(prefix, name, set, get, arg, perm) \
|
#define __module_param_call(prefix, name, set, get, arg, perm) \
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
#define __LINUX_SEQLOCK_H
|
#define __LINUX_SEQLOCK_H
|
||||||
/*
|
/*
|
||||||
* Reader/writer consistent mechanism without starving writers. This type of
|
* Reader/writer consistent mechanism without starving writers. This type of
|
||||||
* lock for data where the reader wants a consitent set of information
|
* lock for data where the reader wants a consistent set of information
|
||||||
* and is willing to retry if the information changes. Readers never
|
* and is willing to retry if the information changes. Readers never
|
||||||
* block but they may have to retry if a writer is in
|
* block but they may have to retry if a writer is in
|
||||||
* progress. Writers do not wait for readers.
|
* progress. Writers do not wait for readers.
|
||||||
|
|
|
@ -54,7 +54,7 @@ int console_printk[4] = {
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Low lever drivers may need that to know if they can schedule in
|
* Low level drivers may need that to know if they can schedule in
|
||||||
* their unblank() callback or not. So let's export it.
|
* their unblank() callback or not. So let's export it.
|
||||||
*/
|
*/
|
||||||
int oops_in_progress;
|
int oops_in_progress;
|
||||||
|
|
|
@ -40,7 +40,7 @@
|
||||||
* configuration according to the specified parameters.
|
* configuration according to the specified parameters.
|
||||||
* (3) User starts the search(es) by calling _find() or _next() to
|
* (3) User starts the search(es) by calling _find() or _next() to
|
||||||
* fetch subsequent occurrences. A state variable is provided
|
* fetch subsequent occurrences. A state variable is provided
|
||||||
* to the algorihtm to store persistent variables.
|
* to the algorithm to store persistent variables.
|
||||||
* (4) Core eventually resets the search offset and forwards the find()
|
* (4) Core eventually resets the search offset and forwards the find()
|
||||||
* request to the algorithm.
|
* request to the algorithm.
|
||||||
* (5) Algorithm calls get_next_block() provided by the user continously
|
* (5) Algorithm calls get_next_block() provided by the user continously
|
||||||
|
|
|
@ -9,7 +9,7 @@ config IP_MULTICAST
|
||||||
intend to participate in the MBONE, a high bandwidth network on top
|
intend to participate in the MBONE, a high bandwidth network on top
|
||||||
of the Internet which carries audio and video broadcasts. More
|
of the Internet which carries audio and video broadcasts. More
|
||||||
information about the MBONE is on the WWW at
|
information about the MBONE is on the WWW at
|
||||||
<http://www-itg.lbl.gov/mbone/>. Information about the multicast
|
<http://www.savetz.com/mbone/>. Information about the multicast
|
||||||
capabilities of the various network cards is contained in
|
capabilities of the various network cards is contained in
|
||||||
<file:Documentation/networking/multicast.txt>. For most people, it's
|
<file:Documentation/networking/multicast.txt>. For most people, it's
|
||||||
safe to say N.
|
safe to say N.
|
||||||
|
|
|
@ -29,7 +29,7 @@ static struct tcp_congestion_ops *tcp_ca_find(const char *name)
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Attach new congestion control algorthim to the list
|
* Attach new congestion control algorithm to the list
|
||||||
* of available options.
|
* of available options.
|
||||||
*/
|
*/
|
||||||
int tcp_register_congestion_control(struct tcp_congestion_ops *ca)
|
int tcp_register_congestion_control(struct tcp_congestion_ops *ca)
|
||||||
|
|
Loading…
Reference in New Issue