<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://elinux.org/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>http://elinux.org/api.php?action=feedcontributions&amp;user=Jiangq&amp;feedformat=atom</id>
		<title>eLinux.org - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="http://elinux.org/api.php?action=feedcontributions&amp;user=Jiangq&amp;feedformat=atom"/>
		<link rel="alternate" type="text/html" href="http://elinux.org/Special:Contributions/Jiangq"/>
		<updated>2013-05-24T00:27:49Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.21alpha</generator>

	<entry>
		<id>http://elinux.org/ECE597_Project_Adding_Sense_to_Beagle</id>
		<title>ECE597 Project Adding Sense to Beagle</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/ECE597_Project_Adding_Sense_to_Beagle"/>
				<updated>2010-04-20T20:22:48Z</updated>
		
		<summary type="html">&lt;p&gt;Jiangq: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Description of Project ==&lt;br /&gt;
Sensory aware applications are becoming more mainstream with the release of the Apple iPhone. This project would combine both HW and SW to add sensory awareness to beagle. First, additional modules such as GPS, 3-axis accelerometers, gyroscopes, temperature sensors, humidity sensors, pressure sensors, etc, would be added to Beagle to compliment the microphone input in order to allow sensing of the real world environment. Then software APIs would need to be layered on top to allow easy access to the sensory data for use by applications.&lt;br /&gt;
&lt;br /&gt;
==Team Members==&lt;br /&gt;
[[user:jiangq | Qiang Jiang]]&lt;br /&gt;
&lt;br /&gt;
[[User:Jesionaj | Adam Jesionowski]]&lt;br /&gt;
&lt;br /&gt;
== Timeline ==&lt;br /&gt;
Week 3: Get accelerometer&amp;lt;br&amp;gt;&lt;br /&gt;
Week 4: Hook up sensor to the I2C; See what Beagleboard does automatically with I2C.&amp;lt;br&amp;gt;&lt;br /&gt;
Week 5: Learn how ARM I2C C functions work; Start coding.&amp;lt;br&amp;gt;&lt;br /&gt;
Week 6: Finish coding.&amp;lt;br&amp;gt;&lt;br /&gt;
Week 7: Do documentation.&amp;lt;br&amp;gt;&lt;br /&gt;
Week 8: If we are on time, start working on another I2C sensor.&amp;lt;br&amp;gt;&lt;br /&gt;
Week 9/10: Padding time.&lt;br /&gt;
&lt;br /&gt;
== Milestones ==&lt;br /&gt;
• Read data from I2C line.&amp;lt;br&amp;gt;&lt;br /&gt;
• Call our library from another C program.&amp;lt;br&amp;gt;&lt;br /&gt;
• Create clear documentation.&lt;br /&gt;
[[category:ECE597]]&lt;/div&gt;</summary>
		<author><name>Jiangq</name></author>	</entry>

	<entry>
		<id>http://elinux.org/ECE597_Project_Adding_Sense_to_Beagle</id>
		<title>ECE597 Project Adding Sense to Beagle</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/ECE597_Project_Adding_Sense_to_Beagle"/>
				<updated>2010-04-20T20:22:06Z</updated>
		
		<summary type="html">&lt;p&gt;Jiangq: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Description of Project ==&lt;br /&gt;
Sensory aware applications are becoming more mainstream with the release of the Apple iPhone. This project would combine both HW and SW to add sensory awareness to beagle. First, additional modules such as GPS, 3-axis accelerometers, gyroscopes, temperature sensors, humidity sensors, pressure sensors, etc, would be added to Beagle to compliment the microphone input in order to allow sensing of the real world environment. Then software APIs would need to be layered on top to allow easy access to the sensory data for use by applications.&lt;br /&gt;
&lt;br /&gt;
==Team Members==&lt;br /&gt;
[[user:jiangq | Qiang Jiang]]&lt;br /&gt;
[[User:Jesionaj | Adam Jesionowski]]&lt;br /&gt;
&lt;br /&gt;
== Timeline ==&lt;br /&gt;
Week 3: Get accelerometer&amp;lt;br&amp;gt;&lt;br /&gt;
Week 4: Hook up sensor to the I2C; See what Beagleboard does automatically with I2C.&amp;lt;br&amp;gt;&lt;br /&gt;
Week 5: Learn how ARM I2C C functions work; Start coding.&amp;lt;br&amp;gt;&lt;br /&gt;
Week 6: Finish coding.&amp;lt;br&amp;gt;&lt;br /&gt;
Week 7: Do documentation.&amp;lt;br&amp;gt;&lt;br /&gt;
Week 8: If we are on time, start working on another I2C sensor.&amp;lt;br&amp;gt;&lt;br /&gt;
Week 9/10: Padding time.&lt;br /&gt;
&lt;br /&gt;
== Milestones ==&lt;br /&gt;
• Read data from I2C line.&amp;lt;br&amp;gt;&lt;br /&gt;
• Call our library from another C program.&amp;lt;br&amp;gt;&lt;br /&gt;
• Create clear documentation.&lt;br /&gt;
[[category:ECE597]]&lt;/div&gt;</summary>
		<author><name>Jiangq</name></author>	</entry>

	<entry>
		<id>http://elinux.org/ECE597_Project_Adding_Sense_to_Beagle</id>
		<title>ECE597 Project Adding Sense to Beagle</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/ECE597_Project_Adding_Sense_to_Beagle"/>
				<updated>2010-04-20T20:20:15Z</updated>
		
		<summary type="html">&lt;p&gt;Jiangq: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Description of Project ==&lt;br /&gt;
Sensory aware applications are becoming more mainstream with the release of the Apple iPhone. This project would combine both HW and SW to add sensory awareness to beagle. First, additional modules such as GPS, 3-axis accelerometers, gyroscopes, temperature sensors, humidity sensors, pressure sensors, etc, would be added to Beagle to compliment the microphone input in order to allow sensing of the real world environment. Then software APIs would need to be layered on top to allow easy access to the sensory data for use by applications.&lt;br /&gt;
&lt;br /&gt;
==Team Members==&lt;br /&gt;
[[user:jiangq | Qiang Jiang]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Timeline ==&lt;br /&gt;
Week 3: Get accelerometer&amp;lt;br&amp;gt;&lt;br /&gt;
Week 4: Hook up sensor to the I2C; See what Beagleboard does automatically with I2C.&amp;lt;br&amp;gt;&lt;br /&gt;
Week 5: Learn how ARM I2C C functions work; Start coding.&amp;lt;br&amp;gt;&lt;br /&gt;
Week 6: Finish coding.&amp;lt;br&amp;gt;&lt;br /&gt;
Week 7: Do documentation.&amp;lt;br&amp;gt;&lt;br /&gt;
Week 8: If we are on time, start working on another I2C sensor.&amp;lt;br&amp;gt;&lt;br /&gt;
Week 9/10: Padding time.&lt;br /&gt;
&lt;br /&gt;
== Milestones ==&lt;br /&gt;
• Read data from I2C line.&amp;lt;br&amp;gt;&lt;br /&gt;
• Call our library from another C program.&amp;lt;br&amp;gt;&lt;br /&gt;
• Create clear documentation.&lt;br /&gt;
[[category:ECE597]]&lt;/div&gt;</summary>
		<author><name>Jiangq</name></author>	</entry>

	<entry>
		<id>http://elinux.org/ECE597_Project_Adding_Sense_to_Beagle</id>
		<title>ECE597 Project Adding Sense to Beagle</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/ECE597_Project_Adding_Sense_to_Beagle"/>
				<updated>2010-04-20T20:18:03Z</updated>
		
		<summary type="html">&lt;p&gt;Jiangq: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Description of Project ==&lt;br /&gt;
Sensory aware applications are becoming more mainstream with the release of the Apple iPhone. This project would combine both HW and SW to add sensory awareness to beagle. First, additional modules such as GPS, 3-axis accelerometers, gyroscopes, temperature sensors, humidity sensors, pressure sensors, etc, would be added to Beagle to compliment the microphone input in order to allow sensing of the real world environment. Then software APIs would need to be layered on top to allow easy access to the sensory data for use by applications.&lt;br /&gt;
&lt;br /&gt;
== Timeline ==&lt;br /&gt;
Week 3: Get accelerometer&amp;lt;br&amp;gt;&lt;br /&gt;
Week 4: Hook up sensor to the I2C; See what Beagleboard does automatically with I2C.&amp;lt;br&amp;gt;&lt;br /&gt;
Week 5: Learn how ARM I2C C functions work; Start coding.&amp;lt;br&amp;gt;&lt;br /&gt;
Week 6: Finish coding.&amp;lt;br&amp;gt;&lt;br /&gt;
Week 7: Do documentation.&amp;lt;br&amp;gt;&lt;br /&gt;
Week 8: If we are on time, start working on another I2C sensor.&amp;lt;br&amp;gt;&lt;br /&gt;
Week 9/10: Padding time.&lt;br /&gt;
&lt;br /&gt;
== Milestones ==&lt;br /&gt;
• Read data from I2C line.&amp;lt;br&amp;gt;&lt;br /&gt;
• Call our library from another C program.&amp;lt;br&amp;gt;&lt;br /&gt;
• Create clear documentation.&lt;br /&gt;
[[category:ECE597]]&lt;/div&gt;</summary>
		<author><name>Jiangq</name></author>	</entry>

	<entry>
		<id>http://elinux.org/User:Jiangq</id>
		<title>User:Jiangq</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/User:Jiangq"/>
				<updated>2010-04-15T20:38:18Z</updated>
		
		<summary type="html">&lt;p&gt;Jiangq: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Listings =&lt;br /&gt;
== Chapter 4 ==&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Number&lt;br /&gt;
! Page&lt;br /&gt;
! Caption&lt;br /&gt;
! Listing&lt;br /&gt;
|-&lt;br /&gt;
| 4-3&lt;br /&gt;
| 4-15&lt;br /&gt;
| Kernel Subdirectory&lt;br /&gt;
| &amp;lt;pre&amp;gt;  qiang@qiang-laptop:~/Desktop/linux-2.6$ cat 4_3&lt;br /&gt;
qiang@qiang-laptop:~/Desktop/linux-2.6$ ls -ls arch/arm/plat-omap/ | grep -v \\.o&lt;br /&gt;
total 432&lt;br /&gt;
12 -rw-r--r-- 1 qiang qiang 11124 2010-03-23 20:06 clock.c&lt;br /&gt;
12 -rw-r--r-- 1 qiang qiang  8521 2010-03-23 20:06 common.c&lt;br /&gt;
 4 -rw-r--r-- 1 qiang qiang  4033 2010-03-23 20:06 cpu-omap.c&lt;br /&gt;
 4 -rw-r--r-- 1 qiang qiang  2192 2010-03-23 20:06 debug-devices.c&lt;br /&gt;
 8 -rw-r--r-- 1 qiang qiang  7170 2010-03-23 20:06 debug-leds.c&lt;br /&gt;
12 -rw-r--r-- 1 qiang qiang 10890 2010-03-23 20:06 devices.c&lt;br /&gt;
56 -rw-r--r-- 1 qiang qiang 52586 2010-03-23 20:06 dma.c&lt;br /&gt;
24 -rw-r--r-- 1 qiang qiang 22660 2010-03-23 20:06 dmtimer.c&lt;br /&gt;
12 -rw-r--r-- 1 qiang qiang 10055 2010-03-23 20:06 fb.c&lt;br /&gt;
64 -rw-r--r-- 1 qiang qiang 61308 2010-03-23 20:06 gpio.c&lt;br /&gt;
 8 -rw-r--r-- 1 qiang qiang  5058 2010-03-23 20:06 i2c.c&lt;br /&gt;
 4 drwxr-xr-x 3 qiang qiang  4096 2010-03-23 20:06 include&lt;br /&gt;
 8 -rw-r--r-- 1 qiang qiang  6265 2010-03-23 20:06 io.c&lt;br /&gt;
24 -rw-r--r-- 1 qiang qiang 20765 2010-03-23 20:06 iommu.c&lt;br /&gt;
12 -rw-r--r-- 1 qiang qiang  9117 2010-03-23 20:06 iommu-debug.c&lt;br /&gt;
 4 -rw-r--r-- 1 qiang qiang  2745 2010-03-23 20:06 iopgtable.h&lt;br /&gt;
20 -rw-r--r-- 1 qiang qiang 19320 2010-03-23 20:06 iovmm.c&lt;br /&gt;
 8 -rw-r--r-- 1 qiang qiang  4819 2010-03-23 20:06 Kconfig&lt;br /&gt;
12 -rw-r--r-- 1 qiang qiang  8522 2010-03-23 20:06 mailbox.c&lt;br /&gt;
 4 -rw-r--r-- 1 qiang qiang   882 2010-03-23 20:06 Makefile&lt;br /&gt;
44 -rw-r--r-- 1 qiang qiang 43730 2010-03-23 20:06 mcbsp.c&lt;br /&gt;
 4 -rw-r--r-- 1 qiang qiang  2263 2010-03-23 20:06 mux.c&lt;br /&gt;
 4 -rw-r--r-- 1 qiang qiang  2739 2010-03-23 20:06 ocpi.c&lt;br /&gt;
24 -rw-r--r-- 1 qiang qiang 21397 2010-03-23 20:06 omap_device.c&lt;br /&gt;
 8 -rw-r--r-- 1 qiang qiang  7069 2010-03-23 20:06 omap-pm-noop.c&lt;br /&gt;
16 -rw-r--r-- 1 qiang qiang 12878 2010-03-23 20:06 sram.c&lt;br /&gt;
20 -rw-r--r-- 1 qiang qiang 18770 2010-03-23 20:06 usb.c&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 4-4&lt;br /&gt;
| 4-17&lt;br /&gt;
| Snippet from Linux 2.6.config&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
qiang@qiang-laptop:~/Desktop/linux-2.6$ cat 4_4&lt;br /&gt;
#&lt;br /&gt;
# CONFIG_64BIT is not set&lt;br /&gt;
CONFIG_X86_32=y&lt;br /&gt;
# CONFIG_X86_64 is not set&lt;br /&gt;
CONFIG_X86=y&lt;br /&gt;
CONFIG_OUTPUT_FORMAT=&amp;quot;elf32-i386&amp;quot;&lt;br /&gt;
CONFIG_ARCH_DEFCONFIG=&amp;quot;arch/x86/configs/i386_defconfig&amp;quot;&lt;br /&gt;
CONFIG_GENERIC_TIME=y&lt;br /&gt;
CONFIG_GENERIC_CMOS_UPDATE=y&lt;br /&gt;
CONFIG_CLOCKSOURCE_WATCHDOG=y&lt;br /&gt;
CONFIG_GENERIC_CLOCKEVENTS=y&lt;br /&gt;
CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y&lt;br /&gt;
CONFIG_LOCKDEP_SUPPORT=y&lt;br /&gt;
CONFIG_STACKTRACE_SUPPORT=y&lt;br /&gt;
CONFIG_HAVE_LATENCYTOP_SUPPORT=y&lt;br /&gt;
CONFIG_MMU=y&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 4-6&lt;br /&gt;
| 4-22&lt;br /&gt;
| Makefile Targets&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
qiang@qiang-laptop:~/Desktop/linux-2.6$ cat 4_6&lt;br /&gt;
qiang@qiang-laptop:~/Desktop/linux-2.6$ make help&lt;br /&gt;
Cleaning targets:&lt;br /&gt;
  clean		  - Remove most generated files but keep the config and&lt;br /&gt;
                    enough build support to build external modules&lt;br /&gt;
  mrproper	  - Remove all generated files + config + various backup files&lt;br /&gt;
  distclean	  - mrproper + remove editor backup and patch files&lt;br /&gt;
&lt;br /&gt;
Configuration targets:&lt;br /&gt;
  config	  - Update current config utilising a line-oriented program&lt;br /&gt;
  menuconfig	  - Update current config utilising a menu based program&lt;br /&gt;
  xconfig	  - Update current config utilising a QT based front-end&lt;br /&gt;
  gconfig	  - Update current config utilising a GTK based front-end&lt;br /&gt;
  oldconfig	  - Update current config utilising a provided .config as base&lt;br /&gt;
  localmodconfig  - Update current config disabling modules not loaded&lt;br /&gt;
  localyesconfig  - Update current config converting local mods to core&lt;br /&gt;
  silentoldconfig - Same as oldconfig, but quietly, additionally update deps&lt;br /&gt;
  randconfig	  - New config with random answer to all options&lt;br /&gt;
  defconfig	  - New config with default answer to all options&lt;br /&gt;
  allmodconfig	  - New config selecting modules when possible&lt;br /&gt;
  allyesconfig	  - New config where all options are accepted with yes&lt;br /&gt;
  allnoconfig	  - New config where all options are answered with no&lt;br /&gt;
&lt;br /&gt;
Other generic targets:&lt;br /&gt;
  all		  - Build all targets marked with [*]&lt;br /&gt;
* vmlinux	  - Build the bare kernel&lt;br /&gt;
* modules	  - Build all modules&lt;br /&gt;
  modules_install - Install all modules to INSTALL_MOD_PATH (default: /)&lt;br /&gt;
  firmware_install- Install all firmware to INSTALL_FW_PATH&lt;br /&gt;
                    (default: $(INSTALL_MOD_PATH)/lib/firmware)&lt;br /&gt;
  dir/            - Build all files in dir and below&lt;br /&gt;
  dir/file.[ois]  - Build specified target only&lt;br /&gt;
  dir/file.ko     - Build module including final link&lt;br /&gt;
  modules_prepare - Set up for building external modules&lt;br /&gt;
  tags/TAGS	  - Generate tags file for editors&lt;br /&gt;
  cscope	  - Generate cscope index&lt;br /&gt;
  kernelrelease	  - Output the release version string&lt;br /&gt;
  kernelversion	  - Output the version stored in Makefile&lt;br /&gt;
  headers_install - Install sanitised kernel headers to INSTALL_HDR_PATH&lt;br /&gt;
                    (default: /home/qiang/Desktop/linux-2.6/usr)&lt;br /&gt;
&lt;br /&gt;
Static analysers&lt;br /&gt;
  checkstack      - Generate a list of stack hogs&lt;br /&gt;
  namespacecheck  - Name space analysis on compiled kernel&lt;br /&gt;
  versioncheck    - Sanity check on version.h usage&lt;br /&gt;
  includecheck    - Check for duplicate included header files&lt;br /&gt;
  export_report   - List the usages of all exported symbols&lt;br /&gt;
  headers_check   - Sanity check on exported headers&lt;br /&gt;
  headerdep       - Detect inclusion cycles in headers&lt;br /&gt;
&lt;br /&gt;
Kernel packaging:&lt;br /&gt;
  rpm-pkg         - Build both source and binary RPM kernel packages&lt;br /&gt;
  binrpm-pkg      - Build only the binary kernel package&lt;br /&gt;
  deb-pkg         - Build the kernel as an deb package&lt;br /&gt;
  tar-pkg         - Build the kernel as an uncompressed tarball&lt;br /&gt;
  targz-pkg       - Build the kernel as a gzip compressed tarball&lt;br /&gt;
  tarbz2-pkg      - Build the kernel as a bzip2 compressed tarball&lt;br /&gt;
&lt;br /&gt;
Documentation targets:&lt;br /&gt;
 Linux kernel internal documentation in different formats:&lt;br /&gt;
  htmldocs        - HTML&lt;br /&gt;
  pdfdocs         - PDF&lt;br /&gt;
  psdocs          - Postscript&lt;br /&gt;
  xmldocs         - XML DocBook&lt;br /&gt;
  mandocs         - man pages&lt;br /&gt;
  installmandocs  - install man pages generated by mandocs&lt;br /&gt;
  cleandocs       - clean all generated DocBook files&lt;br /&gt;
&lt;br /&gt;
Architecture specific targets (x86):&lt;br /&gt;
* bzImage      - Compressed kernel image (arch/x86/boot/bzImage)&lt;br /&gt;
  install      - Install kernel using&lt;br /&gt;
                  (your) ~/bin/installkernel or&lt;br /&gt;
                  (distribution) /sbin/installkernel or&lt;br /&gt;
                  install to $(INSTALL_PATH) and run lilo&lt;br /&gt;
  fdimage      - Create 1.4MB boot floppy image (arch/x86/boot/fdimage)&lt;br /&gt;
  fdimage144   - Create 1.4MB boot floppy image (arch/x86/boot/fdimage)&lt;br /&gt;
  fdimage288   - Create 2.8MB boot floppy image (arch/x86/boot/fdimage)&lt;br /&gt;
  isoimage     - Create a boot CD-ROM image (arch/x86/boot/image.iso)&lt;br /&gt;
                  bzdisk/fdimage*/isoimage also accept:&lt;br /&gt;
                  FDARGS=&amp;quot;...&amp;quot;  arguments for the booted kernel&lt;br /&gt;
                  FDINITRD=file initrd for the booted kernel&lt;br /&gt;
&lt;br /&gt;
  i386_defconfig           - Build for i386&lt;br /&gt;
  x86_64_defconfig         - Build for x86_64&lt;br /&gt;
&lt;br /&gt;
  make V=0|1 [targets] 0 =&amp;gt; quiet build (default), 1 =&amp;gt; verbose build&lt;br /&gt;
  make V=2   [targets] 2 =&amp;gt; give reason for rebuild of target&lt;br /&gt;
  make O=dir [targets] Locate all output files in &amp;quot;dir&amp;quot;, including .config&lt;br /&gt;
  make C=1   [targets] Check all c source with $CHECK (sparse by default)&lt;br /&gt;
  make C=2   [targets] Force check of all c source with $CHECK&lt;br /&gt;
&lt;br /&gt;
Execute &amp;quot;make&amp;quot; or &amp;quot;make all&amp;quot; to build all targets marked with [*] &lt;br /&gt;
For further info see the ./README file&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 4-10&lt;br /&gt;
| 4-32&lt;br /&gt;
| Customized .config File Snippet&lt;br /&gt;
| &amp;lt;pre&amp;gt;qiang@qiang-laptop:~/Desktop/linux-2.6$ cat 4_10&lt;br /&gt;
# CONFIG_ARCH_PNX4008 is not set&lt;br /&gt;
# CONFIG_ARCH_PXA is not set&lt;br /&gt;
# CONFIG_ARCH_MSM is not set&lt;br /&gt;
# CONFIG_ARCH_SHMOBILE is not set&lt;br /&gt;
# CONFIG_ARCH_RPC is not set&lt;br /&gt;
# CONFIG_ARCH_SA1100 is not set&lt;br /&gt;
# CONFIG_ARCH_S3C2410 is not set&lt;br /&gt;
# CONFIG_ARCH_S3C64XX is not set&lt;br /&gt;
# CONFIG_ARCH_S5P6440 is not set&lt;br /&gt;
# CONFIG_ARCH_S5P6442 is not set&lt;br /&gt;
# CONFIG_ARCH_S5PC1XX is not set&lt;br /&gt;
# CONFIG_ARCH_S5PV210 is not set&lt;br /&gt;
# CONFIG_ARCH_SHARK is not set&lt;br /&gt;
# CONFIG_ARCH_LH7A40X is not set&lt;br /&gt;
# CONFIG_ARCH_U300 is not set&lt;br /&gt;
# CONFIG_ARCH_U8500 is not set&lt;br /&gt;
# CONFIG_ARCH_NOMADIK is not set&lt;br /&gt;
# CONFIG_ARCH_DAVINCI is not set&lt;br /&gt;
CONFIG_ARCH_OMAP=y&lt;br /&gt;
&lt;br /&gt;
# &lt;br /&gt;
# TI OMAP Implementations&lt;br /&gt;
# &lt;br /&gt;
# CONFIG_ARCH_OMAP1 is not set&lt;br /&gt;
CONFIG_ARCH_OMAP2PLUS=y&lt;br /&gt;
# CONFIG_ARCH_OMAP2 is not set&lt;br /&gt;
# CONFIG_ARCH_OMAP3 is not set&lt;br /&gt;
# CONFIG_ARCH_OMAP4 is not set&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 4-11&lt;br /&gt;
| 4-33&lt;br /&gt;
| Makefile from .../arch/arm/mach-ixp4xx Kernel Subdirectory&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
 qiang@qiang-laptop:~/Desktop/linux-2.6$ cat 4_11&lt;br /&gt;
qiang@qiang-laptop:~/Desktop/linux-2.6/arch/arm/plat-omap$ head -n 20 Makefile&lt;br /&gt;
#&lt;br /&gt;
# Makefile for the linux kernel.&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
# Common support&lt;br /&gt;
obj-y := common.o sram.o clock.o devices.o dma.o mux.o gpio.o \&lt;br /&gt;
	 usb.o fb.o io.o&lt;br /&gt;
obj-m :=&lt;br /&gt;
obj-n :=&lt;br /&gt;
obj-  :=&lt;br /&gt;
&lt;br /&gt;
# OCPI interconnect support for 1710, 1610 and 5912&lt;br /&gt;
obj-$(CONFIG_ARCH_OMAP16XX) += ocpi.o&lt;br /&gt;
&lt;br /&gt;
# omap_device support (OMAP2+ only at the moment)&lt;br /&gt;
obj-$(CONFIG_ARCH_OMAP2) += omap_device.o&lt;br /&gt;
obj-$(CONFIG_ARCH_OMAP3) += omap_device.o&lt;br /&gt;
&lt;br /&gt;
obj-$(CONFIG_OMAP_MCBSP) += mcbsp.o&lt;br /&gt;
obj-$(CONFIG_OMAP_IOMMU) += iommu.o iovmm.o&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Chapter 5 ==&lt;br /&gt;
{|&lt;br /&gt;
! Number&lt;br /&gt;
! Page&lt;br /&gt;
! Caption&lt;br /&gt;
! Listing&lt;br /&gt;
|-&lt;br /&gt;
| 5-2&lt;br /&gt;
| 5-5&lt;br /&gt;
| Assembly File piggy.s&lt;br /&gt;
| &amp;lt;pre&amp;gt;  qiang@qiang-laptop:~/Desktop/linux-2.6/arch/arm/boot/compressed$ cat piggy.gzip.S &lt;br /&gt;
	.section .piggydata,#alloc&lt;br /&gt;
	.globl	input_data&lt;br /&gt;
input_data:&lt;br /&gt;
	.incbin	&amp;quot;arch/arm/boot/compressed/piggy.gzip&amp;quot;&lt;br /&gt;
	.globl	input_data_end&lt;br /&gt;
input_data_end:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 5-4&lt;br /&gt;
| 5-18&lt;br /&gt;
| Console Setup Code Snippet&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
qiang@qiang-laptop:~/Desktop/linux-2.6/arch/arm/boot/compressed$ cat piggy.gzip.S &lt;br /&gt;
	.section .piggydata,#alloc&lt;br /&gt;
	.globl	input_data&lt;br /&gt;
input_data:&lt;br /&gt;
	.incbin	&amp;quot;arch/arm/boot/compressed/piggy.gzip&amp;quot;&lt;br /&gt;
	.globl	input_data_end&lt;br /&gt;
input_data_end:&lt;br /&gt;
&lt;br /&gt;
qiang@qiang-laptop:~/Desktop/linux-2.6$ cat 5_4&lt;br /&gt;
/*&lt;br /&gt;
 * Set up a list of consoles.  Called from init/main.c&lt;br /&gt;
 */&lt;br /&gt;
static int __init console_setup(char *str)&lt;br /&gt;
{&lt;br /&gt;
        char buf[sizeof(console_cmdline[0].name) + 4]; /* 4 for index */&lt;br /&gt;
        char *s, *options, *brl_options = NULL;&lt;br /&gt;
        int idx;&lt;br /&gt;
&lt;br /&gt;
#ifdef CONFIG_A11Y_BRAILLE_CONSOLE&lt;br /&gt;
        if (!memcmp(str, &amp;quot;brl,&amp;quot;, 4)) {&lt;br /&gt;
                brl_options = &amp;quot;&amp;quot;;&lt;br /&gt;
                str += 4;&lt;br /&gt;
        } else if (!memcmp(str, &amp;quot;brl=&amp;quot;, 4)) {&lt;br /&gt;
                brl_options = str + 4;&lt;br /&gt;
                str = strchr(brl_options, ',');&lt;br /&gt;
                if (!str) {&lt;br /&gt;
                        printk(KERN_ERR &amp;quot;need port name after brl=\n&amp;quot;);&lt;br /&gt;
                        return 1;&lt;br /&gt;
                }&lt;br /&gt;
                *(str++) = 0;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 5-5&lt;br /&gt;
| 5-19&lt;br /&gt;
| Family of _setup Macro Definitions from init.h&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
qiang@qiang-laptop:~/Desktop/linux-2.6$ cat 5_5&lt;br /&gt;
/*&lt;br /&gt;
 * Only for really core code.  See moduleparam.h for the normal way.&lt;br /&gt;
 * &lt;br /&gt;
 * Force the alignment so the compiler doesn't space elements of the&lt;br /&gt;
 * obs_kernel_param &amp;quot;array&amp;quot; too far apart in .init.setup.&lt;br /&gt;
 */&lt;br /&gt;
#define __setup_param(str, unique_id, fn, early)                        \&lt;br /&gt;
        static const char __setup_str_##unique_id[] __initconst \&lt;br /&gt;
                __aligned(1) = str; \&lt;br /&gt;
        static struct obs_kernel_param __setup_##unique_id      \&lt;br /&gt;
                __used __section(.init.setup)                   \&lt;br /&gt;
                __attribute__((aligned((sizeof(long)))))        \&lt;br /&gt;
                = { __setup_str_##unique_id, fn, early }&lt;br /&gt;
&lt;br /&gt;
#define __setup(str, fn)                                        \&lt;br /&gt;
        __setup_param(str, fn, fn, 0)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 5-6&lt;br /&gt;
| 5-20&lt;br /&gt;
| Kernel Command Line Processing&lt;br /&gt;
| &amp;lt;pre&amp;gt;qiang@qiang-laptop:~/Desktop/linux-2.6$ cat 5_6&lt;br /&gt;
static int __init obsolete_checksetup(char *line)&lt;br /&gt;
{&lt;br /&gt;
        struct obs_kernel_param *p;&lt;br /&gt;
        int had_early_param = 0;&lt;br /&gt;
&lt;br /&gt;
        p = __setup_start;&lt;br /&gt;
        do {&lt;br /&gt;
                int n = strlen(p-&amp;gt;str);&lt;br /&gt;
                if (!strncmp(line, p-&amp;gt;str, n)) {&lt;br /&gt;
                        if (p-&amp;gt;early) {&lt;br /&gt;
                                /* Already done in parse_early_param?&lt;br /&gt;
                                 * (Needs exact match on param part).&lt;br /&gt;
                                 * Keep iterating, as we can have early&lt;br /&gt;
                                 * params and __setups of same names 8( */&lt;br /&gt;
                                if (line[n] == '\0' || line[n] == '=')&lt;br /&gt;
                                        had_early_param = 1;&lt;br /&gt;
                        } else if (!p-&amp;gt;setup_func) {&lt;br /&gt;
                                printk(KERN_WARNING &amp;quot;Parameter %s is obsolete,&amp;quot;&lt;br /&gt;
                                       &amp;quot; ignored\n&amp;quot;, p-&amp;gt;str);&lt;br /&gt;
                                return 1;&lt;br /&gt;
                        } else if (p-&amp;gt;setup_func(line + n))&lt;br /&gt;
                                return 1;&lt;br /&gt;
                }&lt;br /&gt;
                p++;&lt;br /&gt;
        } while (p &amp;lt; __setup_end);&lt;br /&gt;
&lt;br /&gt;
        return had_early_param;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 5-7&lt;br /&gt;
| 5-23&lt;br /&gt;
| Example Initialization Routine&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
 qiang@qiang-laptop:~/Desktop/linux-2.6$ cat 5_7&lt;br /&gt;
static void (*init_machine)(void) __initdata;&lt;br /&gt;
&lt;br /&gt;
static int __init customize_machine(void)&lt;br /&gt;
{&lt;br /&gt;
        /* customizes platform devices, or adds new ones */&lt;br /&gt;
        if (init_machine)&lt;br /&gt;
                init_machine();&lt;br /&gt;
        return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 5-8&lt;br /&gt;
| 5-23&lt;br /&gt;
| initcall Family of Macros&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
 qiang@qiang-laptop:~/Desktop/linux-2.6$ cat 5_8&lt;br /&gt;
#define __define_initcall(level,fn,id) \&lt;br /&gt;
        static initcall_t __initcall_##fn##id __used \&lt;br /&gt;
        __attribute__((__section__(&amp;quot;.initcall&amp;quot; level &amp;quot;.init&amp;quot;))) = fn&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
 * Early initcalls run before initializing SMP.&lt;br /&gt;
 *&lt;br /&gt;
 * Only for built-in code, not modules.&lt;br /&gt;
 */&lt;br /&gt;
#define early_initcall(fn)              __define_initcall(&amp;quot;early&amp;quot;,fn,early)&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
 * A &amp;quot;pure&amp;quot; initcall has no dependencies on anything else, and purely&lt;br /&gt;
 * initializes variables that couldn't be statically initialized.&lt;br /&gt;
 *&lt;br /&gt;
 * This only exists for built-in code, not for modules.&lt;br /&gt;
 */&lt;br /&gt;
#define pure_initcall(fn)               __define_initcall(&amp;quot;0&amp;quot;,fn,0)&lt;br /&gt;
&lt;br /&gt;
#define core_initcall(fn)               __define_initcall(&amp;quot;1&amp;quot;,fn,1)&lt;br /&gt;
#define core_initcall_sync(fn)          __define_initcall(&amp;quot;1s&amp;quot;,fn,1s)&lt;br /&gt;
#define postcore_initcall(fn)           __define_initcall(&amp;quot;2&amp;quot;,fn,2)&lt;br /&gt;
#define postcore_initcall_sync(fn)      __define_initcall(&amp;quot;2s&amp;quot;,fn,2s)&lt;br /&gt;
#define arch_initcall(fn)               __define_initcall(&amp;quot;3&amp;quot;,fn,3)&lt;br /&gt;
#define arch_initcall_sync(fn)          __define_initcall(&amp;quot;3s&amp;quot;,fn,3s)&lt;br /&gt;
#define subsys_initcall(fn)             __define_initcall(&amp;quot;4&amp;quot;,fn,4)&lt;br /&gt;
#define subsys_initcall_sync(fn)        __define_initcall(&amp;quot;4s&amp;quot;,fn,4s)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 5-9&lt;br /&gt;
| 5-26&lt;br /&gt;
| Creation of Kernel init Thread&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
 qiang@qiang-laptop:~/Desktop/linux-2.6$ cat 5_9&lt;br /&gt;
static noinline void __init_refok rest_init(void)&lt;br /&gt;
        __releases(kernel_lock)&lt;br /&gt;
{&lt;br /&gt;
        int pid;&lt;br /&gt;
&lt;br /&gt;
        rcu_scheduler_starting();&lt;br /&gt;
        kernel_thread(kernel_init, NULL, CLONE_FS | CLONE_SIGHAND);&lt;br /&gt;
        numa_default_policy();&lt;br /&gt;
        pid = kernel_thread(kthreadd, NULL, CLONE_FS | CLONE_FILES);&lt;br /&gt;
        rcu_read_lock();&lt;br /&gt;
        kthreadd_task = find_task_by_pid_ns(pid, &amp;amp;init_pid_ns);&lt;br /&gt;
        rcu_read_unlock();&lt;br /&gt;
        unlock_kernel();&lt;br /&gt;
&lt;br /&gt;
        /*&lt;br /&gt;
         * The boot idle thread must execute schedule()&lt;br /&gt;
         * at least once to get things moving:&lt;br /&gt;
         */&lt;br /&gt;
        init_idle_bootup_task(current);&lt;br /&gt;
        preempt_enable_no_resched();&lt;br /&gt;
        schedule();&lt;br /&gt;
        preempt_disable();&lt;br /&gt;
&lt;br /&gt;
        /* Call into cpu_idle with preempt disabled */&lt;br /&gt;
        cpu_idle();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 5-10&lt;br /&gt;
| 5-27&lt;br /&gt;
| Initialization via initcalls&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
 qiang@qiang-laptop:~/Desktop/linux-2.6$ cat 5_10&lt;br /&gt;
extern initcall_t __initcall_start[], __initcall_end[], __early_initcall_end[];&lt;br /&gt;
&lt;br /&gt;
static void __init do_initcalls(void)&lt;br /&gt;
{&lt;br /&gt;
        initcall_t *fn;&lt;br /&gt;
&lt;br /&gt;
        for (fn = __early_initcall_end; fn &amp;lt; __initcall_end; fn++)&lt;br /&gt;
                do_one_initcall(*fn);&lt;br /&gt;
&lt;br /&gt;
        /* Make sure there is no pending stuff from the initcall sequence */&lt;br /&gt;
        flush_scheduled_work();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 5-11&lt;br /&gt;
| 5-28&lt;br /&gt;
| Final Kernel Boot Steps from main.c&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
qiang@qiang-laptop:~/Desktop/linux-2.6$ cat 5_11&lt;br /&gt;
 * makes it inline to init() and it becomes part of init.text section&lt;br /&gt;
 */&lt;br /&gt;
static noinline int init_post(void)&lt;br /&gt;
        __releases(kernel_lock)&lt;br /&gt;
{&lt;br /&gt;
        /* need to finish all async __init code before freeing the memory */&lt;br /&gt;
        async_synchronize_full();&lt;br /&gt;
        free_initmem();&lt;br /&gt;
        unlock_kernel();&lt;br /&gt;
        mark_rodata_ro();&lt;br /&gt;
        system_state = SYSTEM_RUNNING;&lt;br /&gt;
        numa_default_policy();&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        current-&amp;gt;signal-&amp;gt;flags |= SIGNAL_UNKILLABLE;&lt;br /&gt;
&lt;br /&gt;
        if (ramdisk_execute_command) {&lt;br /&gt;
                run_init_process(ramdisk_execute_command);&lt;br /&gt;
                printk(KERN_WARNING &amp;quot;Failed to execute %s\n&amp;quot;,&lt;br /&gt;
                                ramdisk_execute_command);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:ECE597]]&lt;/div&gt;</summary>
		<author><name>Jiangq</name></author>	</entry>

	<entry>
		<id>http://elinux.org/User:Jiangq</id>
		<title>User:Jiangq</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/User:Jiangq"/>
				<updated>2010-04-15T17:36:56Z</updated>
		
		<summary type="html">&lt;p&gt;Jiangq: /* Listings */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Listings =&lt;br /&gt;
== Chapter 4 ==&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Number&lt;br /&gt;
! Page&lt;br /&gt;
! Caption&lt;br /&gt;
! Listing&lt;br /&gt;
|-&lt;br /&gt;
| 4-3&lt;br /&gt;
| 4-15&lt;br /&gt;
| Kernel Subdirectory&lt;br /&gt;
| &amp;lt;pre&amp;gt;  qiang@qiang-laptop:~/Desktop/linux-2.6$ cat 4_3&lt;br /&gt;
qiang@qiang-laptop:~/Desktop/linux-2.6$ ls -ls arch/arm/plat-omap/ | grep -v \\.o&lt;br /&gt;
total 432&lt;br /&gt;
12 -rw-r--r-- 1 qiang qiang 11124 2010-03-23 20:06 clock.c&lt;br /&gt;
12 -rw-r--r-- 1 qiang qiang  8521 2010-03-23 20:06 common.c&lt;br /&gt;
 4 -rw-r--r-- 1 qiang qiang  4033 2010-03-23 20:06 cpu-omap.c&lt;br /&gt;
 4 -rw-r--r-- 1 qiang qiang  2192 2010-03-23 20:06 debug-devices.c&lt;br /&gt;
 8 -rw-r--r-- 1 qiang qiang  7170 2010-03-23 20:06 debug-leds.c&lt;br /&gt;
12 -rw-r--r-- 1 qiang qiang 10890 2010-03-23 20:06 devices.c&lt;br /&gt;
56 -rw-r--r-- 1 qiang qiang 52586 2010-03-23 20:06 dma.c&lt;br /&gt;
24 -rw-r--r-- 1 qiang qiang 22660 2010-03-23 20:06 dmtimer.c&lt;br /&gt;
12 -rw-r--r-- 1 qiang qiang 10055 2010-03-23 20:06 fb.c&lt;br /&gt;
64 -rw-r--r-- 1 qiang qiang 61308 2010-03-23 20:06 gpio.c&lt;br /&gt;
 8 -rw-r--r-- 1 qiang qiang  5058 2010-03-23 20:06 i2c.c&lt;br /&gt;
 4 drwxr-xr-x 3 qiang qiang  4096 2010-03-23 20:06 include&lt;br /&gt;
 8 -rw-r--r-- 1 qiang qiang  6265 2010-03-23 20:06 io.c&lt;br /&gt;
24 -rw-r--r-- 1 qiang qiang 20765 2010-03-23 20:06 iommu.c&lt;br /&gt;
12 -rw-r--r-- 1 qiang qiang  9117 2010-03-23 20:06 iommu-debug.c&lt;br /&gt;
 4 -rw-r--r-- 1 qiang qiang  2745 2010-03-23 20:06 iopgtable.h&lt;br /&gt;
20 -rw-r--r-- 1 qiang qiang 19320 2010-03-23 20:06 iovmm.c&lt;br /&gt;
 8 -rw-r--r-- 1 qiang qiang  4819 2010-03-23 20:06 Kconfig&lt;br /&gt;
12 -rw-r--r-- 1 qiang qiang  8522 2010-03-23 20:06 mailbox.c&lt;br /&gt;
 4 -rw-r--r-- 1 qiang qiang   882 2010-03-23 20:06 Makefile&lt;br /&gt;
44 -rw-r--r-- 1 qiang qiang 43730 2010-03-23 20:06 mcbsp.c&lt;br /&gt;
 4 -rw-r--r-- 1 qiang qiang  2263 2010-03-23 20:06 mux.c&lt;br /&gt;
 4 -rw-r--r-- 1 qiang qiang  2739 2010-03-23 20:06 ocpi.c&lt;br /&gt;
24 -rw-r--r-- 1 qiang qiang 21397 2010-03-23 20:06 omap_device.c&lt;br /&gt;
 8 -rw-r--r-- 1 qiang qiang  7069 2010-03-23 20:06 omap-pm-noop.c&lt;br /&gt;
16 -rw-r--r-- 1 qiang qiang 12878 2010-03-23 20:06 sram.c&lt;br /&gt;
20 -rw-r--r-- 1 qiang qiang 18770 2010-03-23 20:06 usb.c&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 4-4&lt;br /&gt;
| 4-17&lt;br /&gt;
| Snippet from Linux 2.6.config&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
qiang@qiang-laptop:~/Desktop/linux-2.6$ cat 4_4&lt;br /&gt;
#&lt;br /&gt;
# CONFIG_64BIT is not set&lt;br /&gt;
CONFIG_X86_32=y&lt;br /&gt;
# CONFIG_X86_64 is not set&lt;br /&gt;
CONFIG_X86=y&lt;br /&gt;
CONFIG_OUTPUT_FORMAT=&amp;quot;elf32-i386&amp;quot;&lt;br /&gt;
CONFIG_ARCH_DEFCONFIG=&amp;quot;arch/x86/configs/i386_defconfig&amp;quot;&lt;br /&gt;
CONFIG_GENERIC_TIME=y&lt;br /&gt;
CONFIG_GENERIC_CMOS_UPDATE=y&lt;br /&gt;
CONFIG_CLOCKSOURCE_WATCHDOG=y&lt;br /&gt;
CONFIG_GENERIC_CLOCKEVENTS=y&lt;br /&gt;
CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y&lt;br /&gt;
CONFIG_LOCKDEP_SUPPORT=y&lt;br /&gt;
CONFIG_STACKTRACE_SUPPORT=y&lt;br /&gt;
CONFIG_HAVE_LATENCYTOP_SUPPORT=y&lt;br /&gt;
CONFIG_MMU=y&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 4-6&lt;br /&gt;
| 4-22&lt;br /&gt;
| Makefile Targets&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
qiang@qiang-laptop:~/Desktop/linux-2.6$ cat 4_6&lt;br /&gt;
qiang@qiang-laptop:~/Desktop/linux-2.6$ make help&lt;br /&gt;
Cleaning targets:&lt;br /&gt;
  clean		  - Remove most generated files but keep the config and&lt;br /&gt;
                    enough build support to build external modules&lt;br /&gt;
  mrproper	  - Remove all generated files + config + various backup files&lt;br /&gt;
  distclean	  - mrproper + remove editor backup and patch files&lt;br /&gt;
&lt;br /&gt;
Configuration targets:&lt;br /&gt;
  config	  - Update current config utilising a line-oriented program&lt;br /&gt;
  menuconfig	  - Update current config utilising a menu based program&lt;br /&gt;
  xconfig	  - Update current config utilising a QT based front-end&lt;br /&gt;
  gconfig	  - Update current config utilising a GTK based front-end&lt;br /&gt;
  oldconfig	  - Update current config utilising a provided .config as base&lt;br /&gt;
  localmodconfig  - Update current config disabling modules not loaded&lt;br /&gt;
  localyesconfig  - Update current config converting local mods to core&lt;br /&gt;
  silentoldconfig - Same as oldconfig, but quietly, additionally update deps&lt;br /&gt;
  randconfig	  - New config with random answer to all options&lt;br /&gt;
  defconfig	  - New config with default answer to all options&lt;br /&gt;
  allmodconfig	  - New config selecting modules when possible&lt;br /&gt;
  allyesconfig	  - New config where all options are accepted with yes&lt;br /&gt;
  allnoconfig	  - New config where all options are answered with no&lt;br /&gt;
&lt;br /&gt;
Other generic targets:&lt;br /&gt;
  all		  - Build all targets marked with [*]&lt;br /&gt;
* vmlinux	  - Build the bare kernel&lt;br /&gt;
* modules	  - Build all modules&lt;br /&gt;
  modules_install - Install all modules to INSTALL_MOD_PATH (default: /)&lt;br /&gt;
  firmware_install- Install all firmware to INSTALL_FW_PATH&lt;br /&gt;
                    (default: $(INSTALL_MOD_PATH)/lib/firmware)&lt;br /&gt;
  dir/            - Build all files in dir and below&lt;br /&gt;
  dir/file.[ois]  - Build specified target only&lt;br /&gt;
  dir/file.ko     - Build module including final link&lt;br /&gt;
  modules_prepare - Set up for building external modules&lt;br /&gt;
  tags/TAGS	  - Generate tags file for editors&lt;br /&gt;
  cscope	  - Generate cscope index&lt;br /&gt;
  kernelrelease	  - Output the release version string&lt;br /&gt;
  kernelversion	  - Output the version stored in Makefile&lt;br /&gt;
  headers_install - Install sanitised kernel headers to INSTALL_HDR_PATH&lt;br /&gt;
                    (default: /home/qiang/Desktop/linux-2.6/usr)&lt;br /&gt;
&lt;br /&gt;
Static analysers&lt;br /&gt;
  checkstack      - Generate a list of stack hogs&lt;br /&gt;
  namespacecheck  - Name space analysis on compiled kernel&lt;br /&gt;
  versioncheck    - Sanity check on version.h usage&lt;br /&gt;
  includecheck    - Check for duplicate included header files&lt;br /&gt;
  export_report   - List the usages of all exported symbols&lt;br /&gt;
  headers_check   - Sanity check on exported headers&lt;br /&gt;
  headerdep       - Detect inclusion cycles in headers&lt;br /&gt;
&lt;br /&gt;
Kernel packaging:&lt;br /&gt;
  rpm-pkg         - Build both source and binary RPM kernel packages&lt;br /&gt;
  binrpm-pkg      - Build only the binary kernel package&lt;br /&gt;
  deb-pkg         - Build the kernel as an deb package&lt;br /&gt;
  tar-pkg         - Build the kernel as an uncompressed tarball&lt;br /&gt;
  targz-pkg       - Build the kernel as a gzip compressed tarball&lt;br /&gt;
  tarbz2-pkg      - Build the kernel as a bzip2 compressed tarball&lt;br /&gt;
&lt;br /&gt;
Documentation targets:&lt;br /&gt;
 Linux kernel internal documentation in different formats:&lt;br /&gt;
  htmldocs        - HTML&lt;br /&gt;
  pdfdocs         - PDF&lt;br /&gt;
  psdocs          - Postscript&lt;br /&gt;
  xmldocs         - XML DocBook&lt;br /&gt;
  mandocs         - man pages&lt;br /&gt;
  installmandocs  - install man pages generated by mandocs&lt;br /&gt;
  cleandocs       - clean all generated DocBook files&lt;br /&gt;
&lt;br /&gt;
Architecture specific targets (x86):&lt;br /&gt;
* bzImage      - Compressed kernel image (arch/x86/boot/bzImage)&lt;br /&gt;
  install      - Install kernel using&lt;br /&gt;
                  (your) ~/bin/installkernel or&lt;br /&gt;
                  (distribution) /sbin/installkernel or&lt;br /&gt;
                  install to $(INSTALL_PATH) and run lilo&lt;br /&gt;
  fdimage      - Create 1.4MB boot floppy image (arch/x86/boot/fdimage)&lt;br /&gt;
  fdimage144   - Create 1.4MB boot floppy image (arch/x86/boot/fdimage)&lt;br /&gt;
  fdimage288   - Create 2.8MB boot floppy image (arch/x86/boot/fdimage)&lt;br /&gt;
  isoimage     - Create a boot CD-ROM image (arch/x86/boot/image.iso)&lt;br /&gt;
                  bzdisk/fdimage*/isoimage also accept:&lt;br /&gt;
                  FDARGS=&amp;quot;...&amp;quot;  arguments for the booted kernel&lt;br /&gt;
                  FDINITRD=file initrd for the booted kernel&lt;br /&gt;
&lt;br /&gt;
  i386_defconfig           - Build for i386&lt;br /&gt;
  x86_64_defconfig         - Build for x86_64&lt;br /&gt;
&lt;br /&gt;
  make V=0|1 [targets] 0 =&amp;gt; quiet build (default), 1 =&amp;gt; verbose build&lt;br /&gt;
  make V=2   [targets] 2 =&amp;gt; give reason for rebuild of target&lt;br /&gt;
  make O=dir [targets] Locate all output files in &amp;quot;dir&amp;quot;, including .config&lt;br /&gt;
  make C=1   [targets] Check all c source with $CHECK (sparse by default)&lt;br /&gt;
  make C=2   [targets] Force check of all c source with $CHECK&lt;br /&gt;
&lt;br /&gt;
Execute &amp;quot;make&amp;quot; or &amp;quot;make all&amp;quot; to build all targets marked with [*] &lt;br /&gt;
For further info see the ./README file&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 4-10&lt;br /&gt;
| 4-32&lt;br /&gt;
| Customized .config File Snippet&lt;br /&gt;
| &amp;lt;pre&amp;gt;qiang@qiang-laptop:~/Desktop/linux-2.6$ cat 4_10&lt;br /&gt;
# CONFIG_ARCH_PNX4008 is not set&lt;br /&gt;
# CONFIG_ARCH_PXA is not set&lt;br /&gt;
# CONFIG_ARCH_MSM is not set&lt;br /&gt;
# CONFIG_ARCH_SHMOBILE is not set&lt;br /&gt;
# CONFIG_ARCH_RPC is not set&lt;br /&gt;
# CONFIG_ARCH_SA1100 is not set&lt;br /&gt;
# CONFIG_ARCH_S3C2410 is not set&lt;br /&gt;
# CONFIG_ARCH_S3C64XX is not set&lt;br /&gt;
# CONFIG_ARCH_S5P6440 is not set&lt;br /&gt;
# CONFIG_ARCH_S5P6442 is not set&lt;br /&gt;
# CONFIG_ARCH_S5PC1XX is not set&lt;br /&gt;
# CONFIG_ARCH_S5PV210 is not set&lt;br /&gt;
# CONFIG_ARCH_SHARK is not set&lt;br /&gt;
# CONFIG_ARCH_LH7A40X is not set&lt;br /&gt;
# CONFIG_ARCH_U300 is not set&lt;br /&gt;
# CONFIG_ARCH_U8500 is not set&lt;br /&gt;
# CONFIG_ARCH_NOMADIK is not set&lt;br /&gt;
# CONFIG_ARCH_DAVINCI is not set&lt;br /&gt;
CONFIG_ARCH_OMAP=y&lt;br /&gt;
&lt;br /&gt;
# &lt;br /&gt;
# TI OMAP Implementations&lt;br /&gt;
# &lt;br /&gt;
# CONFIG_ARCH_OMAP1 is not set&lt;br /&gt;
CONFIG_ARCH_OMAP2PLUS=y&lt;br /&gt;
# CONFIG_ARCH_OMAP2 is not set&lt;br /&gt;
# CONFIG_ARCH_OMAP3 is not set&lt;br /&gt;
# CONFIG_ARCH_OMAP4 is not set&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 4-11&lt;br /&gt;
| 4-33&lt;br /&gt;
| Makefile from .../arch/arm/mach-ixp4xx Kernel Subdirectory&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
 qiang@qiang-laptop:~/Desktop/linux-2.6$ cat 4_11&lt;br /&gt;
qiang@qiang-laptop:~/Desktop/linux-2.6/arch/arm/plat-omap$ head -n 20 Makefile&lt;br /&gt;
#&lt;br /&gt;
# Makefile for the linux kernel.&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
# Common support&lt;br /&gt;
obj-y := common.o sram.o clock.o devices.o dma.o mux.o gpio.o \&lt;br /&gt;
	 usb.o fb.o io.o&lt;br /&gt;
obj-m :=&lt;br /&gt;
obj-n :=&lt;br /&gt;
obj-  :=&lt;br /&gt;
&lt;br /&gt;
# OCPI interconnect support for 1710, 1610 and 5912&lt;br /&gt;
obj-$(CONFIG_ARCH_OMAP16XX) += ocpi.o&lt;br /&gt;
&lt;br /&gt;
# omap_device support (OMAP2+ only at the moment)&lt;br /&gt;
obj-$(CONFIG_ARCH_OMAP2) += omap_device.o&lt;br /&gt;
obj-$(CONFIG_ARCH_OMAP3) += omap_device.o&lt;br /&gt;
&lt;br /&gt;
obj-$(CONFIG_OMAP_MCBSP) += mcbsp.o&lt;br /&gt;
obj-$(CONFIG_OMAP_IOMMU) += iommu.o iovmm.o&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Chapter 5 ==&lt;br /&gt;
{|&lt;br /&gt;
! Number&lt;br /&gt;
! Page&lt;br /&gt;
! Caption&lt;br /&gt;
! Listing&lt;br /&gt;
|-&lt;br /&gt;
| 5-2&lt;br /&gt;
| 5-5&lt;br /&gt;
| Assembly File piggy.s&lt;br /&gt;
| &amp;lt;pre&amp;gt;  qiang@qiang-laptop:~/Desktop/linux-2.6/arch/arm/boot/compressed$ cat piggy.gzip.S &lt;br /&gt;
	.section .piggydata,#alloc&lt;br /&gt;
	.globl	input_data&lt;br /&gt;
input_data:&lt;br /&gt;
	.incbin	&amp;quot;arch/arm/boot/compressed/piggy.gzip&amp;quot;&lt;br /&gt;
	.globl	input_data_end&lt;br /&gt;
input_data_end:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 5-4&lt;br /&gt;
| 5-18&lt;br /&gt;
| Console Setup Code Snippet&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
qiang@qiang-laptop:~/Desktop/linux-2.6/arch/arm/boot/compressed$ cat piggy.gzip.S &lt;br /&gt;
	.section .piggydata,#alloc&lt;br /&gt;
	.globl	input_data&lt;br /&gt;
input_data:&lt;br /&gt;
	.incbin	&amp;quot;arch/arm/boot/compressed/piggy.gzip&amp;quot;&lt;br /&gt;
	.globl	input_data_end&lt;br /&gt;
input_data_end:&lt;br /&gt;
&lt;br /&gt;
qiang@qiang-laptop:~/Desktop/linux-2.6$ cat 5_4&lt;br /&gt;
/*&lt;br /&gt;
 * Set up a list of consoles.  Called from init/main.c&lt;br /&gt;
 */&lt;br /&gt;
static int __init console_setup(char *str)&lt;br /&gt;
{&lt;br /&gt;
        char buf[sizeof(console_cmdline[0].name) + 4]; /* 4 for index */&lt;br /&gt;
        char *s, *options, *brl_options = NULL;&lt;br /&gt;
        int idx;&lt;br /&gt;
&lt;br /&gt;
#ifdef CONFIG_A11Y_BRAILLE_CONSOLE&lt;br /&gt;
        if (!memcmp(str, &amp;quot;brl,&amp;quot;, 4)) {&lt;br /&gt;
                brl_options = &amp;quot;&amp;quot;;&lt;br /&gt;
                str += 4;&lt;br /&gt;
        } else if (!memcmp(str, &amp;quot;brl=&amp;quot;, 4)) {&lt;br /&gt;
                brl_options = str + 4;&lt;br /&gt;
                str = strchr(brl_options, ',');&lt;br /&gt;
                if (!str) {&lt;br /&gt;
                        printk(KERN_ERR &amp;quot;need port name after brl=\n&amp;quot;);&lt;br /&gt;
                        return 1;&lt;br /&gt;
                }&lt;br /&gt;
                *(str++) = 0;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 5-5&lt;br /&gt;
| 5-19&lt;br /&gt;
| Family of _setup Macro Definitions from init.h&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
qiang@qiang-laptop:~/Desktop/linux-2.6$ cat 5_5&lt;br /&gt;
/*&lt;br /&gt;
 * Only for really core code.  See moduleparam.h for the normal way.&lt;br /&gt;
 * &lt;br /&gt;
 * Force the alignment so the compiler doesn't space elements of the&lt;br /&gt;
 * obs_kernel_param &amp;quot;array&amp;quot; too far apart in .init.setup.&lt;br /&gt;
 */&lt;br /&gt;
#define __setup_param(str, unique_id, fn, early)                        \&lt;br /&gt;
        static const char __setup_str_##unique_id[] __initconst \&lt;br /&gt;
                __aligned(1) = str; \&lt;br /&gt;
        static struct obs_kernel_param __setup_##unique_id      \&lt;br /&gt;
                __used __section(.init.setup)                   \&lt;br /&gt;
                __attribute__((aligned((sizeof(long)))))        \&lt;br /&gt;
                = { __setup_str_##unique_id, fn, early }&lt;br /&gt;
&lt;br /&gt;
#define __setup(str, fn)                                        \&lt;br /&gt;
        __setup_param(str, fn, fn, 0)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 5-6&lt;br /&gt;
| 5-20&lt;br /&gt;
| Kernel Command Line Processing&lt;br /&gt;
| &amp;lt;pre&amp;gt;qiang@qiang-laptop:~/Desktop/linux-2.6$ cat 5_6&lt;br /&gt;
static int __init obsolete_checksetup(char *line)&lt;br /&gt;
{&lt;br /&gt;
        struct obs_kernel_param *p;&lt;br /&gt;
        int had_early_param = 0;&lt;br /&gt;
&lt;br /&gt;
        p = __setup_start;&lt;br /&gt;
        do {&lt;br /&gt;
                int n = strlen(p-&amp;gt;str);&lt;br /&gt;
                if (!strncmp(line, p-&amp;gt;str, n)) {&lt;br /&gt;
                        if (p-&amp;gt;early) {&lt;br /&gt;
                                /* Already done in parse_early_param?&lt;br /&gt;
                                 * (Needs exact match on param part).&lt;br /&gt;
                                 * Keep iterating, as we can have early&lt;br /&gt;
                                 * params and __setups of same names 8( */&lt;br /&gt;
                                if (line[n] == '\0' || line[n] == '=')&lt;br /&gt;
                                        had_early_param = 1;&lt;br /&gt;
                        } else if (!p-&amp;gt;setup_func) {&lt;br /&gt;
                                printk(KERN_WARNING &amp;quot;Parameter %s is obsolete,&amp;quot;&lt;br /&gt;
                                       &amp;quot; ignored\n&amp;quot;, p-&amp;gt;str);&lt;br /&gt;
                                return 1;&lt;br /&gt;
                        } else if (p-&amp;gt;setup_func(line + n))&lt;br /&gt;
                                return 1;&lt;br /&gt;
                }&lt;br /&gt;
                p++;&lt;br /&gt;
        } while (p &amp;lt; __setup_end);&lt;br /&gt;
&lt;br /&gt;
        return had_early_param;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 5-7&lt;br /&gt;
| 5-23&lt;br /&gt;
| Example Initialization Routine&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
 qiang@qiang-laptop:~/Desktop/linux-2.6$ cat 5_7&lt;br /&gt;
static void (*init_machine)(void) __initdata;&lt;br /&gt;
&lt;br /&gt;
static int __init customize_machine(void)&lt;br /&gt;
{&lt;br /&gt;
        /* customizes platform devices, or adds new ones */&lt;br /&gt;
        if (init_machine)&lt;br /&gt;
                init_machine();&lt;br /&gt;
        return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 5-8&lt;br /&gt;
| 5-23&lt;br /&gt;
| initcall Family of Macros&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
 qiang@qiang-laptop:~/Desktop/linux-2.6$ cat 5_8&lt;br /&gt;
#define __define_initcall(level,fn,id) \&lt;br /&gt;
        static initcall_t __initcall_##fn##id __used \&lt;br /&gt;
        __attribute__((__section__(&amp;quot;.initcall&amp;quot; level &amp;quot;.init&amp;quot;))) = fn&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
 * Early initcalls run before initializing SMP.&lt;br /&gt;
 *&lt;br /&gt;
 * Only for built-in code, not modules.&lt;br /&gt;
 */&lt;br /&gt;
#define early_initcall(fn)              __define_initcall(&amp;quot;early&amp;quot;,fn,early)&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
 * A &amp;quot;pure&amp;quot; initcall has no dependencies on anything else, and purely&lt;br /&gt;
 * initializes variables that couldn't be statically initialized.&lt;br /&gt;
 *&lt;br /&gt;
 * This only exists for built-in code, not for modules.&lt;br /&gt;
 */&lt;br /&gt;
#define pure_initcall(fn)               __define_initcall(&amp;quot;0&amp;quot;,fn,0)&lt;br /&gt;
&lt;br /&gt;
#define core_initcall(fn)               __define_initcall(&amp;quot;1&amp;quot;,fn,1)&lt;br /&gt;
#define core_initcall_sync(fn)          __define_initcall(&amp;quot;1s&amp;quot;,fn,1s)&lt;br /&gt;
#define postcore_initcall(fn)           __define_initcall(&amp;quot;2&amp;quot;,fn,2)&lt;br /&gt;
#define postcore_initcall_sync(fn)      __define_initcall(&amp;quot;2s&amp;quot;,fn,2s)&lt;br /&gt;
#define arch_initcall(fn)               __define_initcall(&amp;quot;3&amp;quot;,fn,3)&lt;br /&gt;
#define arch_initcall_sync(fn)          __define_initcall(&amp;quot;3s&amp;quot;,fn,3s)&lt;br /&gt;
#define subsys_initcall(fn)             __define_initcall(&amp;quot;4&amp;quot;,fn,4)&lt;br /&gt;
#define subsys_initcall_sync(fn)        __define_initcall(&amp;quot;4s&amp;quot;,fn,4s)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 5-9&lt;br /&gt;
| 5-26&lt;br /&gt;
| Creation of Kernel init Thread&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
 qiang@qiang-laptop:~/Desktop/linux-2.6$ cat 5_9&lt;br /&gt;
static noinline void __init_refok rest_init(void)&lt;br /&gt;
        __releases(kernel_lock)&lt;br /&gt;
{&lt;br /&gt;
        int pid;&lt;br /&gt;
&lt;br /&gt;
        rcu_scheduler_starting();&lt;br /&gt;
        kernel_thread(kernel_init, NULL, CLONE_FS | CLONE_SIGHAND);&lt;br /&gt;
        numa_default_policy();&lt;br /&gt;
        pid = kernel_thread(kthreadd, NULL, CLONE_FS | CLONE_FILES);&lt;br /&gt;
        rcu_read_lock();&lt;br /&gt;
        kthreadd_task = find_task_by_pid_ns(pid, &amp;amp;init_pid_ns);&lt;br /&gt;
        rcu_read_unlock();&lt;br /&gt;
        unlock_kernel();&lt;br /&gt;
&lt;br /&gt;
        /*&lt;br /&gt;
         * The boot idle thread must execute schedule()&lt;br /&gt;
         * at least once to get things moving:&lt;br /&gt;
         */&lt;br /&gt;
        init_idle_bootup_task(current);&lt;br /&gt;
        preempt_enable_no_resched();&lt;br /&gt;
        schedule();&lt;br /&gt;
        preempt_disable();&lt;br /&gt;
&lt;br /&gt;
        /* Call into cpu_idle with preempt disabled */&lt;br /&gt;
        cpu_idle();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 5-10&lt;br /&gt;
| 5-27&lt;br /&gt;
| Initialization via initcalls&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
 qiang@qiang-laptop:~/Desktop/linux-2.6$ cat 5_10&lt;br /&gt;
extern initcall_t __initcall_start[], __initcall_end[], __early_initcall_end[];&lt;br /&gt;
&lt;br /&gt;
static void __init do_initcalls(void)&lt;br /&gt;
{&lt;br /&gt;
        initcall_t *fn;&lt;br /&gt;
&lt;br /&gt;
        for (fn = __early_initcall_end; fn &amp;lt; __initcall_end; fn++)&lt;br /&gt;
                do_one_initcall(*fn);&lt;br /&gt;
&lt;br /&gt;
        /* Make sure there is no pending stuff from the initcall sequence */&lt;br /&gt;
        flush_scheduled_work();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 5-11&lt;br /&gt;
| 5-28&lt;br /&gt;
| Final Kernel Boot Steps from main.c&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
qiang@qiang-laptop:~/Desktop/linux-2.6$ cat 5_11&lt;br /&gt;
 * makes it inline to init() and it becomes part of init.text section&lt;br /&gt;
 */&lt;br /&gt;
static noinline int init_post(void)&lt;br /&gt;
        __releases(kernel_lock)&lt;br /&gt;
{&lt;br /&gt;
        /* need to finish all async __init code before freeing the memory */&lt;br /&gt;
        async_synchronize_full();&lt;br /&gt;
        free_initmem();&lt;br /&gt;
        unlock_kernel();&lt;br /&gt;
        mark_rodata_ro();&lt;br /&gt;
        system_state = SYSTEM_RUNNING;&lt;br /&gt;
        numa_default_policy();&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        current-&amp;gt;signal-&amp;gt;flags |= SIGNAL_UNKILLABLE;&lt;br /&gt;
&lt;br /&gt;
        if (ramdisk_execute_command) {&lt;br /&gt;
                run_init_process(ramdisk_execute_command);&lt;br /&gt;
                printk(KERN_WARNING &amp;quot;Failed to execute %s\n&amp;quot;,&lt;br /&gt;
                                ramdisk_execute_command);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Jiangq</name></author>	</entry>

	<entry>
		<id>http://elinux.org/User:Jiangq</id>
		<title>User:Jiangq</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/User:Jiangq"/>
				<updated>2010-04-15T17:20:17Z</updated>
		
		<summary type="html">&lt;p&gt;Jiangq: /* Listings */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Listings =&lt;br /&gt;
== Chapter 4 ==&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Number&lt;br /&gt;
! Page&lt;br /&gt;
! Caption&lt;br /&gt;
! Listing&lt;br /&gt;
|-&lt;br /&gt;
| 4-3&lt;br /&gt;
| 4-15&lt;br /&gt;
| Kernel Subdirectory&lt;br /&gt;
| &amp;lt;pre&amp;gt;  qiang@qiang-laptop:~/Desktop/linux-2.6$ cat 4_3&lt;br /&gt;
qiang@qiang-laptop:~/Desktop/linux-2.6$ ls -ls arch/arm/plat-omap/ | grep -v \\.o&lt;br /&gt;
total 432&lt;br /&gt;
12 -rw-r--r-- 1 qiang qiang 11124 2010-03-23 20:06 clock.c&lt;br /&gt;
12 -rw-r--r-- 1 qiang qiang  8521 2010-03-23 20:06 common.c&lt;br /&gt;
 4 -rw-r--r-- 1 qiang qiang  4033 2010-03-23 20:06 cpu-omap.c&lt;br /&gt;
 4 -rw-r--r-- 1 qiang qiang  2192 2010-03-23 20:06 debug-devices.c&lt;br /&gt;
 8 -rw-r--r-- 1 qiang qiang  7170 2010-03-23 20:06 debug-leds.c&lt;br /&gt;
12 -rw-r--r-- 1 qiang qiang 10890 2010-03-23 20:06 devices.c&lt;br /&gt;
56 -rw-r--r-- 1 qiang qiang 52586 2010-03-23 20:06 dma.c&lt;br /&gt;
24 -rw-r--r-- 1 qiang qiang 22660 2010-03-23 20:06 dmtimer.c&lt;br /&gt;
12 -rw-r--r-- 1 qiang qiang 10055 2010-03-23 20:06 fb.c&lt;br /&gt;
64 -rw-r--r-- 1 qiang qiang 61308 2010-03-23 20:06 gpio.c&lt;br /&gt;
 8 -rw-r--r-- 1 qiang qiang  5058 2010-03-23 20:06 i2c.c&lt;br /&gt;
 4 drwxr-xr-x 3 qiang qiang  4096 2010-03-23 20:06 include&lt;br /&gt;
 8 -rw-r--r-- 1 qiang qiang  6265 2010-03-23 20:06 io.c&lt;br /&gt;
24 -rw-r--r-- 1 qiang qiang 20765 2010-03-23 20:06 iommu.c&lt;br /&gt;
12 -rw-r--r-- 1 qiang qiang  9117 2010-03-23 20:06 iommu-debug.c&lt;br /&gt;
 4 -rw-r--r-- 1 qiang qiang  2745 2010-03-23 20:06 iopgtable.h&lt;br /&gt;
20 -rw-r--r-- 1 qiang qiang 19320 2010-03-23 20:06 iovmm.c&lt;br /&gt;
 8 -rw-r--r-- 1 qiang qiang  4819 2010-03-23 20:06 Kconfig&lt;br /&gt;
12 -rw-r--r-- 1 qiang qiang  8522 2010-03-23 20:06 mailbox.c&lt;br /&gt;
 4 -rw-r--r-- 1 qiang qiang   882 2010-03-23 20:06 Makefile&lt;br /&gt;
44 -rw-r--r-- 1 qiang qiang 43730 2010-03-23 20:06 mcbsp.c&lt;br /&gt;
 4 -rw-r--r-- 1 qiang qiang  2263 2010-03-23 20:06 mux.c&lt;br /&gt;
 4 -rw-r--r-- 1 qiang qiang  2739 2010-03-23 20:06 ocpi.c&lt;br /&gt;
24 -rw-r--r-- 1 qiang qiang 21397 2010-03-23 20:06 omap_device.c&lt;br /&gt;
 8 -rw-r--r-- 1 qiang qiang  7069 2010-03-23 20:06 omap-pm-noop.c&lt;br /&gt;
16 -rw-r--r-- 1 qiang qiang 12878 2010-03-23 20:06 sram.c&lt;br /&gt;
20 -rw-r--r-- 1 qiang qiang 18770 2010-03-23 20:06 usb.c&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 4-4&lt;br /&gt;
| 4-17&lt;br /&gt;
| Snippet from Linux 2.6.config&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
qiang@qiang-laptop:~/Desktop/linux-2.6$ cat 4_4&lt;br /&gt;
#&lt;br /&gt;
# CONFIG_64BIT is not set&lt;br /&gt;
CONFIG_X86_32=y&lt;br /&gt;
# CONFIG_X86_64 is not set&lt;br /&gt;
CONFIG_X86=y&lt;br /&gt;
CONFIG_OUTPUT_FORMAT=&amp;quot;elf32-i386&amp;quot;&lt;br /&gt;
CONFIG_ARCH_DEFCONFIG=&amp;quot;arch/x86/configs/i386_defconfig&amp;quot;&lt;br /&gt;
CONFIG_GENERIC_TIME=y&lt;br /&gt;
CONFIG_GENERIC_CMOS_UPDATE=y&lt;br /&gt;
CONFIG_CLOCKSOURCE_WATCHDOG=y&lt;br /&gt;
CONFIG_GENERIC_CLOCKEVENTS=y&lt;br /&gt;
CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y&lt;br /&gt;
CONFIG_LOCKDEP_SUPPORT=y&lt;br /&gt;
CONFIG_STACKTRACE_SUPPORT=y&lt;br /&gt;
CONFIG_HAVE_LATENCYTOP_SUPPORT=y&lt;br /&gt;
CONFIG_MMU=y&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 4-6&lt;br /&gt;
| 4-22&lt;br /&gt;
| Makefile Targets&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
qiang@qiang-laptop:~/Desktop/linux-2.6$ cat 4_6&lt;br /&gt;
qiang@qiang-laptop:~/Desktop/linux-2.6$ make help&lt;br /&gt;
Cleaning targets:&lt;br /&gt;
  clean		  - Remove most generated files but keep the config and&lt;br /&gt;
                    enough build support to build external modules&lt;br /&gt;
  mrproper	  - Remove all generated files + config + various backup files&lt;br /&gt;
  distclean	  - mrproper + remove editor backup and patch files&lt;br /&gt;
&lt;br /&gt;
Configuration targets:&lt;br /&gt;
  config	  - Update current config utilising a line-oriented program&lt;br /&gt;
  menuconfig	  - Update current config utilising a menu based program&lt;br /&gt;
  xconfig	  - Update current config utilising a QT based front-end&lt;br /&gt;
  gconfig	  - Update current config utilising a GTK based front-end&lt;br /&gt;
  oldconfig	  - Update current config utilising a provided .config as base&lt;br /&gt;
  localmodconfig  - Update current config disabling modules not loaded&lt;br /&gt;
  localyesconfig  - Update current config converting local mods to core&lt;br /&gt;
  silentoldconfig - Same as oldconfig, but quietly, additionally update deps&lt;br /&gt;
  randconfig	  - New config with random answer to all options&lt;br /&gt;
  defconfig	  - New config with default answer to all options&lt;br /&gt;
  allmodconfig	  - New config selecting modules when possible&lt;br /&gt;
  allyesconfig	  - New config where all options are accepted with yes&lt;br /&gt;
  allnoconfig	  - New config where all options are answered with no&lt;br /&gt;
&lt;br /&gt;
Other generic targets:&lt;br /&gt;
  all		  - Build all targets marked with [*]&lt;br /&gt;
* vmlinux	  - Build the bare kernel&lt;br /&gt;
* modules	  - Build all modules&lt;br /&gt;
  modules_install - Install all modules to INSTALL_MOD_PATH (default: /)&lt;br /&gt;
  firmware_install- Install all firmware to INSTALL_FW_PATH&lt;br /&gt;
                    (default: $(INSTALL_MOD_PATH)/lib/firmware)&lt;br /&gt;
  dir/            - Build all files in dir and below&lt;br /&gt;
  dir/file.[ois]  - Build specified target only&lt;br /&gt;
  dir/file.ko     - Build module including final link&lt;br /&gt;
  modules_prepare - Set up for building external modules&lt;br /&gt;
  tags/TAGS	  - Generate tags file for editors&lt;br /&gt;
  cscope	  - Generate cscope index&lt;br /&gt;
  kernelrelease	  - Output the release version string&lt;br /&gt;
  kernelversion	  - Output the version stored in Makefile&lt;br /&gt;
  headers_install - Install sanitised kernel headers to INSTALL_HDR_PATH&lt;br /&gt;
                    (default: /home/qiang/Desktop/linux-2.6/usr)&lt;br /&gt;
&lt;br /&gt;
Static analysers&lt;br /&gt;
  checkstack      - Generate a list of stack hogs&lt;br /&gt;
  namespacecheck  - Name space analysis on compiled kernel&lt;br /&gt;
  versioncheck    - Sanity check on version.h usage&lt;br /&gt;
  includecheck    - Check for duplicate included header files&lt;br /&gt;
  export_report   - List the usages of all exported symbols&lt;br /&gt;
  headers_check   - Sanity check on exported headers&lt;br /&gt;
  headerdep       - Detect inclusion cycles in headers&lt;br /&gt;
&lt;br /&gt;
Kernel packaging:&lt;br /&gt;
  rpm-pkg         - Build both source and binary RPM kernel packages&lt;br /&gt;
  binrpm-pkg      - Build only the binary kernel package&lt;br /&gt;
  deb-pkg         - Build the kernel as an deb package&lt;br /&gt;
  tar-pkg         - Build the kernel as an uncompressed tarball&lt;br /&gt;
  targz-pkg       - Build the kernel as a gzip compressed tarball&lt;br /&gt;
  tarbz2-pkg      - Build the kernel as a bzip2 compressed tarball&lt;br /&gt;
&lt;br /&gt;
Documentation targets:&lt;br /&gt;
 Linux kernel internal documentation in different formats:&lt;br /&gt;
  htmldocs        - HTML&lt;br /&gt;
  pdfdocs         - PDF&lt;br /&gt;
  psdocs          - Postscript&lt;br /&gt;
  xmldocs         - XML DocBook&lt;br /&gt;
  mandocs         - man pages&lt;br /&gt;
  installmandocs  - install man pages generated by mandocs&lt;br /&gt;
  cleandocs       - clean all generated DocBook files&lt;br /&gt;
&lt;br /&gt;
Architecture specific targets (x86):&lt;br /&gt;
* bzImage      - Compressed kernel image (arch/x86/boot/bzImage)&lt;br /&gt;
  install      - Install kernel using&lt;br /&gt;
                  (your) ~/bin/installkernel or&lt;br /&gt;
                  (distribution) /sbin/installkernel or&lt;br /&gt;
                  install to $(INSTALL_PATH) and run lilo&lt;br /&gt;
  fdimage      - Create 1.4MB boot floppy image (arch/x86/boot/fdimage)&lt;br /&gt;
  fdimage144   - Create 1.4MB boot floppy image (arch/x86/boot/fdimage)&lt;br /&gt;
  fdimage288   - Create 2.8MB boot floppy image (arch/x86/boot/fdimage)&lt;br /&gt;
  isoimage     - Create a boot CD-ROM image (arch/x86/boot/image.iso)&lt;br /&gt;
                  bzdisk/fdimage*/isoimage also accept:&lt;br /&gt;
                  FDARGS=&amp;quot;...&amp;quot;  arguments for the booted kernel&lt;br /&gt;
                  FDINITRD=file initrd for the booted kernel&lt;br /&gt;
&lt;br /&gt;
  i386_defconfig           - Build for i386&lt;br /&gt;
  x86_64_defconfig         - Build for x86_64&lt;br /&gt;
&lt;br /&gt;
  make V=0|1 [targets] 0 =&amp;gt; quiet build (default), 1 =&amp;gt; verbose build&lt;br /&gt;
  make V=2   [targets] 2 =&amp;gt; give reason for rebuild of target&lt;br /&gt;
  make O=dir [targets] Locate all output files in &amp;quot;dir&amp;quot;, including .config&lt;br /&gt;
  make C=1   [targets] Check all c source with $CHECK (sparse by default)&lt;br /&gt;
  make C=2   [targets] Force check of all c source with $CHECK&lt;br /&gt;
&lt;br /&gt;
Execute &amp;quot;make&amp;quot; or &amp;quot;make all&amp;quot; to build all targets marked with [*] &lt;br /&gt;
For further info see the ./README file&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 4-10&lt;br /&gt;
| 4-32&lt;br /&gt;
| Customized .config File Snippet&lt;br /&gt;
| &amp;lt;pre&amp;gt;qiang@qiang-laptop:~/Desktop/linux-2.6$ cat 4_10&lt;br /&gt;
# CONFIG_ARCH_PNX4008 is not set&lt;br /&gt;
# CONFIG_ARCH_PXA is not set&lt;br /&gt;
# CONFIG_ARCH_MSM is not set&lt;br /&gt;
# CONFIG_ARCH_SHMOBILE is not set&lt;br /&gt;
# CONFIG_ARCH_RPC is not set&lt;br /&gt;
# CONFIG_ARCH_SA1100 is not set&lt;br /&gt;
# CONFIG_ARCH_S3C2410 is not set&lt;br /&gt;
# CONFIG_ARCH_S3C64XX is not set&lt;br /&gt;
# CONFIG_ARCH_S5P6440 is not set&lt;br /&gt;
# CONFIG_ARCH_S5P6442 is not set&lt;br /&gt;
# CONFIG_ARCH_S5PC1XX is not set&lt;br /&gt;
# CONFIG_ARCH_S5PV210 is not set&lt;br /&gt;
# CONFIG_ARCH_SHARK is not set&lt;br /&gt;
# CONFIG_ARCH_LH7A40X is not set&lt;br /&gt;
# CONFIG_ARCH_U300 is not set&lt;br /&gt;
# CONFIG_ARCH_U8500 is not set&lt;br /&gt;
# CONFIG_ARCH_NOMADIK is not set&lt;br /&gt;
# CONFIG_ARCH_DAVINCI is not set&lt;br /&gt;
CONFIG_ARCH_OMAP=y&lt;br /&gt;
&lt;br /&gt;
# &lt;br /&gt;
# TI OMAP Implementations&lt;br /&gt;
# &lt;br /&gt;
# CONFIG_ARCH_OMAP1 is not set&lt;br /&gt;
CONFIG_ARCH_OMAP2PLUS=y&lt;br /&gt;
# CONFIG_ARCH_OMAP2 is not set&lt;br /&gt;
# CONFIG_ARCH_OMAP3 is not set&lt;br /&gt;
# CONFIG_ARCH_OMAP4 is not set&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 4-11&lt;br /&gt;
| 4-33&lt;br /&gt;
| Makefile from .../arch/arm/mach-ixp4xx Kernel Subdirectory&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
 qiang@qiang-laptop:~/Desktop/linux-2.6$ cat 4_11&lt;br /&gt;
qiang@qiang-laptop:~/Desktop/linux-2.6/arch/arm/plat-omap$ head -n 20 Makefile&lt;br /&gt;
#&lt;br /&gt;
# Makefile for the linux kernel.&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
# Common support&lt;br /&gt;
obj-y := common.o sram.o clock.o devices.o dma.o mux.o gpio.o \&lt;br /&gt;
	 usb.o fb.o io.o&lt;br /&gt;
obj-m :=&lt;br /&gt;
obj-n :=&lt;br /&gt;
obj-  :=&lt;br /&gt;
&lt;br /&gt;
# OCPI interconnect support for 1710, 1610 and 5912&lt;br /&gt;
obj-$(CONFIG_ARCH_OMAP16XX) += ocpi.o&lt;br /&gt;
&lt;br /&gt;
# omap_device support (OMAP2+ only at the moment)&lt;br /&gt;
obj-$(CONFIG_ARCH_OMAP2) += omap_device.o&lt;br /&gt;
obj-$(CONFIG_ARCH_OMAP3) += omap_device.o&lt;br /&gt;
&lt;br /&gt;
obj-$(CONFIG_OMAP_MCBSP) += mcbsp.o&lt;br /&gt;
obj-$(CONFIG_OMAP_IOMMU) += iommu.o iovmm.o&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Jiangq</name></author>	</entry>

	<entry>
		<id>http://elinux.org/User:Jiangq</id>
		<title>User:Jiangq</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/User:Jiangq"/>
				<updated>2010-04-15T17:18:05Z</updated>
		
		<summary type="html">&lt;p&gt;Jiangq: /* Listings */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Listings =&lt;br /&gt;
== Chapter 4 ==&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Number&lt;br /&gt;
! Page&lt;br /&gt;
! Caption&lt;br /&gt;
! Listing&lt;br /&gt;
|-&lt;br /&gt;
| 4-3&lt;br /&gt;
| 4-15&lt;br /&gt;
| Kernel Subdirectory&lt;br /&gt;
| &amp;lt;pre&amp;gt;  qiang@qiang-laptop:~/Desktop/linux-2.6$ cat 4_3&lt;br /&gt;
qiang@qiang-laptop:~/Desktop/linux-2.6$ ls -ls arch/arm/plat-omap/ | grep -v \\.o&lt;br /&gt;
total 432&lt;br /&gt;
12 -rw-r--r-- 1 qiang qiang 11124 2010-03-23 20:06 clock.c&lt;br /&gt;
12 -rw-r--r-- 1 qiang qiang  8521 2010-03-23 20:06 common.c&lt;br /&gt;
 4 -rw-r--r-- 1 qiang qiang  4033 2010-03-23 20:06 cpu-omap.c&lt;br /&gt;
 4 -rw-r--r-- 1 qiang qiang  2192 2010-03-23 20:06 debug-devices.c&lt;br /&gt;
 8 -rw-r--r-- 1 qiang qiang  7170 2010-03-23 20:06 debug-leds.c&lt;br /&gt;
12 -rw-r--r-- 1 qiang qiang 10890 2010-03-23 20:06 devices.c&lt;br /&gt;
56 -rw-r--r-- 1 qiang qiang 52586 2010-03-23 20:06 dma.c&lt;br /&gt;
24 -rw-r--r-- 1 qiang qiang 22660 2010-03-23 20:06 dmtimer.c&lt;br /&gt;
12 -rw-r--r-- 1 qiang qiang 10055 2010-03-23 20:06 fb.c&lt;br /&gt;
64 -rw-r--r-- 1 qiang qiang 61308 2010-03-23 20:06 gpio.c&lt;br /&gt;
 8 -rw-r--r-- 1 qiang qiang  5058 2010-03-23 20:06 i2c.c&lt;br /&gt;
 4 drwxr-xr-x 3 qiang qiang  4096 2010-03-23 20:06 include&lt;br /&gt;
 8 -rw-r--r-- 1 qiang qiang  6265 2010-03-23 20:06 io.c&lt;br /&gt;
24 -rw-r--r-- 1 qiang qiang 20765 2010-03-23 20:06 iommu.c&lt;br /&gt;
12 -rw-r--r-- 1 qiang qiang  9117 2010-03-23 20:06 iommu-debug.c&lt;br /&gt;
 4 -rw-r--r-- 1 qiang qiang  2745 2010-03-23 20:06 iopgtable.h&lt;br /&gt;
20 -rw-r--r-- 1 qiang qiang 19320 2010-03-23 20:06 iovmm.c&lt;br /&gt;
 8 -rw-r--r-- 1 qiang qiang  4819 2010-03-23 20:06 Kconfig&lt;br /&gt;
12 -rw-r--r-- 1 qiang qiang  8522 2010-03-23 20:06 mailbox.c&lt;br /&gt;
 4 -rw-r--r-- 1 qiang qiang   882 2010-03-23 20:06 Makefile&lt;br /&gt;
44 -rw-r--r-- 1 qiang qiang 43730 2010-03-23 20:06 mcbsp.c&lt;br /&gt;
 4 -rw-r--r-- 1 qiang qiang  2263 2010-03-23 20:06 mux.c&lt;br /&gt;
 4 -rw-r--r-- 1 qiang qiang  2739 2010-03-23 20:06 ocpi.c&lt;br /&gt;
24 -rw-r--r-- 1 qiang qiang 21397 2010-03-23 20:06 omap_device.c&lt;br /&gt;
 8 -rw-r--r-- 1 qiang qiang  7069 2010-03-23 20:06 omap-pm-noop.c&lt;br /&gt;
16 -rw-r--r-- 1 qiang qiang 12878 2010-03-23 20:06 sram.c&lt;br /&gt;
20 -rw-r--r-- 1 qiang qiang 18770 2010-03-23 20:06 usb.c&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 4-4&lt;br /&gt;
| 4-17&lt;br /&gt;
| Snippet from Linux 2.6.config&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
qiang@qiang-laptop:~/Desktop/linux-2.6$ cat 4_4&lt;br /&gt;
#&lt;br /&gt;
# CONFIG_64BIT is not set&lt;br /&gt;
CONFIG_X86_32=y&lt;br /&gt;
# CONFIG_X86_64 is not set&lt;br /&gt;
CONFIG_X86=y&lt;br /&gt;
CONFIG_OUTPUT_FORMAT=&amp;quot;elf32-i386&amp;quot;&lt;br /&gt;
CONFIG_ARCH_DEFCONFIG=&amp;quot;arch/x86/configs/i386_defconfig&amp;quot;&lt;br /&gt;
CONFIG_GENERIC_TIME=y&lt;br /&gt;
CONFIG_GENERIC_CMOS_UPDATE=y&lt;br /&gt;
CONFIG_CLOCKSOURCE_WATCHDOG=y&lt;br /&gt;
CONFIG_GENERIC_CLOCKEVENTS=y&lt;br /&gt;
CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y&lt;br /&gt;
CONFIG_LOCKDEP_SUPPORT=y&lt;br /&gt;
CONFIG_STACKTRACE_SUPPORT=y&lt;br /&gt;
CONFIG_HAVE_LATENCYTOP_SUPPORT=y&lt;br /&gt;
CONFIG_MMU=y&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 4-6&lt;br /&gt;
| 4-22&lt;br /&gt;
| Makefile Targets&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
qiang@qiang-laptop:~/Desktop/linux-2.6$ cat 4_6&lt;br /&gt;
qiang@qiang-laptop:~/Desktop/linux-2.6$ make help&lt;br /&gt;
Cleaning targets:&lt;br /&gt;
  clean		  - Remove most generated files but keep the config and&lt;br /&gt;
                    enough build support to build external modules&lt;br /&gt;
  mrproper	  - Remove all generated files + config + various backup files&lt;br /&gt;
  distclean	  - mrproper + remove editor backup and patch files&lt;br /&gt;
&lt;br /&gt;
Configuration targets:&lt;br /&gt;
  config	  - Update current config utilising a line-oriented program&lt;br /&gt;
  menuconfig	  - Update current config utilising a menu based program&lt;br /&gt;
  xconfig	  - Update current config utilising a QT based front-end&lt;br /&gt;
  gconfig	  - Update current config utilising a GTK based front-end&lt;br /&gt;
  oldconfig	  - Update current config utilising a provided .config as base&lt;br /&gt;
  localmodconfig  - Update current config disabling modules not loaded&lt;br /&gt;
  localyesconfig  - Update current config converting local mods to core&lt;br /&gt;
  silentoldconfig - Same as oldconfig, but quietly, additionally update deps&lt;br /&gt;
  randconfig	  - New config with random answer to all options&lt;br /&gt;
  defconfig	  - New config with default answer to all options&lt;br /&gt;
  allmodconfig	  - New config selecting modules when possible&lt;br /&gt;
  allyesconfig	  - New config where all options are accepted with yes&lt;br /&gt;
  allnoconfig	  - New config where all options are answered with no&lt;br /&gt;
&lt;br /&gt;
Other generic targets:&lt;br /&gt;
  all		  - Build all targets marked with [*]&lt;br /&gt;
* vmlinux	  - Build the bare kernel&lt;br /&gt;
* modules	  - Build all modules&lt;br /&gt;
  modules_install - Install all modules to INSTALL_MOD_PATH (default: /)&lt;br /&gt;
  firmware_install- Install all firmware to INSTALL_FW_PATH&lt;br /&gt;
                    (default: $(INSTALL_MOD_PATH)/lib/firmware)&lt;br /&gt;
  dir/            - Build all files in dir and below&lt;br /&gt;
  dir/file.[ois]  - Build specified target only&lt;br /&gt;
  dir/file.ko     - Build module including final link&lt;br /&gt;
  modules_prepare - Set up for building external modules&lt;br /&gt;
  tags/TAGS	  - Generate tags file for editors&lt;br /&gt;
  cscope	  - Generate cscope index&lt;br /&gt;
  kernelrelease	  - Output the release version string&lt;br /&gt;
  kernelversion	  - Output the version stored in Makefile&lt;br /&gt;
  headers_install - Install sanitised kernel headers to INSTALL_HDR_PATH&lt;br /&gt;
                    (default: /home/qiang/Desktop/linux-2.6/usr)&lt;br /&gt;
&lt;br /&gt;
Static analysers&lt;br /&gt;
  checkstack      - Generate a list of stack hogs&lt;br /&gt;
  namespacecheck  - Name space analysis on compiled kernel&lt;br /&gt;
  versioncheck    - Sanity check on version.h usage&lt;br /&gt;
  includecheck    - Check for duplicate included header files&lt;br /&gt;
  export_report   - List the usages of all exported symbols&lt;br /&gt;
  headers_check   - Sanity check on exported headers&lt;br /&gt;
  headerdep       - Detect inclusion cycles in headers&lt;br /&gt;
&lt;br /&gt;
Kernel packaging:&lt;br /&gt;
  rpm-pkg         - Build both source and binary RPM kernel packages&lt;br /&gt;
  binrpm-pkg      - Build only the binary kernel package&lt;br /&gt;
  deb-pkg         - Build the kernel as an deb package&lt;br /&gt;
  tar-pkg         - Build the kernel as an uncompressed tarball&lt;br /&gt;
  targz-pkg       - Build the kernel as a gzip compressed tarball&lt;br /&gt;
  tarbz2-pkg      - Build the kernel as a bzip2 compressed tarball&lt;br /&gt;
&lt;br /&gt;
Documentation targets:&lt;br /&gt;
 Linux kernel internal documentation in different formats:&lt;br /&gt;
  htmldocs        - HTML&lt;br /&gt;
  pdfdocs         - PDF&lt;br /&gt;
  psdocs          - Postscript&lt;br /&gt;
  xmldocs         - XML DocBook&lt;br /&gt;
  mandocs         - man pages&lt;br /&gt;
  installmandocs  - install man pages generated by mandocs&lt;br /&gt;
  cleandocs       - clean all generated DocBook files&lt;br /&gt;
&lt;br /&gt;
Architecture specific targets (x86):&lt;br /&gt;
* bzImage      - Compressed kernel image (arch/x86/boot/bzImage)&lt;br /&gt;
  install      - Install kernel using&lt;br /&gt;
                  (your) ~/bin/installkernel or&lt;br /&gt;
                  (distribution) /sbin/installkernel or&lt;br /&gt;
                  install to $(INSTALL_PATH) and run lilo&lt;br /&gt;
  fdimage      - Create 1.4MB boot floppy image (arch/x86/boot/fdimage)&lt;br /&gt;
  fdimage144   - Create 1.4MB boot floppy image (arch/x86/boot/fdimage)&lt;br /&gt;
  fdimage288   - Create 2.8MB boot floppy image (arch/x86/boot/fdimage)&lt;br /&gt;
  isoimage     - Create a boot CD-ROM image (arch/x86/boot/image.iso)&lt;br /&gt;
                  bzdisk/fdimage*/isoimage also accept:&lt;br /&gt;
                  FDARGS=&amp;quot;...&amp;quot;  arguments for the booted kernel&lt;br /&gt;
                  FDINITRD=file initrd for the booted kernel&lt;br /&gt;
&lt;br /&gt;
  i386_defconfig           - Build for i386&lt;br /&gt;
  x86_64_defconfig         - Build for x86_64&lt;br /&gt;
&lt;br /&gt;
  make V=0|1 [targets] 0 =&amp;gt; quiet build (default), 1 =&amp;gt; verbose build&lt;br /&gt;
  make V=2   [targets] 2 =&amp;gt; give reason for rebuild of target&lt;br /&gt;
  make O=dir [targets] Locate all output files in &amp;quot;dir&amp;quot;, including .config&lt;br /&gt;
  make C=1   [targets] Check all c source with $CHECK (sparse by default)&lt;br /&gt;
  make C=2   [targets] Force check of all c source with $CHECK&lt;br /&gt;
&lt;br /&gt;
Execute &amp;quot;make&amp;quot; or &amp;quot;make all&amp;quot; to build all targets marked with [*] &lt;br /&gt;
For further info see the ./README file&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 4-10&lt;br /&gt;
| 4-32&lt;br /&gt;
| Customized .config File Snippet&lt;br /&gt;
| &amp;lt;pre&amp;gt;qiang@qiang-laptop:~/Desktop/linux-2.6$ cat 4_10&lt;br /&gt;
# CONFIG_ARCH_PNX4008 is not set&lt;br /&gt;
# CONFIG_ARCH_PXA is not set&lt;br /&gt;
# CONFIG_ARCH_MSM is not set&lt;br /&gt;
# CONFIG_ARCH_SHMOBILE is not set&lt;br /&gt;
# CONFIG_ARCH_RPC is not set&lt;br /&gt;
# CONFIG_ARCH_SA1100 is not set&lt;br /&gt;
# CONFIG_ARCH_S3C2410 is not set&lt;br /&gt;
# CONFIG_ARCH_S3C64XX is not set&lt;br /&gt;
# CONFIG_ARCH_S5P6440 is not set&lt;br /&gt;
# CONFIG_ARCH_S5P6442 is not set&lt;br /&gt;
# CONFIG_ARCH_S5PC1XX is not set&lt;br /&gt;
# CONFIG_ARCH_S5PV210 is not set&lt;br /&gt;
# CONFIG_ARCH_SHARK is not set&lt;br /&gt;
# CONFIG_ARCH_LH7A40X is not set&lt;br /&gt;
# CONFIG_ARCH_U300 is not set&lt;br /&gt;
# CONFIG_ARCH_U8500 is not set&lt;br /&gt;
# CONFIG_ARCH_NOMADIK is not set&lt;br /&gt;
# CONFIG_ARCH_DAVINCI is not set&lt;br /&gt;
CONFIG_ARCH_OMAP=y&lt;br /&gt;
&lt;br /&gt;
# &lt;br /&gt;
# TI OMAP Implementations&lt;br /&gt;
# &lt;br /&gt;
# CONFIG_ARCH_OMAP1 is not set&lt;br /&gt;
CONFIG_ARCH_OMAP2PLUS=y&lt;br /&gt;
# CONFIG_ARCH_OMAP2 is not set&lt;br /&gt;
# CONFIG_ARCH_OMAP3 is not set&lt;br /&gt;
# CONFIG_ARCH_OMAP4 is not set&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 4-11&lt;br /&gt;
| 4-33&lt;br /&gt;
| Makefile from .../arch/arm/mach-ixp4xx Kernel Subdirectory&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
 qiang@qiang-laptop:~/Desktop/linux-2.6$ cat 4_11&lt;br /&gt;
qiang@qiang-laptop:~/Desktop/linux-2.6/arch/arm/plat-omap$ head -n 20 Makefile&lt;br /&gt;
#&lt;br /&gt;
# Makefile for the linux kernel.&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
# Common support&lt;br /&gt;
obj-y := common.o sram.o clock.o devices.o dma.o mux.o gpio.o \&lt;br /&gt;
	 usb.o fb.o io.o&lt;br /&gt;
obj-m :=&lt;br /&gt;
obj-n :=&lt;br /&gt;
obj-  :=&lt;br /&gt;
&lt;br /&gt;
# OCPI interconnect support for 1710, 1610 and 5912&lt;br /&gt;
obj-$(CONFIG_ARCH_OMAP16XX) += ocpi.o&lt;br /&gt;
&lt;br /&gt;
# omap_device support (OMAP2+ only at the moment)&lt;br /&gt;
obj-$(CONFIG_ARCH_OMAP2) += omap_device.o&lt;br /&gt;
obj-$(CONFIG_ARCH_OMAP3) += omap_device.o&lt;br /&gt;
&lt;br /&gt;
obj-$(CONFIG_OMAP_MCBSP) += mcbsp.o&lt;br /&gt;
obj-$(CONFIG_OMAP_IOMMU) += iommu.o iovmm.o&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jiangq</name></author>	</entry>

	<entry>
		<id>http://elinux.org/User:Jiangq</id>
		<title>User:Jiangq</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/User:Jiangq"/>
				<updated>2010-04-15T17:15:48Z</updated>
		
		<summary type="html">&lt;p&gt;Jiangq: /* Chapter 4 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Listings =&lt;br /&gt;
== Chapter 4 ==&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Number&lt;br /&gt;
! Page&lt;br /&gt;
! Caption&lt;br /&gt;
! Listing&lt;br /&gt;
|-&lt;br /&gt;
| 4-3&lt;br /&gt;
| 4-15&lt;br /&gt;
| Kernel Subdirectory&lt;br /&gt;
| &amp;lt;pre&amp;gt;  qiang@qiang-laptop:~/Desktop/linux-2.6$ cat 4_3&lt;br /&gt;
qiang@qiang-laptop:~/Desktop/linux-2.6$ ls -ls arch/arm/plat-omap/ | grep -v \\.o&lt;br /&gt;
total 432&lt;br /&gt;
12 -rw-r--r-- 1 qiang qiang 11124 2010-03-23 20:06 clock.c&lt;br /&gt;
12 -rw-r--r-- 1 qiang qiang  8521 2010-03-23 20:06 common.c&lt;br /&gt;
 4 -rw-r--r-- 1 qiang qiang  4033 2010-03-23 20:06 cpu-omap.c&lt;br /&gt;
 4 -rw-r--r-- 1 qiang qiang  2192 2010-03-23 20:06 debug-devices.c&lt;br /&gt;
 8 -rw-r--r-- 1 qiang qiang  7170 2010-03-23 20:06 debug-leds.c&lt;br /&gt;
12 -rw-r--r-- 1 qiang qiang 10890 2010-03-23 20:06 devices.c&lt;br /&gt;
56 -rw-r--r-- 1 qiang qiang 52586 2010-03-23 20:06 dma.c&lt;br /&gt;
24 -rw-r--r-- 1 qiang qiang 22660 2010-03-23 20:06 dmtimer.c&lt;br /&gt;
12 -rw-r--r-- 1 qiang qiang 10055 2010-03-23 20:06 fb.c&lt;br /&gt;
64 -rw-r--r-- 1 qiang qiang 61308 2010-03-23 20:06 gpio.c&lt;br /&gt;
 8 -rw-r--r-- 1 qiang qiang  5058 2010-03-23 20:06 i2c.c&lt;br /&gt;
 4 drwxr-xr-x 3 qiang qiang  4096 2010-03-23 20:06 include&lt;br /&gt;
 8 -rw-r--r-- 1 qiang qiang  6265 2010-03-23 20:06 io.c&lt;br /&gt;
24 -rw-r--r-- 1 qiang qiang 20765 2010-03-23 20:06 iommu.c&lt;br /&gt;
12 -rw-r--r-- 1 qiang qiang  9117 2010-03-23 20:06 iommu-debug.c&lt;br /&gt;
 4 -rw-r--r-- 1 qiang qiang  2745 2010-03-23 20:06 iopgtable.h&lt;br /&gt;
20 -rw-r--r-- 1 qiang qiang 19320 2010-03-23 20:06 iovmm.c&lt;br /&gt;
 8 -rw-r--r-- 1 qiang qiang  4819 2010-03-23 20:06 Kconfig&lt;br /&gt;
12 -rw-r--r-- 1 qiang qiang  8522 2010-03-23 20:06 mailbox.c&lt;br /&gt;
 4 -rw-r--r-- 1 qiang qiang   882 2010-03-23 20:06 Makefile&lt;br /&gt;
44 -rw-r--r-- 1 qiang qiang 43730 2010-03-23 20:06 mcbsp.c&lt;br /&gt;
 4 -rw-r--r-- 1 qiang qiang  2263 2010-03-23 20:06 mux.c&lt;br /&gt;
 4 -rw-r--r-- 1 qiang qiang  2739 2010-03-23 20:06 ocpi.c&lt;br /&gt;
24 -rw-r--r-- 1 qiang qiang 21397 2010-03-23 20:06 omap_device.c&lt;br /&gt;
 8 -rw-r--r-- 1 qiang qiang  7069 2010-03-23 20:06 omap-pm-noop.c&lt;br /&gt;
16 -rw-r--r-- 1 qiang qiang 12878 2010-03-23 20:06 sram.c&lt;br /&gt;
20 -rw-r--r-- 1 qiang qiang 18770 2010-03-23 20:06 usb.c&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 4-4&lt;br /&gt;
| 4-17&lt;br /&gt;
| Snippet from Linux 2.6.config&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
qiang@qiang-laptop:~/Desktop/linux-2.6$ cat 4_4&lt;br /&gt;
#&lt;br /&gt;
# CONFIG_64BIT is not set&lt;br /&gt;
CONFIG_X86_32=y&lt;br /&gt;
# CONFIG_X86_64 is not set&lt;br /&gt;
CONFIG_X86=y&lt;br /&gt;
CONFIG_OUTPUT_FORMAT=&amp;quot;elf32-i386&amp;quot;&lt;br /&gt;
CONFIG_ARCH_DEFCONFIG=&amp;quot;arch/x86/configs/i386_defconfig&amp;quot;&lt;br /&gt;
CONFIG_GENERIC_TIME=y&lt;br /&gt;
CONFIG_GENERIC_CMOS_UPDATE=y&lt;br /&gt;
CONFIG_CLOCKSOURCE_WATCHDOG=y&lt;br /&gt;
CONFIG_GENERIC_CLOCKEVENTS=y&lt;br /&gt;
CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y&lt;br /&gt;
CONFIG_LOCKDEP_SUPPORT=y&lt;br /&gt;
CONFIG_STACKTRACE_SUPPORT=y&lt;br /&gt;
CONFIG_HAVE_LATENCYTOP_SUPPORT=y&lt;br /&gt;
CONFIG_MMU=y&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 4-6&lt;br /&gt;
| 4-22&lt;br /&gt;
| Makefile Targets&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
qiang@qiang-laptop:~/Desktop/linux-2.6$ cat 4_6&lt;br /&gt;
qiang@qiang-laptop:~/Desktop/linux-2.6$ make help&lt;br /&gt;
Cleaning targets:&lt;br /&gt;
  clean		  - Remove most generated files but keep the config and&lt;br /&gt;
                    enough build support to build external modules&lt;br /&gt;
  mrproper	  - Remove all generated files + config + various backup files&lt;br /&gt;
  distclean	  - mrproper + remove editor backup and patch files&lt;br /&gt;
&lt;br /&gt;
Configuration targets:&lt;br /&gt;
  config	  - Update current config utilising a line-oriented program&lt;br /&gt;
  menuconfig	  - Update current config utilising a menu based program&lt;br /&gt;
  xconfig	  - Update current config utilising a QT based front-end&lt;br /&gt;
  gconfig	  - Update current config utilising a GTK based front-end&lt;br /&gt;
  oldconfig	  - Update current config utilising a provided .config as base&lt;br /&gt;
  localmodconfig  - Update current config disabling modules not loaded&lt;br /&gt;
  localyesconfig  - Update current config converting local mods to core&lt;br /&gt;
  silentoldconfig - Same as oldconfig, but quietly, additionally update deps&lt;br /&gt;
  randconfig	  - New config with random answer to all options&lt;br /&gt;
  defconfig	  - New config with default answer to all options&lt;br /&gt;
  allmodconfig	  - New config selecting modules when possible&lt;br /&gt;
  allyesconfig	  - New config where all options are accepted with yes&lt;br /&gt;
  allnoconfig	  - New config where all options are answered with no&lt;br /&gt;
&lt;br /&gt;
Other generic targets:&lt;br /&gt;
  all		  - Build all targets marked with [*]&lt;br /&gt;
* vmlinux	  - Build the bare kernel&lt;br /&gt;
* modules	  - Build all modules&lt;br /&gt;
  modules_install - Install all modules to INSTALL_MOD_PATH (default: /)&lt;br /&gt;
  firmware_install- Install all firmware to INSTALL_FW_PATH&lt;br /&gt;
                    (default: $(INSTALL_MOD_PATH)/lib/firmware)&lt;br /&gt;
  dir/            - Build all files in dir and below&lt;br /&gt;
  dir/file.[ois]  - Build specified target only&lt;br /&gt;
  dir/file.ko     - Build module including final link&lt;br /&gt;
  modules_prepare - Set up for building external modules&lt;br /&gt;
  tags/TAGS	  - Generate tags file for editors&lt;br /&gt;
  cscope	  - Generate cscope index&lt;br /&gt;
  kernelrelease	  - Output the release version string&lt;br /&gt;
  kernelversion	  - Output the version stored in Makefile&lt;br /&gt;
  headers_install - Install sanitised kernel headers to INSTALL_HDR_PATH&lt;br /&gt;
                    (default: /home/qiang/Desktop/linux-2.6/usr)&lt;br /&gt;
&lt;br /&gt;
Static analysers&lt;br /&gt;
  checkstack      - Generate a list of stack hogs&lt;br /&gt;
  namespacecheck  - Name space analysis on compiled kernel&lt;br /&gt;
  versioncheck    - Sanity check on version.h usage&lt;br /&gt;
  includecheck    - Check for duplicate included header files&lt;br /&gt;
  export_report   - List the usages of all exported symbols&lt;br /&gt;
  headers_check   - Sanity check on exported headers&lt;br /&gt;
  headerdep       - Detect inclusion cycles in headers&lt;br /&gt;
&lt;br /&gt;
Kernel packaging:&lt;br /&gt;
  rpm-pkg         - Build both source and binary RPM kernel packages&lt;br /&gt;
  binrpm-pkg      - Build only the binary kernel package&lt;br /&gt;
  deb-pkg         - Build the kernel as an deb package&lt;br /&gt;
  tar-pkg         - Build the kernel as an uncompressed tarball&lt;br /&gt;
  targz-pkg       - Build the kernel as a gzip compressed tarball&lt;br /&gt;
  tarbz2-pkg      - Build the kernel as a bzip2 compressed tarball&lt;br /&gt;
&lt;br /&gt;
Documentation targets:&lt;br /&gt;
 Linux kernel internal documentation in different formats:&lt;br /&gt;
  htmldocs        - HTML&lt;br /&gt;
  pdfdocs         - PDF&lt;br /&gt;
  psdocs          - Postscript&lt;br /&gt;
  xmldocs         - XML DocBook&lt;br /&gt;
  mandocs         - man pages&lt;br /&gt;
  installmandocs  - install man pages generated by mandocs&lt;br /&gt;
  cleandocs       - clean all generated DocBook files&lt;br /&gt;
&lt;br /&gt;
Architecture specific targets (x86):&lt;br /&gt;
* bzImage      - Compressed kernel image (arch/x86/boot/bzImage)&lt;br /&gt;
  install      - Install kernel using&lt;br /&gt;
                  (your) ~/bin/installkernel or&lt;br /&gt;
                  (distribution) /sbin/installkernel or&lt;br /&gt;
                  install to $(INSTALL_PATH) and run lilo&lt;br /&gt;
  fdimage      - Create 1.4MB boot floppy image (arch/x86/boot/fdimage)&lt;br /&gt;
  fdimage144   - Create 1.4MB boot floppy image (arch/x86/boot/fdimage)&lt;br /&gt;
  fdimage288   - Create 2.8MB boot floppy image (arch/x86/boot/fdimage)&lt;br /&gt;
  isoimage     - Create a boot CD-ROM image (arch/x86/boot/image.iso)&lt;br /&gt;
                  bzdisk/fdimage*/isoimage also accept:&lt;br /&gt;
                  FDARGS=&amp;quot;...&amp;quot;  arguments for the booted kernel&lt;br /&gt;
                  FDINITRD=file initrd for the booted kernel&lt;br /&gt;
&lt;br /&gt;
  i386_defconfig           - Build for i386&lt;br /&gt;
  x86_64_defconfig         - Build for x86_64&lt;br /&gt;
&lt;br /&gt;
  make V=0|1 [targets] 0 =&amp;gt; quiet build (default), 1 =&amp;gt; verbose build&lt;br /&gt;
  make V=2   [targets] 2 =&amp;gt; give reason for rebuild of target&lt;br /&gt;
  make O=dir [targets] Locate all output files in &amp;quot;dir&amp;quot;, including .config&lt;br /&gt;
  make C=1   [targets] Check all c source with $CHECK (sparse by default)&lt;br /&gt;
  make C=2   [targets] Force check of all c source with $CHECK&lt;br /&gt;
&lt;br /&gt;
Execute &amp;quot;make&amp;quot; or &amp;quot;make all&amp;quot; to build all targets marked with [*] &lt;br /&gt;
For further info see the ./README file&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 4-10&lt;br /&gt;
| 4-32&lt;br /&gt;
| Customized .config File Snippet&lt;br /&gt;
| &amp;lt;pre&amp;gt;qiang@qiang-laptop:~/Desktop/linux-2.6$ cat 4_10&lt;br /&gt;
# CONFIG_ARCH_PNX4008 is not set&lt;br /&gt;
# CONFIG_ARCH_PXA is not set&lt;br /&gt;
# CONFIG_ARCH_MSM is not set&lt;br /&gt;
# CONFIG_ARCH_SHMOBILE is not set&lt;br /&gt;
# CONFIG_ARCH_RPC is not set&lt;br /&gt;
# CONFIG_ARCH_SA1100 is not set&lt;br /&gt;
# CONFIG_ARCH_S3C2410 is not set&lt;br /&gt;
# CONFIG_ARCH_S3C64XX is not set&lt;br /&gt;
# CONFIG_ARCH_S5P6440 is not set&lt;br /&gt;
# CONFIG_ARCH_S5P6442 is not set&lt;br /&gt;
# CONFIG_ARCH_S5PC1XX is not set&lt;br /&gt;
# CONFIG_ARCH_S5PV210 is not set&lt;br /&gt;
# CONFIG_ARCH_SHARK is not set&lt;br /&gt;
# CONFIG_ARCH_LH7A40X is not set&lt;br /&gt;
# CONFIG_ARCH_U300 is not set&lt;br /&gt;
# CONFIG_ARCH_U8500 is not set&lt;br /&gt;
# CONFIG_ARCH_NOMADIK is not set&lt;br /&gt;
# CONFIG_ARCH_DAVINCI is not set&lt;br /&gt;
CONFIG_ARCH_OMAP=y&lt;br /&gt;
&lt;br /&gt;
# &lt;br /&gt;
# TI OMAP Implementations&lt;br /&gt;
# &lt;br /&gt;
# CONFIG_ARCH_OMAP1 is not set&lt;br /&gt;
CONFIG_ARCH_OMAP2PLUS=y&lt;br /&gt;
# CONFIG_ARCH_OMAP2 is not set&lt;br /&gt;
# CONFIG_ARCH_OMAP3 is not set&lt;br /&gt;
# CONFIG_ARCH_OMAP4 is not set&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 4-11&lt;br /&gt;
| 4-33&lt;br /&gt;
| Makefile from .../arch/arm/mach-ixp4xx Kernel Subdirectory&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
 qiang@qiang-laptop:~/Desktop/linux-2.6$ cat 4_11&lt;br /&gt;
qiang@qiang-laptop:~/Desktop/linux-2.6/arch/arm/plat-omap$ head -n 20 Makefile&lt;br /&gt;
#&lt;br /&gt;
# Makefile for the linux kernel.&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
# Common support&lt;br /&gt;
obj-y := common.o sram.o clock.o devices.o dma.o mux.o gpio.o \&lt;br /&gt;
	 usb.o fb.o io.o&lt;br /&gt;
obj-m :=&lt;br /&gt;
obj-n :=&lt;br /&gt;
obj-  :=&lt;br /&gt;
&lt;br /&gt;
# OCPI interconnect support for 1710, 1610 and 5912&lt;br /&gt;
obj-$(CONFIG_ARCH_OMAP16XX) += ocpi.o&lt;br /&gt;
&lt;br /&gt;
# omap_device support (OMAP2+ only at the moment)&lt;br /&gt;
obj-$(CONFIG_ARCH_OMAP2) += omap_device.o&lt;br /&gt;
obj-$(CONFIG_ARCH_OMAP3) += omap_device.o&lt;br /&gt;
&lt;br /&gt;
obj-$(CONFIG_OMAP_MCBSP) += mcbsp.o&lt;br /&gt;
obj-$(CONFIG_OMAP_IOMMU) += iommu.o iovmm.o&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jiangq</name></author>	</entry>

	<entry>
		<id>http://elinux.org/User:Jiangq</id>
		<title>User:Jiangq</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/User:Jiangq"/>
				<updated>2010-04-15T17:14:55Z</updated>
		
		<summary type="html">&lt;p&gt;Jiangq: /* Chapter 2 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Listings =&lt;br /&gt;
== Chapter 4 ==&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Number&lt;br /&gt;
! Page&lt;br /&gt;
! Caption&lt;br /&gt;
! Listing&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 4-3&lt;br /&gt;
| 4-15&lt;br /&gt;
| Kernel Subdirectory&lt;br /&gt;
| &amp;lt;pre&amp;gt;  qiang@qiang-laptop:~/Desktop/linux-2.6$ cat 4_3&lt;br /&gt;
qiang@qiang-laptop:~/Desktop/linux-2.6$ ls -ls arch/arm/plat-omap/ | grep -v \\.o&lt;br /&gt;
total 432&lt;br /&gt;
12 -rw-r--r-- 1 qiang qiang 11124 2010-03-23 20:06 clock.c&lt;br /&gt;
12 -rw-r--r-- 1 qiang qiang  8521 2010-03-23 20:06 common.c&lt;br /&gt;
 4 -rw-r--r-- 1 qiang qiang  4033 2010-03-23 20:06 cpu-omap.c&lt;br /&gt;
 4 -rw-r--r-- 1 qiang qiang  2192 2010-03-23 20:06 debug-devices.c&lt;br /&gt;
 8 -rw-r--r-- 1 qiang qiang  7170 2010-03-23 20:06 debug-leds.c&lt;br /&gt;
12 -rw-r--r-- 1 qiang qiang 10890 2010-03-23 20:06 devices.c&lt;br /&gt;
56 -rw-r--r-- 1 qiang qiang 52586 2010-03-23 20:06 dma.c&lt;br /&gt;
24 -rw-r--r-- 1 qiang qiang 22660 2010-03-23 20:06 dmtimer.c&lt;br /&gt;
12 -rw-r--r-- 1 qiang qiang 10055 2010-03-23 20:06 fb.c&lt;br /&gt;
64 -rw-r--r-- 1 qiang qiang 61308 2010-03-23 20:06 gpio.c&lt;br /&gt;
 8 -rw-r--r-- 1 qiang qiang  5058 2010-03-23 20:06 i2c.c&lt;br /&gt;
 4 drwxr-xr-x 3 qiang qiang  4096 2010-03-23 20:06 include&lt;br /&gt;
 8 -rw-r--r-- 1 qiang qiang  6265 2010-03-23 20:06 io.c&lt;br /&gt;
24 -rw-r--r-- 1 qiang qiang 20765 2010-03-23 20:06 iommu.c&lt;br /&gt;
12 -rw-r--r-- 1 qiang qiang  9117 2010-03-23 20:06 iommu-debug.c&lt;br /&gt;
 4 -rw-r--r-- 1 qiang qiang  2745 2010-03-23 20:06 iopgtable.h&lt;br /&gt;
20 -rw-r--r-- 1 qiang qiang 19320 2010-03-23 20:06 iovmm.c&lt;br /&gt;
 8 -rw-r--r-- 1 qiang qiang  4819 2010-03-23 20:06 Kconfig&lt;br /&gt;
12 -rw-r--r-- 1 qiang qiang  8522 2010-03-23 20:06 mailbox.c&lt;br /&gt;
 4 -rw-r--r-- 1 qiang qiang   882 2010-03-23 20:06 Makefile&lt;br /&gt;
44 -rw-r--r-- 1 qiang qiang 43730 2010-03-23 20:06 mcbsp.c&lt;br /&gt;
 4 -rw-r--r-- 1 qiang qiang  2263 2010-03-23 20:06 mux.c&lt;br /&gt;
 4 -rw-r--r-- 1 qiang qiang  2739 2010-03-23 20:06 ocpi.c&lt;br /&gt;
24 -rw-r--r-- 1 qiang qiang 21397 2010-03-23 20:06 omap_device.c&lt;br /&gt;
 8 -rw-r--r-- 1 qiang qiang  7069 2010-03-23 20:06 omap-pm-noop.c&lt;br /&gt;
16 -rw-r--r-- 1 qiang qiang 12878 2010-03-23 20:06 sram.c&lt;br /&gt;
20 -rw-r--r-- 1 qiang qiang 18770 2010-03-23 20:06 usb.c&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 4-4&lt;br /&gt;
| 4-17&lt;br /&gt;
| Snippet from Linux 2.6.config&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
qiang@qiang-laptop:~/Desktop/linux-2.6$ cat 4_4&lt;br /&gt;
#&lt;br /&gt;
# CONFIG_64BIT is not set&lt;br /&gt;
CONFIG_X86_32=y&lt;br /&gt;
# CONFIG_X86_64 is not set&lt;br /&gt;
CONFIG_X86=y&lt;br /&gt;
CONFIG_OUTPUT_FORMAT=&amp;quot;elf32-i386&amp;quot;&lt;br /&gt;
CONFIG_ARCH_DEFCONFIG=&amp;quot;arch/x86/configs/i386_defconfig&amp;quot;&lt;br /&gt;
CONFIG_GENERIC_TIME=y&lt;br /&gt;
CONFIG_GENERIC_CMOS_UPDATE=y&lt;br /&gt;
CONFIG_CLOCKSOURCE_WATCHDOG=y&lt;br /&gt;
CONFIG_GENERIC_CLOCKEVENTS=y&lt;br /&gt;
CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y&lt;br /&gt;
CONFIG_LOCKDEP_SUPPORT=y&lt;br /&gt;
CONFIG_STACKTRACE_SUPPORT=y&lt;br /&gt;
CONFIG_HAVE_LATENCYTOP_SUPPORT=y&lt;br /&gt;
CONFIG_MMU=y&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 4-6&lt;br /&gt;
| 4-22&lt;br /&gt;
| Makefile Targets&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
qiang@qiang-laptop:~/Desktop/linux-2.6$ cat 4_6&lt;br /&gt;
qiang@qiang-laptop:~/Desktop/linux-2.6$ make help&lt;br /&gt;
Cleaning targets:&lt;br /&gt;
  clean		  - Remove most generated files but keep the config and&lt;br /&gt;
                    enough build support to build external modules&lt;br /&gt;
  mrproper	  - Remove all generated files + config + various backup files&lt;br /&gt;
  distclean	  - mrproper + remove editor backup and patch files&lt;br /&gt;
&lt;br /&gt;
Configuration targets:&lt;br /&gt;
  config	  - Update current config utilising a line-oriented program&lt;br /&gt;
  menuconfig	  - Update current config utilising a menu based program&lt;br /&gt;
  xconfig	  - Update current config utilising a QT based front-end&lt;br /&gt;
  gconfig	  - Update current config utilising a GTK based front-end&lt;br /&gt;
  oldconfig	  - Update current config utilising a provided .config as base&lt;br /&gt;
  localmodconfig  - Update current config disabling modules not loaded&lt;br /&gt;
  localyesconfig  - Update current config converting local mods to core&lt;br /&gt;
  silentoldconfig - Same as oldconfig, but quietly, additionally update deps&lt;br /&gt;
  randconfig	  - New config with random answer to all options&lt;br /&gt;
  defconfig	  - New config with default answer to all options&lt;br /&gt;
  allmodconfig	  - New config selecting modules when possible&lt;br /&gt;
  allyesconfig	  - New config where all options are accepted with yes&lt;br /&gt;
  allnoconfig	  - New config where all options are answered with no&lt;br /&gt;
&lt;br /&gt;
Other generic targets:&lt;br /&gt;
  all		  - Build all targets marked with [*]&lt;br /&gt;
* vmlinux	  - Build the bare kernel&lt;br /&gt;
* modules	  - Build all modules&lt;br /&gt;
  modules_install - Install all modules to INSTALL_MOD_PATH (default: /)&lt;br /&gt;
  firmware_install- Install all firmware to INSTALL_FW_PATH&lt;br /&gt;
                    (default: $(INSTALL_MOD_PATH)/lib/firmware)&lt;br /&gt;
  dir/            - Build all files in dir and below&lt;br /&gt;
  dir/file.[ois]  - Build specified target only&lt;br /&gt;
  dir/file.ko     - Build module including final link&lt;br /&gt;
  modules_prepare - Set up for building external modules&lt;br /&gt;
  tags/TAGS	  - Generate tags file for editors&lt;br /&gt;
  cscope	  - Generate cscope index&lt;br /&gt;
  kernelrelease	  - Output the release version string&lt;br /&gt;
  kernelversion	  - Output the version stored in Makefile&lt;br /&gt;
  headers_install - Install sanitised kernel headers to INSTALL_HDR_PATH&lt;br /&gt;
                    (default: /home/qiang/Desktop/linux-2.6/usr)&lt;br /&gt;
&lt;br /&gt;
Static analysers&lt;br /&gt;
  checkstack      - Generate a list of stack hogs&lt;br /&gt;
  namespacecheck  - Name space analysis on compiled kernel&lt;br /&gt;
  versioncheck    - Sanity check on version.h usage&lt;br /&gt;
  includecheck    - Check for duplicate included header files&lt;br /&gt;
  export_report   - List the usages of all exported symbols&lt;br /&gt;
  headers_check   - Sanity check on exported headers&lt;br /&gt;
  headerdep       - Detect inclusion cycles in headers&lt;br /&gt;
&lt;br /&gt;
Kernel packaging:&lt;br /&gt;
  rpm-pkg         - Build both source and binary RPM kernel packages&lt;br /&gt;
  binrpm-pkg      - Build only the binary kernel package&lt;br /&gt;
  deb-pkg         - Build the kernel as an deb package&lt;br /&gt;
  tar-pkg         - Build the kernel as an uncompressed tarball&lt;br /&gt;
  targz-pkg       - Build the kernel as a gzip compressed tarball&lt;br /&gt;
  tarbz2-pkg      - Build the kernel as a bzip2 compressed tarball&lt;br /&gt;
&lt;br /&gt;
Documentation targets:&lt;br /&gt;
 Linux kernel internal documentation in different formats:&lt;br /&gt;
  htmldocs        - HTML&lt;br /&gt;
  pdfdocs         - PDF&lt;br /&gt;
  psdocs          - Postscript&lt;br /&gt;
  xmldocs         - XML DocBook&lt;br /&gt;
  mandocs         - man pages&lt;br /&gt;
  installmandocs  - install man pages generated by mandocs&lt;br /&gt;
  cleandocs       - clean all generated DocBook files&lt;br /&gt;
&lt;br /&gt;
Architecture specific targets (x86):&lt;br /&gt;
* bzImage      - Compressed kernel image (arch/x86/boot/bzImage)&lt;br /&gt;
  install      - Install kernel using&lt;br /&gt;
                  (your) ~/bin/installkernel or&lt;br /&gt;
                  (distribution) /sbin/installkernel or&lt;br /&gt;
                  install to $(INSTALL_PATH) and run lilo&lt;br /&gt;
  fdimage      - Create 1.4MB boot floppy image (arch/x86/boot/fdimage)&lt;br /&gt;
  fdimage144   - Create 1.4MB boot floppy image (arch/x86/boot/fdimage)&lt;br /&gt;
  fdimage288   - Create 2.8MB boot floppy image (arch/x86/boot/fdimage)&lt;br /&gt;
  isoimage     - Create a boot CD-ROM image (arch/x86/boot/image.iso)&lt;br /&gt;
                  bzdisk/fdimage*/isoimage also accept:&lt;br /&gt;
                  FDARGS=&amp;quot;...&amp;quot;  arguments for the booted kernel&lt;br /&gt;
                  FDINITRD=file initrd for the booted kernel&lt;br /&gt;
&lt;br /&gt;
  i386_defconfig           - Build for i386&lt;br /&gt;
  x86_64_defconfig         - Build for x86_64&lt;br /&gt;
&lt;br /&gt;
  make V=0|1 [targets] 0 =&amp;gt; quiet build (default), 1 =&amp;gt; verbose build&lt;br /&gt;
  make V=2   [targets] 2 =&amp;gt; give reason for rebuild of target&lt;br /&gt;
  make O=dir [targets] Locate all output files in &amp;quot;dir&amp;quot;, including .config&lt;br /&gt;
  make C=1   [targets] Check all c source with $CHECK (sparse by default)&lt;br /&gt;
  make C=2   [targets] Force check of all c source with $CHECK&lt;br /&gt;
&lt;br /&gt;
Execute &amp;quot;make&amp;quot; or &amp;quot;make all&amp;quot; to build all targets marked with [*] &lt;br /&gt;
For further info see the ./README file&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 4-10&lt;br /&gt;
| 4-32&lt;br /&gt;
| Customized .config File Snippet&lt;br /&gt;
| &amp;lt;pre&amp;gt;qiang@qiang-laptop:~/Desktop/linux-2.6$ cat 4_10&lt;br /&gt;
# CONFIG_ARCH_PNX4008 is not set&lt;br /&gt;
# CONFIG_ARCH_PXA is not set&lt;br /&gt;
# CONFIG_ARCH_MSM is not set&lt;br /&gt;
# CONFIG_ARCH_SHMOBILE is not set&lt;br /&gt;
# CONFIG_ARCH_RPC is not set&lt;br /&gt;
# CONFIG_ARCH_SA1100 is not set&lt;br /&gt;
# CONFIG_ARCH_S3C2410 is not set&lt;br /&gt;
# CONFIG_ARCH_S3C64XX is not set&lt;br /&gt;
# CONFIG_ARCH_S5P6440 is not set&lt;br /&gt;
# CONFIG_ARCH_S5P6442 is not set&lt;br /&gt;
# CONFIG_ARCH_S5PC1XX is not set&lt;br /&gt;
# CONFIG_ARCH_S5PV210 is not set&lt;br /&gt;
# CONFIG_ARCH_SHARK is not set&lt;br /&gt;
# CONFIG_ARCH_LH7A40X is not set&lt;br /&gt;
# CONFIG_ARCH_U300 is not set&lt;br /&gt;
# CONFIG_ARCH_U8500 is not set&lt;br /&gt;
# CONFIG_ARCH_NOMADIK is not set&lt;br /&gt;
# CONFIG_ARCH_DAVINCI is not set&lt;br /&gt;
CONFIG_ARCH_OMAP=y&lt;br /&gt;
&lt;br /&gt;
# &lt;br /&gt;
# TI OMAP Implementations&lt;br /&gt;
# &lt;br /&gt;
# CONFIG_ARCH_OMAP1 is not set&lt;br /&gt;
CONFIG_ARCH_OMAP2PLUS=y&lt;br /&gt;
# CONFIG_ARCH_OMAP2 is not set&lt;br /&gt;
# CONFIG_ARCH_OMAP3 is not set&lt;br /&gt;
# CONFIG_ARCH_OMAP4 is not set&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 4-11&lt;br /&gt;
| 4-33&lt;br /&gt;
| Makefile from .../arch/arm/mach-ixp4xx Kernel Subdirectory&lt;br /&gt;
| &amp;lt;pre&amp;gt;&lt;br /&gt;
 qiang@qiang-laptop:~/Desktop/linux-2.6$ cat 4_11&lt;br /&gt;
qiang@qiang-laptop:~/Desktop/linux-2.6/arch/arm/plat-omap$ head -n 20 Makefile&lt;br /&gt;
#&lt;br /&gt;
# Makefile for the linux kernel.&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
# Common support&lt;br /&gt;
obj-y := common.o sram.o clock.o devices.o dma.o mux.o gpio.o \&lt;br /&gt;
	 usb.o fb.o io.o&lt;br /&gt;
obj-m :=&lt;br /&gt;
obj-n :=&lt;br /&gt;
obj-  :=&lt;br /&gt;
&lt;br /&gt;
# OCPI interconnect support for 1710, 1610 and 5912&lt;br /&gt;
obj-$(CONFIG_ARCH_OMAP16XX) += ocpi.o&lt;br /&gt;
&lt;br /&gt;
# omap_device support (OMAP2+ only at the moment)&lt;br /&gt;
obj-$(CONFIG_ARCH_OMAP2) += omap_device.o&lt;br /&gt;
obj-$(CONFIG_ARCH_OMAP3) += omap_device.o&lt;br /&gt;
&lt;br /&gt;
obj-$(CONFIG_OMAP_MCBSP) += mcbsp.o&lt;br /&gt;
obj-$(CONFIG_OMAP_IOMMU) += iommu.o iovmm.o&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jiangq</name></author>	</entry>

	<entry>
		<id>http://elinux.org/User:Jiangq</id>
		<title>User:Jiangq</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/User:Jiangq"/>
				<updated>2010-04-15T11:42:51Z</updated>
		
		<summary type="html">&lt;p&gt;Jiangq: Created page with '= Listings = == Chapter 2 =='&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Listings =&lt;br /&gt;
== Chapter 2 ==&lt;/div&gt;</summary>
		<author><name>Jiangq</name></author>	</entry>

	<entry>
		<id>http://elinux.org/ECE497_Editing_a_Wiki</id>
		<title>ECE497 Editing a Wiki</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/ECE497_Editing_a_Wiki"/>
				<updated>2010-04-15T11:41:15Z</updated>
		
		<summary type="html">&lt;p&gt;Jiangq: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Here is a wiki you can practice editing.  Before you can edit it you will have to create an login.  Pick something that will make it easy for me to identify you as part of my class.  Then just add your name and date on the end of the table.&lt;br /&gt;
&lt;br /&gt;
You can get help here: [[Help:Contents]].&lt;br /&gt;
&lt;br /&gt;
If you need help with syntax check out the [[Editing Quickstart Guide|eLinux guide]] or the [http://en.wikipedia.org/wiki/Wikipedia:Cheatsheet Wikipedia Cheetsheet].&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Name&lt;br /&gt;
! Date&lt;br /&gt;
|-&lt;br /&gt;
| [[user:Yoder | Mark A. Yoder]]&lt;br /&gt;
| 2-Mar-2010&lt;br /&gt;
|-&lt;br /&gt;
| Elliot Simon&lt;br /&gt;
| 8-Mar-2010&lt;br /&gt;
|-&lt;br /&gt;
| Mitch Garvin&lt;br /&gt;
| 8-Mar-2010&lt;br /&gt;
|-&lt;br /&gt;
| [[user:collinjc | J. Cody Collins]]&lt;br /&gt;
| 8-Mar-2010&lt;br /&gt;
|-&lt;br /&gt;
| Steven Stark&lt;br /&gt;
| 8-Mar-2010&lt;br /&gt;
|-&lt;br /&gt;
| [[user:embrybd | Brian Embry]]&lt;br /&gt;
| 8-Mar-2010&lt;br /&gt;
|-&lt;br /&gt;
| [[user:jiangq | Qiang Jiang]]&lt;br /&gt;
| 8-Mar-2010&lt;br /&gt;
|-&lt;br /&gt;
| Jessica Lipscomb&lt;br /&gt;
| 8-Mar-2010&lt;br /&gt;
|-&lt;br /&gt;
| Chris Routh&lt;br /&gt;
| 8-Mar-2010&lt;br /&gt;
|-&lt;br /&gt;
| [[user:pmorrison | Paul Morrison]]&lt;br /&gt;
| 8-Mar-2010&lt;br /&gt;
|-&lt;br /&gt;
| [[user:batydm |David Baty]]&lt;br /&gt;
| 8-Mar-2010&lt;br /&gt;
|-&lt;br /&gt;
| Adam Jesionowski&lt;br /&gt;
| 9-Mar-2010&lt;br /&gt;
|-&lt;br /&gt;
| Greg Jackson&lt;br /&gt;
| 9-Mar-2010&lt;br /&gt;
|-&lt;br /&gt;
| Mark Jacobson&lt;br /&gt;
| 9-Mar-2010&lt;br /&gt;
|-&lt;br /&gt;
| Tom Most&lt;br /&gt;
| 10-Mar-2010&lt;br /&gt;
|-&lt;br /&gt;
| Yannick Polius&lt;br /&gt;
| 10-Mar-2010&lt;br /&gt;
|-&lt;br /&gt;
| Matt Luke&lt;br /&gt;
| 11-Mar-2010&lt;br /&gt;
|-&lt;br /&gt;
| [[user:banistpw | Paul Banister]]&lt;br /&gt;
| 12-Mar-2010&lt;br /&gt;
|-&lt;br /&gt;
| Jian Li&lt;br /&gt;
| 12-Mar-2010&lt;br /&gt;
|-&lt;br /&gt;
| Xiaoyan Mu&lt;br /&gt;
| 12-Mar-2010&lt;br /&gt;
|-&lt;br /&gt;
| Keqiong Xin&lt;br /&gt;
| 12-Mar-2010&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:ECE597]]&lt;/div&gt;</summary>
		<author><name>Jiangq</name></author>	</entry>

	<entry>
		<id>http://elinux.org/ECE497_Editing_a_Wiki</id>
		<title>ECE497 Editing a Wiki</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/ECE497_Editing_a_Wiki"/>
				<updated>2010-03-09T01:01:26Z</updated>
		
		<summary type="html">&lt;p&gt;Jiangq: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Here is a wiki you can practice editing.  Before you can edit it you will have to create an login.  Pick something that will make it easy for me to identify you as part of my class.  Then just add your name and date on the end of the table.&lt;br /&gt;
&lt;br /&gt;
You can get help here: [[Help:Contents]].&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Name&lt;br /&gt;
! Date&lt;br /&gt;
|-&lt;br /&gt;
| Mark A. Yoder&lt;br /&gt;
| 2-Mar-2010&lt;br /&gt;
|-&lt;br /&gt;
| Elliot Simon&lt;br /&gt;
| 8-Mar-2010&lt;br /&gt;
|-&lt;br /&gt;
| Mitch Garvin&lt;br /&gt;
| 8-Mar-2010&lt;br /&gt;
|-&lt;br /&gt;
| J. Cody Collins&lt;br /&gt;
| 8-Mar-2010&lt;br /&gt;
|-&lt;br /&gt;
| Steven Stark&lt;br /&gt;
| 8-Mar-2010&lt;br /&gt;
|-&lt;br /&gt;
| Brian Embry&lt;br /&gt;
| 8-Mar-2010&lt;br /&gt;
|-&lt;br /&gt;
| Qiang Jiang&lt;br /&gt;
| 8-Mar-2010&lt;br /&gt;
|-&lt;br /&gt;
| Next name&lt;br /&gt;
| and date&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:ECE597]]&lt;/div&gt;</summary>
		<author><name>Jiangq</name></author>	</entry>

	</feed>