<?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=TimBird&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=TimBird&amp;feedformat=atom"/>
		<link rel="alternate" type="text/html" href="http://elinux.org/Special:Contributions/TimBird"/>
		<updated>2013-05-24T20:33:53Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.22alpha</generator>

	<entry>
		<id>http://elinux.org/Android_Mainlining_Project</id>
		<title>Android Mainlining Project</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/Android_Mainlining_Project"/>
				<updated>2012-03-21T18:02:45Z</updated>
		
		<summary type="html">&lt;p&gt;TimBird: /* Patch/Feature Status Chart */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page is for organizing the Android Mainlining Project.  It has information and resources associated with this&lt;br /&gt;
project.&lt;br /&gt;
&lt;br /&gt;
== Goal ==&lt;br /&gt;
The goal of this project is to ultimately mainline all patches required to run the current released&lt;br /&gt;
version of Android.  The purpose of mainlining these patches is 3-fold:&lt;br /&gt;
# to allow a developer to use the latest released version of the Linux kernel to run an Android system, without requiring patches to their kernel&lt;br /&gt;
# to make it possible to develop drivers and board support features against either an Android kernel release or a kernel.org kernel release, with little or no modifications or conditional code&lt;br /&gt;
# to reduce or eliminate the burden of maintaining independent patches from release to release for Android kernel developers&lt;br /&gt;
&lt;br /&gt;
To &amp;quot;mainline&amp;quot; a patch means to have it included in Linus Torvalds kernel.org kernel, in a released (non-rc) version.&lt;br /&gt;
&lt;br /&gt;
== Process ==&lt;br /&gt;
[This is a draft section, up for discussion]&lt;br /&gt;
&lt;br /&gt;
Overall:&lt;br /&gt;
* identify all patches/features, and categorize into core or non/core&lt;br /&gt;
** core = feature is required or strongly desired for Android operation on a platform&lt;br /&gt;
** non-core = Most of the Android system can run without the feature&lt;br /&gt;
&lt;br /&gt;
Per feature or patch:&lt;br /&gt;
* research any previous submission feedback&lt;br /&gt;
* incorporate feedback, as appropriate&lt;br /&gt;
* negotiate any interface changes with Google Android team&lt;br /&gt;
* submit updated patches to mainline&lt;br /&gt;
* repeat until accepted&lt;br /&gt;
&lt;br /&gt;
== Resources ==&lt;br /&gt;
* Mailing list: https://lists.linuxfoundation.org/mailman/listinfo/ce-android-mainline&lt;br /&gt;
* Linaro blueprint for project: https://blueprints.launchpad.net/linux-linaro/+spec/linaro-kernel-android-upstreaming&lt;br /&gt;
&lt;br /&gt;
== Meetings ==&lt;br /&gt;
* Meeting: [[Android mainlining interest group meeting 2012]]&lt;br /&gt;
** Summary: 9:30- 12:00 February 10, 2012 at the Sofitel Hotel in Redwood Shores, California.&lt;br /&gt;
&lt;br /&gt;
== People ==&lt;br /&gt;
People who have expressed interest in this project are:&lt;br /&gt;
&lt;br /&gt;
* Tim Bird&lt;br /&gt;
* John Stultz&lt;br /&gt;
* Paul McKenney&lt;br /&gt;
* Deepak Saxena&lt;br /&gt;
* Arnd Bergmann&lt;br /&gt;
* Thomas Gleixner&lt;br /&gt;
* Arjan Van de Ven&lt;br /&gt;
* Brian Swetland&lt;br /&gt;
* Tetsuyuki Kobayashi&lt;br /&gt;
* Andy Green&lt;br /&gt;
* Victor M. Jaquez&lt;br /&gt;
* Jesse Barker&lt;br /&gt;
* Anton Vorontsov&lt;br /&gt;
* Greg Kroah-Hartman&lt;br /&gt;
* Shuah Khan&lt;br /&gt;
&lt;br /&gt;
=== roles/expertise ===&lt;br /&gt;
This section has miscellaneous notes on roles, capabilities and expertise of group's members&lt;br /&gt;
&lt;br /&gt;
John Stultz is the owner of the Linaro blueprint for mainlining Android features.&lt;br /&gt;
Tim Bird is the owner of the CE Workgroup project for mainlining Android features.&lt;br /&gt;
Deepak and Jesse can help make arrangements for a meeting at Linaro Connect.&lt;br /&gt;
Tim can help make arrangements for a meeting at Android Builders Summit.&lt;br /&gt;
&lt;br /&gt;
* John Stultz has worked on POSIX Alarm timers&lt;br /&gt;
* Jesse is working on shared memory buffers related to pmem/CMA/parts of ion&lt;br /&gt;
* Anton Vorontsov is looking at the lowmemory killer&lt;br /&gt;
* Greg has put some Android patches into mainline (under drivers/staging/android) previously&lt;br /&gt;
** Greg put some Android patches in mainline under drivers/staging/android in Dec. 2011&lt;br /&gt;
* Paul McKenney - kicking around ideas for dealing with wakelocks single global lock (dec. 2011)&lt;br /&gt;
&lt;br /&gt;
== Plans ==&lt;br /&gt;
* Update this site with information on latest patch status - ongoing, by anyone&lt;br /&gt;
** [FIXTHIS - add sections needing a status or status update]&lt;br /&gt;
&lt;br /&gt;
== Patch/Feature Status Chart ==&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-bgcolor=&amp;quot;#80c0d0&amp;quot;&lt;br /&gt;
!Feature/Patch&lt;br /&gt;
!Description&lt;br /&gt;
!Status&lt;br /&gt;
!Part of core?&lt;br /&gt;
!Owner/Interested parties&lt;br /&gt;
|Notes&lt;br /&gt;
|-&lt;br /&gt;
|[[Android_logger|logger]]&lt;br /&gt;
|kernel support for Android system logging&lt;br /&gt;
|in drivers/staging/android, in kernel version 3.3 2012.03.19&lt;br /&gt;
|yes&lt;br /&gt;
|Tim Bird&lt;br /&gt;
|See [[Mainline Android logger project]] for a list of ideas, issues and a project plan for this feature&lt;br /&gt;
Also see [http://lkml.indiana.edu/hypermail/linux/kernel/1112.2/index.html#02419 this LKML discussion thread]&lt;br /&gt;
Some cleanup patches in linux-next, with more extensive changes to be written, tested, reviewed by Tim in Spring 2012.&lt;br /&gt;
|-&lt;br /&gt;
|wakelocks&lt;br /&gt;
|Power management locking mechanism to prevent opportunistic suspend&lt;br /&gt;
|not mainlined, as of 2012.03.19, work in progress&lt;br /&gt;
|yes&lt;br /&gt;
|Rafael Wysocki&lt;br /&gt;
|Is important due to impact on board support and drivers by 3rd parties.  Last effort was around &amp;quot;autosleep and wakelocks&amp;quot;.&lt;br /&gt;
See http://lwn.net/Articles/479841/ and this thread: http://thread.gmane.org/gmane.linux.kernel/1249726&lt;br /&gt;
|-&lt;br /&gt;
|Android alarm timers&lt;br /&gt;
|Timers that count down during suspended operation, and can wake from suspend&lt;br /&gt;
|Partial: Posix alarm timers were mainlined in kernel version 2.6.38 - see https://lwn.net/Articles/429925/  &lt;br /&gt;
|yes&lt;br /&gt;
|John Stultz&lt;br /&gt;
|Mending patches to convert Android Alarm Timers to utilize the upstreamed alarm timer work are still pending.&lt;br /&gt;
|-&lt;br /&gt;
|ashmem&lt;br /&gt;
|Shared memory implementation that allows unpinned pages to be marked, which can be dropped by the kernel under memory pressure&lt;br /&gt;
|in drivers/staging/android, in kernel version 3.3 2012.03.19&lt;br /&gt;
|yes&lt;br /&gt;
|John Stultz&lt;br /&gt;
|Working on fadvise volatile alternative implementation that handles part of the ashmem functionality. However, there are additional aspects of ashmem design that need to be addressed(no tmpfs mounts, atomic create/unlink behavior,etc).&lt;br /&gt;
|-&lt;br /&gt;
|network security&lt;br /&gt;
|special permission checks for secure access to network operations&lt;br /&gt;
|not mainlined&lt;br /&gt;
|? (can run without it, but network security won't be enforced)&lt;br /&gt;
|no one&lt;br /&gt;
|May be very difficult to mainline, as the code is extremely Android-specific with hardcoded GIDs and capabilities.&lt;br /&gt;
|-&lt;br /&gt;
|[[Android_Binder|binder]]&lt;br /&gt;
|Android inter-process communication mechanism&lt;br /&gt;
|in drivers/staging/android, in kernel version 3.3 2012.03.19&lt;br /&gt;
|yes&lt;br /&gt;
|no one&lt;br /&gt;
|Generated a fair amount of discussion on last submission. See http://elinux.org/Android_Binder#obstacles_to_mainlining&lt;br /&gt;
See also this thread: http://lists.linuxfoundation.org/pipermail/ce-android-mainline/2012-January/thread.html#42&lt;br /&gt;
|-&lt;br /&gt;
|Android pmem driver&lt;br /&gt;
|manages large (1-16+MB) contiguous physical memory regions to be shared between userspace and kernel drivers (dsp, gpu etc.)&lt;br /&gt;
|Removed - no longer in use&lt;br /&gt;
|yes&lt;br /&gt;
|Shuah Khan&lt;br /&gt;
|Investigating existing alternatives. Can CMA (Contiguous Memory Allocator) fill the need? Based on recent lkml discussion, pmem.c is no longer used and will be removed from Android release. Reference: https://lkml.org/lkml/2012/1/23/183 -  Patch to remove pmem.c from 3.3-rc1 staging area has been accepted.&lt;br /&gt;
|-&lt;br /&gt;
|Android USB gadget driver&lt;br /&gt;
|Support for Android as gadget device from host&lt;br /&gt;
|unknown&lt;br /&gt;
|? (not sure if needed for basic bringup or not, but would be really painful if missing)&lt;br /&gt;
|no one?&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|timed gpio&lt;br /&gt;
|perform gpio operations as a result of specified timeouts - mainly used to support vibrate feature.&lt;br /&gt;
|in drivers/staging/android, in kernel version 3.3 2012.03.19&lt;br /&gt;
|no? (is this needed for basic bringup?)&lt;br /&gt;
|Shuah Khan&lt;br /&gt;
|Enhancing ledtrig-timer with activate_once timer - Shuah working on a patch&lt;br /&gt;
|-&lt;br /&gt;
|timed output&lt;br /&gt;
|seems to just be a class for timed gpio items&lt;br /&gt;
|in drivers/staging/android, in kernel version 3.3 2012.03.19&lt;br /&gt;
|no? (required by timed_gpio)&lt;br /&gt;
|Shuah Khan&lt;br /&gt;
|Enhancing ledtrig-timer with activate_once timer - Shuah working on a patch&lt;br /&gt;
|-&lt;br /&gt;
|low memory killer&lt;br /&gt;
|feature to manage application lifecycle in low memory conditions&lt;br /&gt;
|in drivers/staging/android, in kernel version 3.3 2012.03.19&lt;br /&gt;
|yes (but system might work without it)&lt;br /&gt;
|Anton Vorontsov&lt;br /&gt;
|See https://lkml.org/lkml/2011/12/18/173 for discussion about these patches&lt;br /&gt;
|-&lt;br /&gt;
|ram console&lt;br /&gt;
|ability to save console output to a reserved ram area for diagnostics on a subsequent boot&lt;br /&gt;
|in drivers/staging/android, in kernel version 3.3 2012.03.19&lt;br /&gt;
|no&lt;br /&gt;
|Shuah Khan&lt;br /&gt;
|No lkml submission attempt history found so far. pstore fs interface solves the same problem and is in mainline 3.1.5. fs/pstore  Reference - http://lwn.net/Articles/421297/ After investigating and discussing ram console use cases, it is clear that the proposal to use ram-oops and pstore will not be a complete solution to cover all the cases. Hence, the going forward plan is to pursue ram console inclusion in the mainline. ram console is going through re-write splitting it into twp drivers. Waiting for these changes to get into the 3.3 staging area. For now working with the unofficial patches.&lt;br /&gt;
|-&lt;br /&gt;
|ion graphics memory driver&lt;br /&gt;
|graphics memory drivers thingie&lt;br /&gt;
|not mainlined&lt;br /&gt;
|yes (for 4.0 and later?)&lt;br /&gt;
|Jesse Barker&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Progress Chart ==&lt;br /&gt;
This section is intended to show our progress, by showing the patch set size over time.  With any luck, as&lt;br /&gt;
we get features into mainline, the difference between the Android kernel and the mainline Linux kernel will shrink.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin:0; margin-top:10px; margin-right:10px; border:1px solid #dfdfdf; padding:0 1em 1em 1em; background-color:#ffffcc; align:right; &amp;quot;&amp;gt;&lt;br /&gt;
''Note: This table is not up-to-date and is hard to measure anyway.  The inclusion of a lot of material into 3.3 obsoletes the need for a per-patch tracking mechanism (maybe?).  Also, there will always be some difference, due to board support packages and new development areas (like ion), so the goal is not really 0 differences, but just a reduction overall.  I'm not sure if we'll maintain this table or not, but I'm leaving it for now as a placeholder.''&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* diff of 2.6.29 kernel.org tree versus kernel&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-bgcolor=&amp;quot;#80c0d0&amp;quot;&lt;br /&gt;
!Kernel Version&lt;br /&gt;
!Files changed&lt;br /&gt;
!insertions&lt;br /&gt;
!deletions&lt;br /&gt;
!hunks&lt;br /&gt;
!bytes in diff&lt;br /&gt;
|-&lt;br /&gt;
|2.6.29     ||    187 ||   123506 ||     0 ||     187 ||  3291827&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Android]]&lt;/div&gt;</summary>
		<author><name>TimBird</name></author>	</entry>

	<entry>
		<id>http://elinux.org/Android_Mainlining_Project</id>
		<title>Android Mainlining Project</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/Android_Mainlining_Project"/>
				<updated>2012-03-21T18:00:55Z</updated>
		
		<summary type="html">&lt;p&gt;TimBird: /* Progress Chart */ add disclaimer to this section (which is not finished)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page is for organizing the Android Mainlining Project.  It has information and resources associated with this&lt;br /&gt;
project.&lt;br /&gt;
&lt;br /&gt;
== Goal ==&lt;br /&gt;
The goal of this project is to ultimately mainline all patches required to run the current released&lt;br /&gt;
version of Android.  The purpose of mainlining these patches is 3-fold:&lt;br /&gt;
# to allow a developer to use the latest released version of the Linux kernel to run an Android system, without requiring patches to their kernel&lt;br /&gt;
# to make it possible to develop drivers and board support features against either an Android kernel release or a kernel.org kernel release, with little or no modifications or conditional code&lt;br /&gt;
# to reduce or eliminate the burden of maintaining independent patches from release to release for Android kernel developers&lt;br /&gt;
&lt;br /&gt;
To &amp;quot;mainline&amp;quot; a patch means to have it included in Linus Torvalds kernel.org kernel, in a released (non-rc) version.&lt;br /&gt;
&lt;br /&gt;
== Process ==&lt;br /&gt;
[This is a draft section, up for discussion]&lt;br /&gt;
&lt;br /&gt;
Overall:&lt;br /&gt;
* identify all patches/features, and categorize into core or non/core&lt;br /&gt;
** core = feature is required or strongly desired for Android operation on a platform&lt;br /&gt;
** non-core = Most of the Android system can run without the feature&lt;br /&gt;
&lt;br /&gt;
Per feature or patch:&lt;br /&gt;
* research any previous submission feedback&lt;br /&gt;
* incorporate feedback, as appropriate&lt;br /&gt;
* negotiate any interface changes with Google Android team&lt;br /&gt;
* submit updated patches to mainline&lt;br /&gt;
* repeat until accepted&lt;br /&gt;
&lt;br /&gt;
== Resources ==&lt;br /&gt;
* Mailing list: https://lists.linuxfoundation.org/mailman/listinfo/ce-android-mainline&lt;br /&gt;
* Linaro blueprint for project: https://blueprints.launchpad.net/linux-linaro/+spec/linaro-kernel-android-upstreaming&lt;br /&gt;
&lt;br /&gt;
== Meetings ==&lt;br /&gt;
* Meeting: [[Android mainlining interest group meeting 2012]]&lt;br /&gt;
** Summary: 9:30- 12:00 February 10, 2012 at the Sofitel Hotel in Redwood Shores, California.&lt;br /&gt;
&lt;br /&gt;
== People ==&lt;br /&gt;
People who have expressed interest in this project are:&lt;br /&gt;
&lt;br /&gt;
* Tim Bird&lt;br /&gt;
* John Stultz&lt;br /&gt;
* Paul McKenney&lt;br /&gt;
* Deepak Saxena&lt;br /&gt;
* Arnd Bergmann&lt;br /&gt;
* Thomas Gleixner&lt;br /&gt;
* Arjan Van de Ven&lt;br /&gt;
* Brian Swetland&lt;br /&gt;
* Tetsuyuki Kobayashi&lt;br /&gt;
* Andy Green&lt;br /&gt;
* Victor M. Jaquez&lt;br /&gt;
* Jesse Barker&lt;br /&gt;
* Anton Vorontsov&lt;br /&gt;
* Greg Kroah-Hartman&lt;br /&gt;
* Shuah Khan&lt;br /&gt;
&lt;br /&gt;
=== roles/expertise ===&lt;br /&gt;
This section has miscellaneous notes on roles, capabilities and expertise of group's members&lt;br /&gt;
&lt;br /&gt;
John Stultz is the owner of the Linaro blueprint for mainlining Android features.&lt;br /&gt;
Tim Bird is the owner of the CE Workgroup project for mainlining Android features.&lt;br /&gt;
Deepak and Jesse can help make arrangements for a meeting at Linaro Connect.&lt;br /&gt;
Tim can help make arrangements for a meeting at Android Builders Summit.&lt;br /&gt;
&lt;br /&gt;
* John Stultz has worked on POSIX Alarm timers&lt;br /&gt;
* Jesse is working on shared memory buffers related to pmem/CMA/parts of ion&lt;br /&gt;
* Anton Vorontsov is looking at the lowmemory killer&lt;br /&gt;
* Greg has put some Android patches into mainline (under drivers/staging/android) previously&lt;br /&gt;
** Greg put some Android patches in mainline under drivers/staging/android in Dec. 2011&lt;br /&gt;
* Paul McKenney - kicking around ideas for dealing with wakelocks single global lock (dec. 2011)&lt;br /&gt;
&lt;br /&gt;
== Plans ==&lt;br /&gt;
* Update this site with information on latest patch status - ongoing, by anyone&lt;br /&gt;
** [FIXTHIS - add sections needing a status or status update]&lt;br /&gt;
&lt;br /&gt;
== Patch/Feature Status Chart ==&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-bgcolor=&amp;quot;#80c0d0&amp;quot;&lt;br /&gt;
!Feature/Patch&lt;br /&gt;
!Description&lt;br /&gt;
!Status&lt;br /&gt;
!Part of core?&lt;br /&gt;
!Owner/Interested parties&lt;br /&gt;
|Notes&lt;br /&gt;
|-&lt;br /&gt;
|[[Android_logger|logger]]&lt;br /&gt;
|kernel support for Android system logging&lt;br /&gt;
|in drivers/staging/android, in kernel version 3.3 2012.03.19&lt;br /&gt;
|yes&lt;br /&gt;
|Tim Bird&lt;br /&gt;
|should be non-controversial (though I'm always surprised)&lt;br /&gt;
See [[Mainline Android logger project]] for a list of ideas, issues and a project plan for this feature&lt;br /&gt;
Also see [http://lkml.indiana.edu/hypermail/linux/kernel/1112.2/index.html#02419 this LKML discussion thread]&lt;br /&gt;
Some cleanup patches in linux-next, with more extensive changes to be written, tested, reviewed by Tim in Spring 2012.&lt;br /&gt;
|-&lt;br /&gt;
|wakelocks&lt;br /&gt;
|Power management locking mechanism to prevent opportunistic suspend&lt;br /&gt;
|not mainlined, as of 2012.03.19, work in progress&lt;br /&gt;
|yes&lt;br /&gt;
|Rafael Wysocki&lt;br /&gt;
|Is important due to impact on board support and drivers by 3rd parties.  Last effort was around &amp;quot;autosleep and wakelocks&amp;quot;.&lt;br /&gt;
See http://lwn.net/Articles/479841/ and this thread: http://thread.gmane.org/gmane.linux.kernel/1249726&lt;br /&gt;
|-&lt;br /&gt;
|Android alarm timers&lt;br /&gt;
|Timers that count down during suspended operation, and can wake from suspend&lt;br /&gt;
|Partial: Posix alarm timers were mainlined in kernel version 2.6.38 - see https://lwn.net/Articles/429925/  &lt;br /&gt;
|yes&lt;br /&gt;
|John Stultz&lt;br /&gt;
|Mending patches to convert Android Alarm Timers to utilize the upstreamed alarm timer work are still pending.&lt;br /&gt;
|-&lt;br /&gt;
|ashmem&lt;br /&gt;
|Shared memory implementation that allows unpinned pages to be marked, which can be dropped by the kernel under memory pressure&lt;br /&gt;
|in drivers/staging/android, in kernel version 3.3 2012.03.19&lt;br /&gt;
|yes&lt;br /&gt;
|John Stultz&lt;br /&gt;
|Working on fadvise volatile alternative implementation that handles part of the ashmem functionality. However, there are additional aspects of ashmem design that need to be addressed(no tmpfs mounts, atomic create/unlink behavior,etc).&lt;br /&gt;
|-&lt;br /&gt;
|network security&lt;br /&gt;
|special permission checks for secure access to network operations&lt;br /&gt;
|not mainlined&lt;br /&gt;
|? (can run without it, but network security won't be enforced)&lt;br /&gt;
|no one&lt;br /&gt;
|May be very difficult to mainline, as the code is extremely Android-specific with hardcoded GIDs and capabilities.&lt;br /&gt;
|-&lt;br /&gt;
|[[Android_Binder|binder]]&lt;br /&gt;
|Android inter-process communication mechanism&lt;br /&gt;
|in drivers/staging/android, in kernel version 3.3 2012.03.19&lt;br /&gt;
|yes&lt;br /&gt;
|no one&lt;br /&gt;
|Generated a fair amount of discussion on last submission. See http://elinux.org/Android_Binder#obstacles_to_mainlining&lt;br /&gt;
See also this thread: http://lists.linuxfoundation.org/pipermail/ce-android-mainline/2012-January/thread.html#42&lt;br /&gt;
|-&lt;br /&gt;
|Android pmem driver&lt;br /&gt;
|manages large (1-16+MB) contiguous physical memory regions to be shared between userspace and kernel drivers (dsp, gpu etc.)&lt;br /&gt;
|Removed - no longer in use&lt;br /&gt;
|yes&lt;br /&gt;
|Shuah Khan&lt;br /&gt;
|Investigating existing alternatives. Can CMA (Contiguous Memory Allocator) fill the need? Based on recent lkml discussion, pmem.c is no longer used and will be removed from Android release. Reference: https://lkml.org/lkml/2012/1/23/183 -  Patch to remove pmem.c from 3.3-rc1 staging area has been accepted.&lt;br /&gt;
|-&lt;br /&gt;
|Android USB gadget driver&lt;br /&gt;
|Support for Android as gadget device from host&lt;br /&gt;
|unknown&lt;br /&gt;
|? (not sure if needed for basic bringup or not, but would be really painful if missing)&lt;br /&gt;
|no one?&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|timed gpio&lt;br /&gt;
|perform gpio operations as a result of specified timeouts - mainly used to support vibrate feature.&lt;br /&gt;
|in drivers/staging/android, in kernel version 3.3 2012.03.19&lt;br /&gt;
|no? (is this needed for basic bringup?)&lt;br /&gt;
|Shuah Khan&lt;br /&gt;
|Enhancing ledtrig-timer with activate_once timer - Shuah working on a patch&lt;br /&gt;
|-&lt;br /&gt;
|timed output&lt;br /&gt;
|seems to just be a class for timed gpio items&lt;br /&gt;
|in drivers/staging/android, in kernel version 3.3 2012.03.19&lt;br /&gt;
|no? (required by timed_gpio)&lt;br /&gt;
|Shuah Khan&lt;br /&gt;
|Enhancing ledtrig-timer with activate_once timer - Shuah working on a patch&lt;br /&gt;
|-&lt;br /&gt;
|low memory killer&lt;br /&gt;
|feature to manage application lifecycle in low memory conditions&lt;br /&gt;
|in drivers/staging/android, in kernel version 3.3 2012.03.19&lt;br /&gt;
|yes (but system might work without it)&lt;br /&gt;
|Anton Vorontsov&lt;br /&gt;
|See https://lkml.org/lkml/2011/12/18/173 for discussion about these patches&lt;br /&gt;
|-&lt;br /&gt;
|ram console&lt;br /&gt;
|ability to save console output to a reserved ram area for diagnostics on a subsequent boot&lt;br /&gt;
|in drivers/staging/android, in kernel version 3.3 2012.03.19&lt;br /&gt;
|no&lt;br /&gt;
|Shuah Khan&lt;br /&gt;
|No lkml submission attempt history found so far. pstore fs interface solves the same problem and is in mainline 3.1.5. fs/pstore  Reference - http://lwn.net/Articles/421297/ After investigating and discussing ram console use cases, it is clear that the proposal to use ram-oops and pstore will not be a complete solution to cover all the cases. Hence, the going forward plan is to pursue ram console inclusion in the mainline. ram console is going through re-write splitting it into twp drivers. Waiting for these changes to get into the 3.3 staging area. For now working with the unofficial patches.&lt;br /&gt;
|-&lt;br /&gt;
|ion graphics memory driver&lt;br /&gt;
|graphics memory drivers thingie&lt;br /&gt;
|not mainlined&lt;br /&gt;
|yes (for 4.0 and later?)&lt;br /&gt;
|Jesse Barker&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Progress Chart ==&lt;br /&gt;
This section is intended to show our progress, by showing the patch set size over time.  With any luck, as&lt;br /&gt;
we get features into mainline, the difference between the Android kernel and the mainline Linux kernel will shrink.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin:0; margin-top:10px; margin-right:10px; border:1px solid #dfdfdf; padding:0 1em 1em 1em; background-color:#ffffcc; align:right; &amp;quot;&amp;gt;&lt;br /&gt;
''Note: This table is not up-to-date and is hard to measure anyway.  The inclusion of a lot of material into 3.3 obsoletes the need for a per-patch tracking mechanism (maybe?).  Also, there will always be some difference, due to board support packages and new development areas (like ion), so the goal is not really 0 differences, but just a reduction overall.  I'm not sure if we'll maintain this table or not, but I'm leaving it for now as a placeholder.''&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* diff of 2.6.29 kernel.org tree versus kernel&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-bgcolor=&amp;quot;#80c0d0&amp;quot;&lt;br /&gt;
!Kernel Version&lt;br /&gt;
!Files changed&lt;br /&gt;
!insertions&lt;br /&gt;
!deletions&lt;br /&gt;
!hunks&lt;br /&gt;
!bytes in diff&lt;br /&gt;
|-&lt;br /&gt;
|2.6.29     ||    187 ||   123506 ||     0 ||     187 ||  3291827&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Android]]&lt;/div&gt;</summary>
		<author><name>TimBird</name></author>	</entry>

	<entry>
		<id>http://elinux.org/Android_Mainlining_Project</id>
		<title>Android Mainlining Project</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/Android_Mainlining_Project"/>
				<updated>2012-03-19T23:25:23Z</updated>
		
		<summary type="html">&lt;p&gt;TimBird: /* Patch/Feature Status Chart */ add thread from ce-android-mainline for binder&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page is for organizing the Android Mainlining Project.  It has information and resources associated with this&lt;br /&gt;
project.&lt;br /&gt;
&lt;br /&gt;
== Goal ==&lt;br /&gt;
The goal of this project is to ultimately mainline all patches required to run the current released&lt;br /&gt;
version of Android.  The purpose of mainlining these patches is 3-fold:&lt;br /&gt;
# to allow a developer to use the latest released version of the Linux kernel to run an Android system, without requiring patches to their kernel&lt;br /&gt;
# to make it possible to develop drivers and board support features against either an Android kernel release or a kernel.org kernel release, with little or no modifications or conditional code&lt;br /&gt;
# to reduce or eliminate the burden of maintaining independent patches from release to release for Android kernel developers&lt;br /&gt;
&lt;br /&gt;
To &amp;quot;mainline&amp;quot; a patch means to have it included in Linus Torvalds kernel.org kernel, in a released (non-rc) version.&lt;br /&gt;
&lt;br /&gt;
== Process ==&lt;br /&gt;
[This is a draft section, up for discussion]&lt;br /&gt;
&lt;br /&gt;
Overall:&lt;br /&gt;
* identify all patches/features, and categorize into core or non/core&lt;br /&gt;
** core = feature is required or strongly desired for Android operation on a platform&lt;br /&gt;
** non-core = Most of the Android system can run without the feature&lt;br /&gt;
&lt;br /&gt;
Per feature or patch:&lt;br /&gt;
* research any previous submission feedback&lt;br /&gt;
* incorporate feedback, as appropriate&lt;br /&gt;
* negotiate any interface changes with Google Android team&lt;br /&gt;
* submit updated patches to mainline&lt;br /&gt;
* repeat until accepted&lt;br /&gt;
&lt;br /&gt;
== Resources ==&lt;br /&gt;
* Mailing list: https://lists.linuxfoundation.org/mailman/listinfo/ce-android-mainline&lt;br /&gt;
* Linaro blueprint for project: https://blueprints.launchpad.net/linux-linaro/+spec/linaro-kernel-android-upstreaming&lt;br /&gt;
&lt;br /&gt;
== Meetings ==&lt;br /&gt;
* Meeting: [[Android mainlining interest group meeting 2012]]&lt;br /&gt;
** Summary: 9:30- 12:00 February 10, 2012 at the Sofitel Hotel in Redwood Shores, California.&lt;br /&gt;
&lt;br /&gt;
== People ==&lt;br /&gt;
People who have expressed interest in this project are:&lt;br /&gt;
&lt;br /&gt;
* Tim Bird&lt;br /&gt;
* John Stultz&lt;br /&gt;
* Paul McKenney&lt;br /&gt;
* Deepak Saxena&lt;br /&gt;
* Arnd Bergmann&lt;br /&gt;
* Thomas Gleixner&lt;br /&gt;
* Arjan Van de Ven&lt;br /&gt;
* Brian Swetland&lt;br /&gt;
* Tetsuyuki Kobayashi&lt;br /&gt;
* Andy Green&lt;br /&gt;
* Victor M. Jaquez&lt;br /&gt;
* Jesse Barker&lt;br /&gt;
* Anton Vorontsov&lt;br /&gt;
* Greg Kroah-Hartman&lt;br /&gt;
* Shuah Khan&lt;br /&gt;
&lt;br /&gt;
=== roles/expertise ===&lt;br /&gt;
This section has miscellaneous notes on roles, capabilities and expertise of group's members&lt;br /&gt;
&lt;br /&gt;
John Stultz is the owner of the Linaro blueprint for mainlining Android features.&lt;br /&gt;
Tim Bird is the owner of the CE Workgroup project for mainlining Android features.&lt;br /&gt;
Deepak and Jesse can help make arrangements for a meeting at Linaro Connect.&lt;br /&gt;
Tim can help make arrangements for a meeting at Android Builders Summit.&lt;br /&gt;
&lt;br /&gt;
* John Stultz has worked on POSIX Alarm timers&lt;br /&gt;
* Jesse is working on shared memory buffers related to pmem/CMA/parts of ion&lt;br /&gt;
* Anton Vorontsov is looking at the lowmemory killer&lt;br /&gt;
* Greg has put some Android patches into mainline (under drivers/staging/android) previously&lt;br /&gt;
** Greg put some Android patches in mainline under drivers/staging/android in Dec. 2011&lt;br /&gt;
* Paul McKenney - kicking around ideas for dealing with wakelocks single global lock (dec. 2011)&lt;br /&gt;
&lt;br /&gt;
== Plans ==&lt;br /&gt;
* Update this site with information on latest patch status - ongoing, by anyone&lt;br /&gt;
** [FIXTHIS - add sections needing a status or status update]&lt;br /&gt;
&lt;br /&gt;
== Patch/Feature Status Chart ==&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-bgcolor=&amp;quot;#80c0d0&amp;quot;&lt;br /&gt;
!Feature/Patch&lt;br /&gt;
!Description&lt;br /&gt;
!Status&lt;br /&gt;
!Part of core?&lt;br /&gt;
!Owner/Interested parties&lt;br /&gt;
|Notes&lt;br /&gt;
|-&lt;br /&gt;
|[[Android_logger|logger]]&lt;br /&gt;
|kernel support for Android system logging&lt;br /&gt;
|in drivers/staging/android, in kernel version 3.3 2012.03.19&lt;br /&gt;
|yes&lt;br /&gt;
|Tim Bird&lt;br /&gt;
|should be non-controversial (though I'm always surprised)&lt;br /&gt;
See [[Mainline Android logger project]] for a list of ideas, issues and a project plan for this feature&lt;br /&gt;
Also see [http://lkml.indiana.edu/hypermail/linux/kernel/1112.2/index.html#02419 this LKML discussion thread]&lt;br /&gt;
Some cleanup patches in linux-next, with more extensive changes to be written, tested, reviewed by Tim in Spring 2012.&lt;br /&gt;
|-&lt;br /&gt;
|wakelocks&lt;br /&gt;
|Power management locking mechanism to prevent opportunistic suspend&lt;br /&gt;
|not mainlined, as of 2012.03.19, work in progress&lt;br /&gt;
|yes&lt;br /&gt;
|Rafael Wysocki&lt;br /&gt;
|Is important due to impact on board support and drivers by 3rd parties.  Last effort was around &amp;quot;autosleep and wakelocks&amp;quot;.&lt;br /&gt;
See http://lwn.net/Articles/479841/ and this thread: http://thread.gmane.org/gmane.linux.kernel/1249726&lt;br /&gt;
|-&lt;br /&gt;
|Android alarm timers&lt;br /&gt;
|Timers that count down during suspended operation, and can wake from suspend&lt;br /&gt;
|Partial: Posix alarm timers were mainlined in kernel version 2.6.38 - see https://lwn.net/Articles/429925/  &lt;br /&gt;
|yes&lt;br /&gt;
|John Stultz&lt;br /&gt;
|Mending patches to convert Android Alarm Timers to utilize the upstreamed alarm timer work are still pending.&lt;br /&gt;
|-&lt;br /&gt;
|ashmem&lt;br /&gt;
|Shared memory implementation that allows unpinned pages to be marked, which can be dropped by the kernel under memory pressure&lt;br /&gt;
|in drivers/staging/android, in kernel version 3.3 2012.03.19&lt;br /&gt;
|yes&lt;br /&gt;
|John Stultz&lt;br /&gt;
|Working on fadvise volatile alternative implementation that handles part of the ashmem functionality. However, there are additional aspects of ashmem design that need to be addressed(no tmpfs mounts, atomic create/unlink behavior,etc).&lt;br /&gt;
|-&lt;br /&gt;
|network security&lt;br /&gt;
|special permission checks for secure access to network operations&lt;br /&gt;
|not mainlined&lt;br /&gt;
|? (can run without it, but network security won't be enforced)&lt;br /&gt;
|no one&lt;br /&gt;
|May be very difficult to mainline, as the code is extremely Android-specific with hardcoded GIDs and capabilities.&lt;br /&gt;
|-&lt;br /&gt;
|[[Android_Binder|binder]]&lt;br /&gt;
|Android inter-process communication mechanism&lt;br /&gt;
|in drivers/staging/android, in kernel version 3.3 2012.03.19&lt;br /&gt;
|yes&lt;br /&gt;
|no one&lt;br /&gt;
|Generated a fair amount of discussion on last submission. See http://elinux.org/Android_Binder#obstacles_to_mainlining&lt;br /&gt;
See also this thread: http://lists.linuxfoundation.org/pipermail/ce-android-mainline/2012-January/thread.html#42&lt;br /&gt;
|-&lt;br /&gt;
|Android pmem driver&lt;br /&gt;
|manages large (1-16+MB) contiguous physical memory regions to be shared between userspace and kernel drivers (dsp, gpu etc.)&lt;br /&gt;
|Removed - no longer in use&lt;br /&gt;
|yes&lt;br /&gt;
|Shuah Khan&lt;br /&gt;
|Investigating existing alternatives. Can CMA (Contiguous Memory Allocator) fill the need? Based on recent lkml discussion, pmem.c is no longer used and will be removed from Android release. Reference: https://lkml.org/lkml/2012/1/23/183 -  Patch to remove pmem.c from 3.3-rc1 staging area has been accepted.&lt;br /&gt;
|-&lt;br /&gt;
|Android USB gadget driver&lt;br /&gt;
|Support for Android as gadget device from host&lt;br /&gt;
|unknown&lt;br /&gt;
|? (not sure if needed for basic bringup or not, but would be really painful if missing)&lt;br /&gt;
|no one?&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|timed gpio&lt;br /&gt;
|perform gpio operations as a result of specified timeouts - mainly used to support vibrate feature.&lt;br /&gt;
|in drivers/staging/android, in kernel version 3.3 2012.03.19&lt;br /&gt;
|no? (is this needed for basic bringup?)&lt;br /&gt;
|Shuah Khan&lt;br /&gt;
|Enhancing ledtrig-timer with activate_once timer - Shuah working on a patch&lt;br /&gt;
|-&lt;br /&gt;
|timed output&lt;br /&gt;
|seems to just be a class for timed gpio items&lt;br /&gt;
|in drivers/staging/android, in kernel version 3.3 2012.03.19&lt;br /&gt;
|no? (required by timed_gpio)&lt;br /&gt;
|Shuah Khan&lt;br /&gt;
|Enhancing ledtrig-timer with activate_once timer - Shuah working on a patch&lt;br /&gt;
|-&lt;br /&gt;
|low memory killer&lt;br /&gt;
|feature to manage application lifecycle in low memory conditions&lt;br /&gt;
|in drivers/staging/android, in kernel version 3.3 2012.03.19&lt;br /&gt;
|yes (but system might work without it)&lt;br /&gt;
|Anton Vorontsov&lt;br /&gt;
|See https://lkml.org/lkml/2011/12/18/173 for discussion about these patches&lt;br /&gt;
|-&lt;br /&gt;
|ram console&lt;br /&gt;
|ability to save console output to a reserved ram area for diagnostics on a subsequent boot&lt;br /&gt;
|in drivers/staging/android, in kernel version 3.3 2012.03.19&lt;br /&gt;
|no&lt;br /&gt;
|Shuah Khan&lt;br /&gt;
|No lkml submission attempt history found so far. pstore fs interface solves the same problem and is in mainline 3.1.5. fs/pstore  Reference - http://lwn.net/Articles/421297/ After investigating and discussing ram console use cases, it is clear that the proposal to use ram-oops and pstore will not be a complete solution to cover all the cases. Hence, the going forward plan is to pursue ram console inclusion in the mainline. ram console is going through re-write splitting it into twp drivers. Waiting for these changes to get into the 3.3 staging area. For now working with the unofficial patches.&lt;br /&gt;
|-&lt;br /&gt;
|ion graphics memory driver&lt;br /&gt;
|graphics memory drivers thingie&lt;br /&gt;
|not mainlined&lt;br /&gt;
|yes (for 4.0 and later?)&lt;br /&gt;
|Jesse Barker&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Progress Chart ==&lt;br /&gt;
This section is intended to show our progress, by showing the patch set size over time.  With any luck, as&lt;br /&gt;
we get features into mainline, the difference between the Android kernel and the legacy Linux kernel will shrink.&lt;br /&gt;
&lt;br /&gt;
* diff of 2.6.29 kernel.org tree versus kernel&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-bgcolor=&amp;quot;#80c0d0&amp;quot;&lt;br /&gt;
!Kernel Version&lt;br /&gt;
!Files changed&lt;br /&gt;
!insertions&lt;br /&gt;
!deletions&lt;br /&gt;
!hunks&lt;br /&gt;
!bytes in diff&lt;br /&gt;
|-&lt;br /&gt;
|2.6.29     ||    187 ||   123506 ||     0 ||     187 ||  3291827&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Android]]&lt;/div&gt;</summary>
		<author><name>TimBird</name></author>	</entry>

	<entry>
		<id>http://elinux.org/Android_Mainlining_Project</id>
		<title>Android Mainlining Project</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/Android_Mainlining_Project"/>
				<updated>2012-03-19T23:18:05Z</updated>
		
		<summary type="html">&lt;p&gt;TimBird: /* Patch/Feature Status Chart */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page is for organizing the Android Mainlining Project.  It has information and resources associated with this&lt;br /&gt;
project.&lt;br /&gt;
&lt;br /&gt;
== Goal ==&lt;br /&gt;
The goal of this project is to ultimately mainline all patches required to run the current released&lt;br /&gt;
version of Android.  The purpose of mainlining these patches is 3-fold:&lt;br /&gt;
# to allow a developer to use the latest released version of the Linux kernel to run an Android system, without requiring patches to their kernel&lt;br /&gt;
# to make it possible to develop drivers and board support features against either an Android kernel release or a kernel.org kernel release, with little or no modifications or conditional code&lt;br /&gt;
# to reduce or eliminate the burden of maintaining independent patches from release to release for Android kernel developers&lt;br /&gt;
&lt;br /&gt;
To &amp;quot;mainline&amp;quot; a patch means to have it included in Linus Torvalds kernel.org kernel, in a released (non-rc) version.&lt;br /&gt;
&lt;br /&gt;
== Process ==&lt;br /&gt;
[This is a draft section, up for discussion]&lt;br /&gt;
&lt;br /&gt;
Overall:&lt;br /&gt;
* identify all patches/features, and categorize into core or non/core&lt;br /&gt;
** core = feature is required or strongly desired for Android operation on a platform&lt;br /&gt;
** non-core = Most of the Android system can run without the feature&lt;br /&gt;
&lt;br /&gt;
Per feature or patch:&lt;br /&gt;
* research any previous submission feedback&lt;br /&gt;
* incorporate feedback, as appropriate&lt;br /&gt;
* negotiate any interface changes with Google Android team&lt;br /&gt;
* submit updated patches to mainline&lt;br /&gt;
* repeat until accepted&lt;br /&gt;
&lt;br /&gt;
== Resources ==&lt;br /&gt;
* Mailing list: https://lists.linuxfoundation.org/mailman/listinfo/ce-android-mainline&lt;br /&gt;
* Linaro blueprint for project: https://blueprints.launchpad.net/linux-linaro/+spec/linaro-kernel-android-upstreaming&lt;br /&gt;
&lt;br /&gt;
== Meetings ==&lt;br /&gt;
* Meeting: [[Android mainlining interest group meeting 2012]]&lt;br /&gt;
** Summary: 9:30- 12:00 February 10, 2012 at the Sofitel Hotel in Redwood Shores, California.&lt;br /&gt;
&lt;br /&gt;
== People ==&lt;br /&gt;
People who have expressed interest in this project are:&lt;br /&gt;
&lt;br /&gt;
* Tim Bird&lt;br /&gt;
* John Stultz&lt;br /&gt;
* Paul McKenney&lt;br /&gt;
* Deepak Saxena&lt;br /&gt;
* Arnd Bergmann&lt;br /&gt;
* Thomas Gleixner&lt;br /&gt;
* Arjan Van de Ven&lt;br /&gt;
* Brian Swetland&lt;br /&gt;
* Tetsuyuki Kobayashi&lt;br /&gt;
* Andy Green&lt;br /&gt;
* Victor M. Jaquez&lt;br /&gt;
* Jesse Barker&lt;br /&gt;
* Anton Vorontsov&lt;br /&gt;
* Greg Kroah-Hartman&lt;br /&gt;
* Shuah Khan&lt;br /&gt;
&lt;br /&gt;
=== roles/expertise ===&lt;br /&gt;
This section has miscellaneous notes on roles, capabilities and expertise of group's members&lt;br /&gt;
&lt;br /&gt;
John Stultz is the owner of the Linaro blueprint for mainlining Android features.&lt;br /&gt;
Tim Bird is the owner of the CE Workgroup project for mainlining Android features.&lt;br /&gt;
Deepak and Jesse can help make arrangements for a meeting at Linaro Connect.&lt;br /&gt;
Tim can help make arrangements for a meeting at Android Builders Summit.&lt;br /&gt;
&lt;br /&gt;
* John Stultz has worked on POSIX Alarm timers&lt;br /&gt;
* Jesse is working on shared memory buffers related to pmem/CMA/parts of ion&lt;br /&gt;
* Anton Vorontsov is looking at the lowmemory killer&lt;br /&gt;
* Greg has put some Android patches into mainline (under drivers/staging/android) previously&lt;br /&gt;
** Greg put some Android patches in mainline under drivers/staging/android in Dec. 2011&lt;br /&gt;
* Paul McKenney - kicking around ideas for dealing with wakelocks single global lock (dec. 2011)&lt;br /&gt;
&lt;br /&gt;
== Plans ==&lt;br /&gt;
* Update this site with information on latest patch status - ongoing, by anyone&lt;br /&gt;
** [FIXTHIS - add sections needing a status or status update]&lt;br /&gt;
&lt;br /&gt;
== Patch/Feature Status Chart ==&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-bgcolor=&amp;quot;#80c0d0&amp;quot;&lt;br /&gt;
!Feature/Patch&lt;br /&gt;
!Description&lt;br /&gt;
!Status&lt;br /&gt;
!Part of core?&lt;br /&gt;
!Owner/Interested parties&lt;br /&gt;
|Notes&lt;br /&gt;
|-&lt;br /&gt;
|[[Android_logger|logger]]&lt;br /&gt;
|kernel support for Android system logging&lt;br /&gt;
|in drivers/staging/android, in kernel version 3.3 2012.03.19&lt;br /&gt;
|yes&lt;br /&gt;
|Tim Bird&lt;br /&gt;
|should be non-controversial (though I'm always surprised)&lt;br /&gt;
See [[Mainline Android logger project]] for a list of ideas, issues and a project plan for this feature&lt;br /&gt;
Also see [http://lkml.indiana.edu/hypermail/linux/kernel/1112.2/index.html#02419 this LKML discussion thread]&lt;br /&gt;
Some cleanup patches in linux-next, with more extensive changes to be written, tested, reviewed by Tim in Spring 2012.&lt;br /&gt;
|-&lt;br /&gt;
|wakelocks&lt;br /&gt;
|Power management locking mechanism to prevent opportunistic suspend&lt;br /&gt;
|not mainlined, as of 2012.03.19, work in progress&lt;br /&gt;
|yes&lt;br /&gt;
|Rafael Wysocki&lt;br /&gt;
|Is important due to impact on board support and drivers by 3rd parties.  Last effort was around &amp;quot;autosleep and wakelocks&amp;quot;.&lt;br /&gt;
See http://lwn.net/Articles/479841/ and this thread: http://thread.gmane.org/gmane.linux.kernel/1249726&lt;br /&gt;
|-&lt;br /&gt;
|Android alarm timers&lt;br /&gt;
|Timers that count down during suspended operation, and can wake from suspend&lt;br /&gt;
|Partial: Posix alarm timers were mainlined in kernel version 2.6.38 - see https://lwn.net/Articles/429925/  &lt;br /&gt;
|yes&lt;br /&gt;
|John Stultz&lt;br /&gt;
|Mending patches to convert Android Alarm Timers to utilize the upstreamed alarm timer work are still pending.&lt;br /&gt;
|-&lt;br /&gt;
|ashmem&lt;br /&gt;
|Shared memory implementation that allows unpinned pages to be marked, which can be dropped by the kernel under memory pressure&lt;br /&gt;
|in drivers/staging/android, in kernel version 3.3 2012.03.19&lt;br /&gt;
|yes&lt;br /&gt;
|John Stultz&lt;br /&gt;
|Working on fadvise volatile alternative implementation that handles part of the ashmem functionality. However, there are additional aspects of ashmem design that need to be addressed(no tmpfs mounts, atomic create/unlink behavior,etc).&lt;br /&gt;
|-&lt;br /&gt;
|network security&lt;br /&gt;
|special permission checks for secure access to network operations&lt;br /&gt;
|not mainlined&lt;br /&gt;
|? (can run without it, but network security won't be enforced)&lt;br /&gt;
|no one&lt;br /&gt;
|May be very difficult to mainline, as the code is extremely Android-specific with hardcoded GIDs and capabilities.&lt;br /&gt;
|-&lt;br /&gt;
|[[Android_Binder|binder]]&lt;br /&gt;
|Android inter-process communication mechanism&lt;br /&gt;
|in drivers/staging/android, in kernel version 3.3 2012.03.19&lt;br /&gt;
|yes&lt;br /&gt;
|no one&lt;br /&gt;
|Generated a fair amount of discussion on last submission. See http://elinux.org/Android_Binder#obstacles_to_mainlining&lt;br /&gt;
|-&lt;br /&gt;
|Android pmem driver&lt;br /&gt;
|manages large (1-16+MB) contiguous physical memory regions to be shared between userspace and kernel drivers (dsp, gpu etc.)&lt;br /&gt;
|Removed - no longer in use&lt;br /&gt;
|yes&lt;br /&gt;
|Shuah Khan&lt;br /&gt;
|Investigating existing alternatives. Can CMA (Contiguous Memory Allocator) fill the need? Based on recent lkml discussion, pmem.c is no longer used and will be removed from Android release. Reference: https://lkml.org/lkml/2012/1/23/183 -  Patch to remove pmem.c from 3.3-rc1 staging area has been accepted.&lt;br /&gt;
|-&lt;br /&gt;
|Android USB gadget driver&lt;br /&gt;
|Support for Android as gadget device from host&lt;br /&gt;
|unknown&lt;br /&gt;
|? (not sure if needed for basic bringup or not, but would be really painful if missing)&lt;br /&gt;
|no one?&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|timed gpio&lt;br /&gt;
|perform gpio operations as a result of specified timeouts - mainly used to support vibrate feature.&lt;br /&gt;
|in drivers/staging/android, in kernel version 3.3 2012.03.19&lt;br /&gt;
|no? (is this needed for basic bringup?)&lt;br /&gt;
|Shuah Khan&lt;br /&gt;
|Enhancing ledtrig-timer with activate_once timer - Shuah working on a patch&lt;br /&gt;
|-&lt;br /&gt;
|timed output&lt;br /&gt;
|seems to just be a class for timed gpio items&lt;br /&gt;
|in drivers/staging/android, in kernel version 3.3 2012.03.19&lt;br /&gt;
|no? (required by timed_gpio)&lt;br /&gt;
|Shuah Khan&lt;br /&gt;
|Enhancing ledtrig-timer with activate_once timer - Shuah working on a patch&lt;br /&gt;
|-&lt;br /&gt;
|low memory killer&lt;br /&gt;
|feature to manage application lifecycle in low memory conditions&lt;br /&gt;
|in drivers/staging/android, in kernel version 3.3 2012.03.19&lt;br /&gt;
|yes (but system might work without it)&lt;br /&gt;
|Anton Vorontsov&lt;br /&gt;
|See https://lkml.org/lkml/2011/12/18/173 for discussion about these patches&lt;br /&gt;
|-&lt;br /&gt;
|ram console&lt;br /&gt;
|ability to save console output to a reserved ram area for diagnostics on a subsequent boot&lt;br /&gt;
|in drivers/staging/android, in kernel version 3.3 2012.03.19&lt;br /&gt;
|no&lt;br /&gt;
|Shuah Khan&lt;br /&gt;
|No lkml submission attempt history found so far. pstore fs interface solves the same problem and is in mainline 3.1.5. fs/pstore  Reference - http://lwn.net/Articles/421297/ After investigating and discussing ram console use cases, it is clear that the proposal to use ram-oops and pstore will not be a complete solution to cover all the cases. Hence, the going forward plan is to pursue ram console inclusion in the mainline. ram console is going through re-write splitting it into twp drivers. Waiting for these changes to get into the 3.3 staging area. For now working with the unofficial patches.&lt;br /&gt;
|-&lt;br /&gt;
|ion graphics memory driver&lt;br /&gt;
|graphics memory drivers thingie&lt;br /&gt;
|not mainlined&lt;br /&gt;
|yes (for 4.0 and later?)&lt;br /&gt;
|Jesse Barker&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Progress Chart ==&lt;br /&gt;
This section is intended to show our progress, by showing the patch set size over time.  With any luck, as&lt;br /&gt;
we get features into mainline, the difference between the Android kernel and the legacy Linux kernel will shrink.&lt;br /&gt;
&lt;br /&gt;
* diff of 2.6.29 kernel.org tree versus kernel&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-bgcolor=&amp;quot;#80c0d0&amp;quot;&lt;br /&gt;
!Kernel Version&lt;br /&gt;
!Files changed&lt;br /&gt;
!insertions&lt;br /&gt;
!deletions&lt;br /&gt;
!hunks&lt;br /&gt;
!bytes in diff&lt;br /&gt;
|-&lt;br /&gt;
|2.6.29     ||    187 ||   123506 ||     0 ||     187 ||  3291827&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Android]]&lt;/div&gt;</summary>
		<author><name>TimBird</name></author>	</entry>

	<entry>
		<id>http://elinux.org/Android_Mainlining_Project</id>
		<title>Android Mainlining Project</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/Android_Mainlining_Project"/>
				<updated>2012-03-19T23:15:04Z</updated>
		
		<summary type="html">&lt;p&gt;TimBird: /* Patch/Feature Status Chart */ change mainline status with 3.3 kernel release&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page is for organizing the Android Mainlining Project.  It has information and resources associated with this&lt;br /&gt;
project.&lt;br /&gt;
&lt;br /&gt;
== Goal ==&lt;br /&gt;
The goal of this project is to ultimately mainline all patches required to run the current released&lt;br /&gt;
version of Android.  The purpose of mainlining these patches is 3-fold:&lt;br /&gt;
# to allow a developer to use the latest released version of the Linux kernel to run an Android system, without requiring patches to their kernel&lt;br /&gt;
# to make it possible to develop drivers and board support features against either an Android kernel release or a kernel.org kernel release, with little or no modifications or conditional code&lt;br /&gt;
# to reduce or eliminate the burden of maintaining independent patches from release to release for Android kernel developers&lt;br /&gt;
&lt;br /&gt;
To &amp;quot;mainline&amp;quot; a patch means to have it included in Linus Torvalds kernel.org kernel, in a released (non-rc) version.&lt;br /&gt;
&lt;br /&gt;
== Process ==&lt;br /&gt;
[This is a draft section, up for discussion]&lt;br /&gt;
&lt;br /&gt;
Overall:&lt;br /&gt;
* identify all patches/features, and categorize into core or non/core&lt;br /&gt;
** core = feature is required or strongly desired for Android operation on a platform&lt;br /&gt;
** non-core = Most of the Android system can run without the feature&lt;br /&gt;
&lt;br /&gt;
Per feature or patch:&lt;br /&gt;
* research any previous submission feedback&lt;br /&gt;
* incorporate feedback, as appropriate&lt;br /&gt;
* negotiate any interface changes with Google Android team&lt;br /&gt;
* submit updated patches to mainline&lt;br /&gt;
* repeat until accepted&lt;br /&gt;
&lt;br /&gt;
== Resources ==&lt;br /&gt;
* Mailing list: https://lists.linuxfoundation.org/mailman/listinfo/ce-android-mainline&lt;br /&gt;
* Linaro blueprint for project: https://blueprints.launchpad.net/linux-linaro/+spec/linaro-kernel-android-upstreaming&lt;br /&gt;
&lt;br /&gt;
== Meetings ==&lt;br /&gt;
* Meeting: [[Android mainlining interest group meeting 2012]]&lt;br /&gt;
** Summary: 9:30- 12:00 February 10, 2012 at the Sofitel Hotel in Redwood Shores, California.&lt;br /&gt;
&lt;br /&gt;
== People ==&lt;br /&gt;
People who have expressed interest in this project are:&lt;br /&gt;
&lt;br /&gt;
* Tim Bird&lt;br /&gt;
* John Stultz&lt;br /&gt;
* Paul McKenney&lt;br /&gt;
* Deepak Saxena&lt;br /&gt;
* Arnd Bergmann&lt;br /&gt;
* Thomas Gleixner&lt;br /&gt;
* Arjan Van de Ven&lt;br /&gt;
* Brian Swetland&lt;br /&gt;
* Tetsuyuki Kobayashi&lt;br /&gt;
* Andy Green&lt;br /&gt;
* Victor M. Jaquez&lt;br /&gt;
* Jesse Barker&lt;br /&gt;
* Anton Vorontsov&lt;br /&gt;
* Greg Kroah-Hartman&lt;br /&gt;
* Shuah Khan&lt;br /&gt;
&lt;br /&gt;
=== roles/expertise ===&lt;br /&gt;
This section has miscellaneous notes on roles, capabilities and expertise of group's members&lt;br /&gt;
&lt;br /&gt;
John Stultz is the owner of the Linaro blueprint for mainlining Android features.&lt;br /&gt;
Tim Bird is the owner of the CE Workgroup project for mainlining Android features.&lt;br /&gt;
Deepak and Jesse can help make arrangements for a meeting at Linaro Connect.&lt;br /&gt;
Tim can help make arrangements for a meeting at Android Builders Summit.&lt;br /&gt;
&lt;br /&gt;
* John Stultz has worked on POSIX Alarm timers&lt;br /&gt;
* Jesse is working on shared memory buffers related to pmem/CMA/parts of ion&lt;br /&gt;
* Anton Vorontsov is looking at the lowmemory killer&lt;br /&gt;
* Greg has put some Android patches into mainline (under drivers/staging/android) previously&lt;br /&gt;
** Greg put some Android patches in mainline under drivers/staging/android in Dec. 2011&lt;br /&gt;
* Paul McKenney - kicking around ideas for dealing with wakelocks single global lock (dec. 2011)&lt;br /&gt;
&lt;br /&gt;
== Plans ==&lt;br /&gt;
* Update this site with information on latest patch status - ongoing, by anyone&lt;br /&gt;
** [FIXTHIS - add sections needing a status or status update]&lt;br /&gt;
&lt;br /&gt;
== Patch/Feature Status Chart ==&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-bgcolor=&amp;quot;#80c0d0&amp;quot;&lt;br /&gt;
!Feature/Patch&lt;br /&gt;
!Description&lt;br /&gt;
!Status&lt;br /&gt;
!Part of core?&lt;br /&gt;
!Owner/Interested parties&lt;br /&gt;
|Notes&lt;br /&gt;
|-&lt;br /&gt;
|[[Android_logger|logger]]&lt;br /&gt;
|kernel support for Android system logging&lt;br /&gt;
|in drivers/staging/android, in kernel version 3.3 2012.03.19&lt;br /&gt;
|yes&lt;br /&gt;
|Tim Bird&lt;br /&gt;
|should be non-controversial (though I'm always surprised)&lt;br /&gt;
See [[Mainline Android logger project]] for a list of ideas, issues and a project plan for this feature&lt;br /&gt;
Also see [http://lkml.indiana.edu/hypermail/linux/kernel/1112.2/index.html#02419 this LKML discussion thread]&lt;br /&gt;
Some cleanup patches in linux-next, with more extensive changes to be written, tested, reviewed by Tim in Spring 2012.&lt;br /&gt;
|-&lt;br /&gt;
|wakelocks&lt;br /&gt;
|Power management locking mechanism to prevent opportunistic suspend&lt;br /&gt;
|not mainlined&lt;br /&gt;
|yes&lt;br /&gt;
|Rafael Wysocki&lt;br /&gt;
|Is important due to impact on board support and drivers by 3rd parties&lt;br /&gt;
|-&lt;br /&gt;
|Android alarm timers&lt;br /&gt;
|Timers that count down during suspended operation, and can wake from suspend&lt;br /&gt;
|Partial: Posix alarm timers were mainlined in kernel version 2.6.38 - see https://lwn.net/Articles/429925/  &lt;br /&gt;
|yes&lt;br /&gt;
|John Stultz&lt;br /&gt;
|Mending patches to convert Android Alarm Timers to utilize the upstreamed alarm timer work are still pending.&lt;br /&gt;
|-&lt;br /&gt;
|ashmem&lt;br /&gt;
|Shared memory implementation that allows unpinned pages to be marked, which can be dropped by the kernel under memory pressure&lt;br /&gt;
|in drivers/staging/android, in kernel version 3.3 2012.03.19&lt;br /&gt;
|yes&lt;br /&gt;
|John Stultz&lt;br /&gt;
|Working on fadvise volatile alternative implementation that handles part of the ashmem functionality. However, there are additional aspects of ashmem design that need to be addressed(no tmpfs mounts, atomic create/unlink behavior,etc).&lt;br /&gt;
|-&lt;br /&gt;
|network security&lt;br /&gt;
|special permission checks for secure access to network operations&lt;br /&gt;
|not mainlined&lt;br /&gt;
|? (can run without it, but network security won't be enforced)&lt;br /&gt;
|no one&lt;br /&gt;
|May be very difficult to mainline, as the code is extremely Android-specific with hardcoded GIDs and capabilities.&lt;br /&gt;
|-&lt;br /&gt;
|[[Android_Binder|binder]]&lt;br /&gt;
|Android inter-process communication mechanism&lt;br /&gt;
|in drivers/staging/android, in kernel version 3.3 2012.03.19&lt;br /&gt;
|yes&lt;br /&gt;
|no one&lt;br /&gt;
|Generated a fair amount of discussion on last submission. See http://elinux.org/Android_Binder#obstacles_to_mainlining&lt;br /&gt;
|-&lt;br /&gt;
|Android pmem driver&lt;br /&gt;
|manages large (1-16+MB) contiguous physical memory regions to be shared between userspace and kernel drivers (dsp, gpu etc.)&lt;br /&gt;
|Removed - no longer in use&lt;br /&gt;
|yes&lt;br /&gt;
|Shuah Khan&lt;br /&gt;
|Investigating existing alternatives. Can CMA (Contiguous Memory Allocator) fill the need? Based on recent lkml discussion, pmem.c is no longer used and will be removed from Android release. Reference: https://lkml.org/lkml/2012/1/23/183 -  Patch to remove pmem.c from 3.3-rc1 staging area has been accepted.&lt;br /&gt;
|-&lt;br /&gt;
|Android USB gadget driver&lt;br /&gt;
|Support for Android as gadget device from host&lt;br /&gt;
|unknown&lt;br /&gt;
|? (not sure if needed for basic bringup or not, but would be really painful if missing)&lt;br /&gt;
|no one?&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|timed gpio&lt;br /&gt;
|perform gpio operations as a result of specified timeouts - mainly used to support vibrate feature.&lt;br /&gt;
|in drivers/staging/android, in kernel version 3.3 2012.03.19&lt;br /&gt;
|no? (is this needed for basic bringup?)&lt;br /&gt;
|Shuah Khan&lt;br /&gt;
|Enhancing ledtrig-timer with activate_once timer - Shuah working on a patch&lt;br /&gt;
|-&lt;br /&gt;
|timed output&lt;br /&gt;
|seems to just be a class for timed gpio items&lt;br /&gt;
|in drivers/staging/android, in kernel version 3.3 2012.03.19&lt;br /&gt;
|no? (required by timed_gpio)&lt;br /&gt;
|Shuah Khan&lt;br /&gt;
|Enhancing ledtrig-timer with activate_once timer - Shuah working on a patch&lt;br /&gt;
|-&lt;br /&gt;
|low memory killer&lt;br /&gt;
|feature to manage application lifecycle in low memory conditions&lt;br /&gt;
|in drivers/staging/android, in kernel version 3.3 2012.03.19&lt;br /&gt;
|yes (but system might work without it)&lt;br /&gt;
|Anton Vorontsov&lt;br /&gt;
|See https://lkml.org/lkml/2011/12/18/173 for discussion about these patches&lt;br /&gt;
|-&lt;br /&gt;
|ram console&lt;br /&gt;
|ability to save console output to a reserved ram area for diagnostics on a subsequent boot&lt;br /&gt;
|in drivers/staging/android, in kernel version 3.3 2012.03.19&lt;br /&gt;
|no&lt;br /&gt;
|Shuah Khan&lt;br /&gt;
|No lkml submission attempt history found so far. pstore fs interface solves the same problem and is in mainline 3.1.5. fs/pstore  Reference - http://lwn.net/Articles/421297/ After investigating and discussing ram console use cases, it is clear that the proposal to use ram-oops and pstore will not be a complete solution to cover all the cases. Hence, the going forward plan is to pursue ram console inclusion in the mainline. ram console is going through re-write splitting it into twp drivers. Waiting for these changes to get into the 3.3 staging area. For now working with the unofficial patches.&lt;br /&gt;
|-&lt;br /&gt;
|ion graphics memory driver&lt;br /&gt;
|graphics memory drivers thingie&lt;br /&gt;
|not mainlined&lt;br /&gt;
|yes (for 4.0 and later?)&lt;br /&gt;
|Jesse Barker&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Progress Chart ==&lt;br /&gt;
This section is intended to show our progress, by showing the patch set size over time.  With any luck, as&lt;br /&gt;
we get features into mainline, the difference between the Android kernel and the legacy Linux kernel will shrink.&lt;br /&gt;
&lt;br /&gt;
* diff of 2.6.29 kernel.org tree versus kernel&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-bgcolor=&amp;quot;#80c0d0&amp;quot;&lt;br /&gt;
!Kernel Version&lt;br /&gt;
!Files changed&lt;br /&gt;
!insertions&lt;br /&gt;
!deletions&lt;br /&gt;
!hunks&lt;br /&gt;
!bytes in diff&lt;br /&gt;
|-&lt;br /&gt;
|2.6.29     ||    187 ||   123506 ||     0 ||     187 ||  3291827&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Android]]&lt;/div&gt;</summary>
		<author><name>TimBird</name></author>	</entry>

	<entry>
		<id>http://elinux.org/Compact_Flash</id>
		<title>Compact Flash</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/Compact_Flash"/>
				<updated>2008-11-17T18:00:18Z</updated>
		
		<summary type="html">&lt;p&gt;TimBird: just reference Wikipedia compact flash page.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;See http://en.wikipedia.org/wiki/CompactFlash&lt;br /&gt;
&lt;br /&gt;
[[Category:Hardware]]&lt;/div&gt;</summary>
		<author><name>TimBird</name></author>	</entry>

	<entry>
		<id>http://elinux.org/Technical_Conference_2006_Planning</id>
		<title>Technical Conference 2006 Planning</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/Technical_Conference_2006_Planning"/>
				<updated>2008-11-17T17:55:17Z</updated>
		
		<summary type="html">&lt;p&gt;TimBird: Remove spurious link to McKenny (from MoinMoin  conversion)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Ideas for speakers:&lt;br /&gt;
 - David Schleef - [[GStreamer]]&lt;br /&gt;
 - Greg Kroah Hartman - Participating in Open Source&lt;br /&gt;
 - Matt Mackall - Linux size??, Overview of Linux options&lt;br /&gt;
 - ??? - Systemtap, tracing, etc.&lt;br /&gt;
 - Pavel Machek or Patrick Mochel or Nigel Cunningham - Power Management&lt;br /&gt;
 - Paul McKenney or Ingo Molnar or Karim Yaghmour - Realtime&lt;br /&gt;
 - ??? - Security&lt;br /&gt;
&lt;br /&gt;
Ideas for Topics:&lt;br /&gt;
 - power management&lt;br /&gt;
 - realtime&lt;br /&gt;
 - security&lt;br /&gt;
 - size&lt;br /&gt;
 - bootup time&lt;br /&gt;
&lt;br /&gt;
See&lt;br /&gt;
* [[Embedded Linux Conference 2006]]&lt;br /&gt;
* [[ELC 2006 Call For Presentations]]&lt;br /&gt;
* [[Celf Pri Wiki]]:[[Tech Conference April 2006]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Events]]&lt;/div&gt;</summary>
		<author><name>TimBird</name></author>	</entry>

	<entry>
		<id>http://elinux.org/UTF8_Sampler</id>
		<title>UTF8 Sampler</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/UTF8_Sampler"/>
				<updated>2008-11-17T17:54:24Z</updated>
		
		<summary type="html">&lt;p&gt;TimBird: Remove spurious link to McGarry (from MoinMoin conversion)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;UTF-8 SAMPLER&lt;br /&gt;
  ¥ · £ · € · $ · ¢ · ₡ · ₢ · ₣ · ₤ · ₥ · ₦ · ₧ · ₨ · ₩ · ₪ · ₫ · ₭ · ₮ · ₯&lt;br /&gt;
&lt;br /&gt;
    Frank da Cruz&lt;br /&gt;
    The Kermit Project - Columbia University&lt;br /&gt;
    New York City&lt;br /&gt;
    fdc@columbia.edu&lt;br /&gt;
&lt;br /&gt;
    Last update: Sun Jun 12 20:24:10 2005 &lt;br /&gt;
&lt;br /&gt;
[ PEACE ] [ Poetry ] [ I Can Eat Glass ] [ The Quick Brown Fox ] [ HTML Features ] [ Credits, Tools, Commentary ]&lt;br /&gt;
&lt;br /&gt;
UTF-8 is an ASCII-preserving encoding method for Unicode (ISO 10646), the Universal Character Set (UCS). The UCS encodes most of the world's writing systems in a single character set, allowing you to mix languages and scripts within a document without needing any tricks for switching character sets. This web page is encoded directly in UTF-8.&lt;br /&gt;
&lt;br /&gt;
As shown HERE, Columbia University's Kermit 95 terminal emulation software can display UTF-8 plain text in Windows 95, 98, ME, NT, XP, or 2000 when using a monospace Unicode font like Andale Mono WT J or Everson Mono Terminal, or the lesser populated Courier New, Lucida Console, or Andale Mono. C-Kermit can handle it too, if you have a Unicode display. As many languages as are representable in your font can be seen on the screen at the same time.&lt;br /&gt;
&lt;br /&gt;
This, however, is a Web page. Some Web browsers can handle UTF-8, some can't. And those that can might not have a sufficiently populated font to work with (some browsers might pick glyphs dynamically from multiple fonts; Netscape 6 seems to do this). CLICK HERE for a survey of Unicode fonts for Windows.&lt;br /&gt;
&lt;br /&gt;
The subtitle above shows currency symbols of many lands. If they don't appear as blobs, we're off to a good start&lt;br /&gt;
Poetry&lt;br /&gt;
From the Anglo-Saxon Rune Poem (Rune version):&lt;br /&gt;
&lt;br /&gt;
    ᚠᛇᚻ᛫ᛒᛦᚦ᛫ᚠᚱᚩᚠᚢᚱ᛫ᚠᛁᚱᚪ᛫ᚷᛖᚻᚹᛦᛚᚳᚢᛗ&lt;br /&gt;
    ᛋᚳᛖᚪᛚ᛫ᚦᛖᚪᚻ᛫ᛗᚪᚾᚾᚪ᛫ᚷᛖᚻᚹᛦᛚᚳ᛫ᛗᛁᚳᛚᚢᚾ᛫ᚻᛦᛏ᛫ᛞᚫᛚᚪᚾ&lt;br /&gt;
    ᚷᛁᚠ᛫ᚻᛖ᛫ᚹᛁᛚᛖ᛫ᚠᚩᚱ᛫ᛞᚱᛁᚻᛏᚾᛖ᛫ᛞᚩᛗᛖᛋ᛫ᚻᛚᛇᛏᚪᚾ᛬&lt;br /&gt;
&lt;br /&gt;
From Laȝamon's Brut (The Chronicles of England, Middle English, West Midlands):&lt;br /&gt;
&lt;br /&gt;
    An preost wes on leoden, Laȝamon was ihoten&lt;br /&gt;
    He wes Leovenaðes sone -- liðe him be Drihten.&lt;br /&gt;
    He wonede at Ernleȝe at æðelen are chirechen,&lt;br /&gt;
    Uppen Sevarne staþe, sel þar him þuhte,&lt;br /&gt;
    Onfest Radestone, þer he bock radde. &lt;br /&gt;
&lt;br /&gt;
(The third letter in the author's name is Yogh, missing from many fonts; CLICK HERE for another Middle English sample with some explanation of letters and encoding).&lt;br /&gt;
&lt;br /&gt;
From the Tagelied of Wolfram von Eschenbach (Middle High German):&lt;br /&gt;
&lt;br /&gt;
    Sîne klâwen durh die wolken sint geslagen,&lt;br /&gt;
    er stîget ûf mit grôzer kraft,&lt;br /&gt;
    ich sih in grâwen tägelîch als er wil tagen,&lt;br /&gt;
    den tac, der im geselleschaft&lt;br /&gt;
    erwenden wil, dem werden man,&lt;br /&gt;
    den ich mit sorgen în verliez.&lt;br /&gt;
    ich bringe in hinnen, ob ich kan.&lt;br /&gt;
    sîn vil manegiu tugent michz leisten hiez.&lt;br /&gt;
&lt;br /&gt;
Some lines of Odysseus Elytis (Greek):&lt;br /&gt;
&lt;br /&gt;
    Τη γλώσσα μου έδωσαν ελληνική&lt;br /&gt;
    το σπίτι φτωχικό στις αμμουδιές του Ομήρου.&lt;br /&gt;
    Μονάχη έγνοια η γλώσσα μου στις αμμουδιές του Ομήρου.&lt;br /&gt;
&lt;br /&gt;
    από το Άξιον Εστί&lt;br /&gt;
    του Οδυσσέα Ελύτη &lt;br /&gt;
&lt;br /&gt;
The first stanza of Pushkin's Bronze Horseman (Russian):&lt;br /&gt;
&lt;br /&gt;
    На берегу пустынных волн&lt;br /&gt;
    Стоял он, дум великих полн,&lt;br /&gt;
    И вдаль глядел. Пред ним широко&lt;br /&gt;
    Река неслася; бедный чёлн&lt;br /&gt;
    По ней стремился одиноко.&lt;br /&gt;
    По мшистым, топким берегам&lt;br /&gt;
    Чернели избы здесь и там,&lt;br /&gt;
    Приют убогого чухонца;&lt;br /&gt;
    И лес, неведомый лучам&lt;br /&gt;
    В тумане спрятанного солнца,&lt;br /&gt;
    Кругом шумел.&lt;br /&gt;
&lt;br /&gt;
Šota Rustaveli's Veṗxis Ṭq̇aosani, ̣︡Th, The Knight in the Tiger's Skin (Georgian):&lt;br /&gt;
&lt;br /&gt;
    ვეპხის ტყაოსანი შოთა რუსთაველი&lt;br /&gt;
&lt;br /&gt;
    ღმერთსი შემვედრე, ნუთუ კვლა დამხსნას სოფლისა შრომასა, ცეცხლს, წყალსა და მიწასა, ჰაერთა თანა მრომასა; მომცნეს ფრთენი და აღვფრინდე, მივჰხვდე მას ჩემსა ნდომასა, დღისით და ღამით ვჰხედვიდე მზისა ელვათა კრთომაასა. &lt;br /&gt;
&lt;br /&gt;
Tamil poetry of Cupiramaniya Paarathiyar, சுப்ரமணிய பாரதியார் (1882-1921):&lt;br /&gt;
&lt;br /&gt;
    யாமறிந்த மொழிகளிலே தமிழ்மொழி போல் இனிதாவது எங்கும் காணோம்,&lt;br /&gt;
    பாமரராய் விலங்குகளாய், உலகனைத்தும் இகழ்ச்சிசொலப் பான்மை கெட்டு,&lt;br /&gt;
    நாமமது தமிழரெனக் கொண்டு இங்கு வாழ்ந்திடுதல் நன்றோ? சொல்லீர்&lt;br /&gt;
&lt;br /&gt;
I Can Eat Glass&lt;br /&gt;
And from the sublime to the ridiculous, here is a certain phrase¹ in an assortment of languages:&lt;br /&gt;
&lt;br /&gt;
   1. Sanskrit: काचं शक्नोम्यत्तुम् । नोपहिनस्ति माम् ॥ &lt;br /&gt;
   2. Sanskrit (standard transcription): kācaṃ śaknomyattum; nopahinasti mām. &lt;br /&gt;
   3. Classical Greek: ὕαλον ϕαγεῖν δύναμαι· τοῦτο οὔ με βλάπτει. &lt;br /&gt;
   4. Greek: Μπορώ να φάω σπασμένα γυαλιά χωρίς να πάθω τίποτα.&lt;br /&gt;
      Etruscan: (NEEDED)&lt;br /&gt;
   5. Latin: Vitrum edere possum; mihi non nocet.&lt;br /&gt;
   6. Old French: Je puis mangier del voirre. Ne me nuit.&lt;br /&gt;
   7. French: Je peux manger du verre, ça ne me fait pas de mal.&lt;br /&gt;
   8. Provençal / Occitan: Pòdi manjar de veire, me nafrariá pas.&lt;br /&gt;
   9. Québécois: J'peux manger d'la vitre, ça m'fa pas mal.&lt;br /&gt;
  10. Walloon: Dji pou magnî do vêre, çoula m' freut nén må.&lt;br /&gt;
      Champenois: (NEEDED)&lt;br /&gt;
      Lorrain: (NEEDED)&lt;br /&gt;
  11. Picard: Ch'peux mingi du verre, cha m'foé mie n'ma.&lt;br /&gt;
      Corsican: (NEEDED)&lt;br /&gt;
  12. Kreyòl Ayisyen: Mwen kap manje vè, li pa blese'm.&lt;br /&gt;
  13. Basque: Kristala jan dezaket, ez dit minik ematen.&lt;br /&gt;
  14. Catalan: Puc menjar vidre que no em fa mal.&lt;br /&gt;
  15. Spanish: Puedo comer vidrio, no me hace daño.&lt;br /&gt;
  16. Aragones: Puedo minchar beire, no me'n fa mal .&lt;br /&gt;
  17. Galician: Eu podo xantar cristais e non cortarme.&lt;br /&gt;
  18. Portuguese: Posso comer vidro, não me faz mal.&lt;br /&gt;
  19. Brazilian Portuguese (7): Posso comer vidro, não me machuca.&lt;br /&gt;
  20. Caboverdiano: M' podê cumê vidru, ca ta maguâ-m'.&lt;br /&gt;
  21. Papiamentu: Ami por kome glas anto e no ta hasimi daño.&lt;br /&gt;
  22. Italian: Posso mangiare il vetro e non mi fa male.&lt;br /&gt;
  23. Milanese: Sôn bôn de magnà el véder, el me fa minga mal.&lt;br /&gt;
  24. Roman: Me posso magna' er vetro, e nun me fa male.&lt;br /&gt;
  25. Napoletano: M' pozz magna' o'vetr, e nun m' fa mal.&lt;br /&gt;
  26. Sicilian: Puotsu mangiari u vitru, nun mi fa mali.&lt;br /&gt;
  27. Venetian: Mi posso magnare el vetro, no'l me fa mae.&lt;br /&gt;
  28. Zeneise (Genovese): Pòsso mangiâ o veddro e o no me fà mâ.&lt;br /&gt;
      Rheto-Romance / Romansch: (NEEDED)&lt;br /&gt;
      Romany / Tsigane: (NEEDED)&lt;br /&gt;
  29. Romanian: Pot să mănânc sticlă și ea nu mă rănește.&lt;br /&gt;
  30. Esperanto: Mi povas manĝi vitron, ĝi ne damaĝas min.&lt;br /&gt;
      Pictish: (NEEDED)&lt;br /&gt;
      Breton: (NEEDED)&lt;br /&gt;
  31. Cornish: Mý a yl dybry gwéder hag éf ny wra ow ankenya.&lt;br /&gt;
  32. Welsh: Dw i'n gallu bwyta gwydr, 'dyw e ddim yn gwneud dolur i mi.&lt;br /&gt;
  33. Manx Gaelic: Foddym gee glonney agh cha jean eh gortaghey mee.&lt;br /&gt;
  34. Old Irish (Ogham): ᚛᚛ᚉᚑᚅᚔᚉᚉᚔᚋ ᚔᚈᚔ ᚍᚂᚐᚅᚑ ᚅᚔᚋᚌᚓᚅᚐ᚜&lt;br /&gt;
  35. Old Irish (Latin): Con·iccim ithi nglano. Ním·géna.&lt;br /&gt;
  36. Irish: Is féidir liom gloinne a ithe. Ní dhéanann sí dochar ar bith dom.&lt;br /&gt;
  37. Scottish Gaelic: S urrainn dhomh gloinne ithe; cha ghoirtich i mi.&lt;br /&gt;
  38. Anglo-Saxon (Runes): ᛁᚳ᛫ᛗᚨᚷ᛫ᚷᛚᚨᛋ᛫ᛖᚩᛏᚪᚾ᛫ᚩᚾᛞ᛫ᚻᛁᛏ᛫ᚾᛖ᛫ᚻᛖᚪᚱᛗᛁᚪᚧ᛫ᛗᛖ᛬&lt;br /&gt;
  39. Anglo-Saxon (Latin): Ic mæg glæs eotan ond hit ne hearmiað me.&lt;br /&gt;
  40. Middle English: Ich canne glas eten and hit hirtiþ me nouȝt.&lt;br /&gt;
  41. English: I can eat glass and it doesn't hurt me.&lt;br /&gt;
  42. English (IPA): [aɪ kæn iːt glɑːs ænd ɪt dɐz nɒt hɜːt miː] (Received Pronunciation)&lt;br /&gt;
  43. English (Braille): ⠊⠀⠉⠁⠝⠀⠑⠁⠞⠀⠛⠇⠁⠎⠎⠀⠁⠝⠙⠀⠊⠞⠀⠙⠕⠑⠎⠝⠞⠀⠓⠥⠗⠞⠀⠍⠑&lt;br /&gt;
  44. Lalland Scots / Doric: Ah can eat gless, it disnae hurt us.&lt;br /&gt;
      Glaswegian: (NEEDED)&lt;br /&gt;
  45. Gothic (4): ̼̰̲ ̴̲̻̓ ̹̰̈̈́̽, ̹̽ ̼̹̓ ̿ͅ ̳̰̽̽ ̸̱̹̲̲̹͂.&lt;br /&gt;
  46. Old Norse (Runes): ᛖᚴ ᚷᛖᛏ ᛖᛏᛁ ᚧ ᚷᛚᛖᚱ ᛘᚾ ᚦᛖᛋᛋ ᚨᚧ ᚡᛖ ᚱᚧᚨ ᛋᚨᚱ&lt;br /&gt;
  47. Old Norse (Latin): Ek get etið gler án þess að verða sár.&lt;br /&gt;
  48. Norsk / Norwegian (Nynorsk): Eg kan eta glas utan å skada meg.&lt;br /&gt;
  49. Norsk / Norwegian (Bokmål): Jeg kan spise glass uten å skade meg.&lt;br /&gt;
      Føroyskt / Faroese: (NEEDED)&lt;br /&gt;
  50. Íslenska / Icelandic: Ég get etið gler án þess að meiða mig.&lt;br /&gt;
  51. Svenska / Swedish: Jag kan äta glas utan att skada mig.&lt;br /&gt;
  52. Dansk / Danish: Jeg kan spise glas, det gør ikke ondt på mig.&lt;br /&gt;
  53. Soenderjysk: Æ ka æe glass uhen at det go mæ naue.&lt;br /&gt;
  54. Frysk / Frisian: Ik kin glês ite, it docht me net sear.&lt;br /&gt;
  55. Nederlands / Dutch: Ik kan glas eten, het doet mĳ geen kwaad.&lt;br /&gt;
  56. Kirchröadsj/Bôchesserplat: Iech ken glaas èèse, mer 't deet miech jing pieng.&lt;br /&gt;
  57. Afrikaans: Ek kan glas eet, maar dit doen my nie skade nie.&lt;br /&gt;
  58. Lëtzebuergescht / Luxemburgish: Ech kan Glas iessen, daat deet mir nët wei.&lt;br /&gt;
  59. Deutsch / German: Ich kann Glas essen, ohne mir weh zu tun.&lt;br /&gt;
  60. Ruhrdeutsch: Ich kann Glas verkasematuckeln, ohne dattet mich wat jucken tut.&lt;br /&gt;
  61. Lausitzer Mundart (&amp;quot;Lusatian&amp;quot;): Ich koann Gloos assn und doas dudd merr ni wii.&lt;br /&gt;
  62. Odenwälderisch: Iech konn glaasch voschbachteln ohne dass es mir ebbs daun doun dud.&lt;br /&gt;
  63. Sächsisch / Saxon: 'sch kann Glos essn, ohne dass'sch mer wehtue.&lt;br /&gt;
  64. Pfälzisch: Isch konn Glass fresse ohne dasses mer ebbes ausmache dud.&lt;br /&gt;
  65. Schwäbisch / Swabian: I kå Glas frässa, ond des macht mr nix&lt;br /&gt;
  66. Bayrisch / Bavarian: I koh Glos esa, und es duard ma ned wei.&lt;br /&gt;
  67. Allemannisch: I kaun Gloos essen, es tuat ma ned weh.&lt;br /&gt;
  68. Schwyzerdütsch: Ich chan Glaas ässe, das tuet mir nöd weeh.&lt;br /&gt;
  69. Hungarian: Meg tudom enni az üveget, nem lesz tőle bajom.&lt;br /&gt;
  70. Suomi / Finnish: Voin syödä lasia, se ei vahingoita minua.&lt;br /&gt;
  71. Sami (Northern): Sáhtán borrat lása, dat ii leat bávččas.&lt;br /&gt;
  72. Erzian: Мон ярсан суликадо, ды зыян эйстэнзэ а ули.&lt;br /&gt;
      Karelian: (NEEDED)&lt;br /&gt;
      Vepsian: (NEEDED)&lt;br /&gt;
      Votian: (NEEDED)&lt;br /&gt;
      Livonian: (NEEDED)&lt;br /&gt;
  73. Estonian: Ma võin klaasi süüa, see ei tee mulle midagi.&lt;br /&gt;
  74. Latvian: Es varu ēst stiklu, tas man nekaitē.&lt;br /&gt;
  75. Lithuanian: Aš galiu valgyti stiklą ir jis manęs nežeidžia&lt;br /&gt;
      Old Prussian: (NEEDED)&lt;br /&gt;
      Sorbian (Wendish): (NEEDED)&lt;br /&gt;
  76. Czech: Mohu jíst sklo, neublíží mi.&lt;br /&gt;
  77. Slovak: Môžem jesť sklo. Nezraní ma.&lt;br /&gt;
  78. Polska / Polish: Mogę jeść szkło i mi nie szkodzi.&lt;br /&gt;
  79. Slovenian: Lahko jem steklo, ne da bi mi škodovalo.&lt;br /&gt;
  80. Croatian: Ja mogu jesti staklo i ne boli me.&lt;br /&gt;
  81. Serbian (Latin): Mogu jesti staklo a da mi ne škodi.&lt;br /&gt;
  82. Serbian (Cyrillic): Могу јести стакло а да ми не шкоди.&lt;br /&gt;
  83. Macedonian: Можам да јадам стакло, а не ме штета.&lt;br /&gt;
  84. Russian: Я могу есть стекло, оно мне не вредит.&lt;br /&gt;
  85. Belarusian (Cyrillic): Я магу есці шкло, яно мне не шкодзіць.&lt;br /&gt;
  86. Belarusian (Lacinka): Ja mahu jeści škło, jano mne ne škodzić.&lt;br /&gt;
  87. Ukrainian: Я можу їсти шкло, й воно мені не пошкодить.&lt;br /&gt;
  88. Bulgarian: Мога да ям стъкло, то не ми вреди.&lt;br /&gt;
  89. Georgian: მინას ვჭამ და არა მტკივა.&lt;br /&gt;
  90. Armenian: Կրնամ ապակի ուտել և ինծի անհանգիստ չըներ։&lt;br /&gt;
  91. Albanian: Unë mund të ha qelq dhe nuk më gjen gjë.&lt;br /&gt;
  92. Turkish: Cam yiyebilirim, bana zararı dokunmaz.&lt;br /&gt;
  93. Turkish (Ottoman): جام ييه بلورم بڭا ضررى طوقونمز&lt;br /&gt;
   94. Bangla / Bengali: আমি কাঁচ খেতে পারি, তাতে আমার কোনো ক্ষতি হয় না।&lt;br /&gt;
  95. Marathi: मी काच खाऊ शकतो, मला ते दुखत नाही.&lt;br /&gt;
  96. Hindi: मैं काँच खा सकता हूँ, मुझे उस से कोई पीडा नहीं होती.&lt;br /&gt;
  97. Tamil: நான் கண்ணாடி சாப்பிடுவேன், அதனால் எனக்கு ஒரு கேடும் வராது.&lt;br /&gt;
  98. Urdu(2): میں کانچ کھا سکتا ہوں اور مجھے تکلیف نہیں ہوتی ۔&lt;br /&gt;
  99. Pashto(2): زه شيشه خوړلې شم، هغه ما نه خوږوي&lt;br /&gt;
 100. Farsi / Persian: .من می توانم بدونِ احساس درد شيشه بخورم&lt;br /&gt;
 101. Arabic(2): أنا قادر على أكل الزجاج و هذا لا يؤلمني.&lt;br /&gt;
      Aramaic: (NEEDED)&lt;br /&gt;
 102. Hebrew(2): אני יכול לאכול זכוכית וזה לא מזיק לי.&lt;br /&gt;
 103. Yiddish(2): איך קען עסן גלאָז און עס טוט מיר נישט װײ.&lt;br /&gt;
      Judeo-Arabic: (NEEDED)&lt;br /&gt;
      Ladino: (NEEDED)&lt;br /&gt;
      Gǝʼǝz: (NEEDED)&lt;br /&gt;
      Amharic: (NEEDED)&lt;br /&gt;
 104. Twi: Metumi awe tumpan, ɜnyɜ me hwee.&lt;br /&gt;
 105. Hausa (Latin): Inā iya taunar gilāshi kuma in gamā lāfiyā.&lt;br /&gt;
 106. Hausa (Ajami) (2): إِنا إِىَ تَونَر غِلَاشِ كُمَ إِن غَمَا لَافِىَا&lt;br /&gt;
 107. Yoruba(3): Mo lè je̩ dígí, kò ní pa mí lára.&lt;br /&gt;
 108. (Ki)Swahili: Naweza kula bilauri na sikunyui.&lt;br /&gt;
 109. Malay: Saya boleh makan kaca dan ia tidak mencederakan saya.&lt;br /&gt;
 110. Tagalog: Kaya kong kumain nang bubog at hindi ako masaktan.&lt;br /&gt;
 111. Chamorro: Siña yo' chumocho krestat, ti ha na'lalamen yo'.&lt;br /&gt;
 112. Javanese: Aku isa mangan beling tanpa lara.&lt;br /&gt;
      Burmese: (NEEDED)&lt;br /&gt;
 113. Vietnamese (quốc ngữ): Tôi có thể ăn thủy tinh mà không hại gì.&lt;br /&gt;
 114. Vietnamese (nôm) (4): 些 ㎏ 世 咹 水 晶 擡 空 ㎏ 害 咦&lt;br /&gt;
      Khmer: (NEEDED)&lt;br /&gt;
      Lao: (NEEDED)&lt;br /&gt;
 115. Thai: ฉันกินกระจกได้ แต่มันไม่ทำให้ฉันเจ็บ&lt;br /&gt;
 116. Mongolian (Cyrillic): Би шил идэй чадна, надад хортой биш&lt;br /&gt;
 117. Mongolian (Classic) (5): ᠪᠢ ᠰᠢᠯᠢ ᠢᠳᠡᠶᠦ ᠴᠢᠳᠠᠨᠠ ᠂ ᠨᠠᠳᠤᠷ ᠬᠣᠤᠷᠠᠳᠠᠢ ᠪᠢᠰᠢ&lt;br /&gt;
      Dzongkha: (NEEDED)&lt;br /&gt;
      Nepali: (NEEDED)&lt;br /&gt;
 118. Tibetan: ཤེལ་སྒོ་ཟ་ནས་ང་ན་གི་མ་རེད།&lt;br /&gt;
 119. Chinese: 我能吞下玻璃而不伤身体。&lt;br /&gt;
 120. Chinese (Traditional): 我能吞下玻璃而不傷身體。&lt;br /&gt;
 121. Taiwanese(6): Góa ē-tàng chia̍h po-lê, mā bē tio̍h-siong.&lt;br /&gt;
 122. Japanese: 私はガラスを食べられます。それは私を傷つけません。&lt;br /&gt;
 123. Korean: 나는 유리를 먹을 수 있어요. 그래도 아프지 않아요&lt;br /&gt;
 124. Bislama: Mi save kakae glas, hemi no save katem mi.&lt;br /&gt;
 125. Hawaiian: Hiki iaʻu ke ʻai i ke aniani; ʻaʻole nō lā au e ʻeha.&lt;br /&gt;
 126. Marquesan: E koʻana e kai i te karahi, mea ʻā, ʻaʻe hauhau.&lt;br /&gt;
 127. Chinook Jargon: Naika məkmək kakshət labutay, pi weyk ukuk munk-sik nay.&lt;br /&gt;
 128. Navajo: Tsésǫʼ yishą́ągo bííníshghah dóó doo shił neezgai da.&lt;br /&gt;
      Cherokee (and Cree, Ojibwa, Inuktitut, and other Native American languages): (NEEDED)&lt;br /&gt;
      Garifuna: (NEEDED)&lt;br /&gt;
      Gullah: (NEEDED)&lt;br /&gt;
 129. Lojban: mi kakne le nu citka le blaci .iku'i le se go'i na xrani mi&lt;br /&gt;
 130. Nórdicg: Ljœr ye caudran créneþ ý jor cẃran. &lt;br /&gt;
&lt;br /&gt;
(Additions, corrections, completions, gratefully accepted.)&lt;br /&gt;
&lt;br /&gt;
For testing purposes, some of these are repeated in a monospace font . . .&lt;br /&gt;
&lt;br /&gt;
 1. Euro Symbol: €. &lt;br /&gt;
 2. Greek: Μπορώ να φάω σπασμένα γυαλιά χωρίς να πάθω τίποτα. &lt;br /&gt;
 3. Íslenska / Icelandic: Ég get etið gler án þess að meiða mig. &lt;br /&gt;
 4. Polish: Mogę jeść szkło, i mi nie szkodzi. &lt;br /&gt;
 5. Romanian: Pot să mănânc sticlă și ea nu mă rănește. &lt;br /&gt;
 6. Ukrainian: Я можу їсти шкло, й воно мені не пошкодить. &lt;br /&gt;
 7. Armenian: Կրնամ ապակի ուտել և ինծի անհանգիստ չըներ։ &lt;br /&gt;
 8. Georgian: მინას ვჭამ და არა მტკივა. &lt;br /&gt;
 9. Hindi: मैं काँच खा सकता हूँ, मुझे उस से कोई पीडा नहीं होती.&lt;br /&gt;
 10. Hebrew(2): אני יכול לאכול זכוכית וזה לא מזיק לי.&lt;br /&gt;
     11. Yiddish(2): איך קען עסן גלאָז און עס טוט מיר נישט װײ.&lt;br /&gt;
   12. Arabic(2): أنا قادر على أكل الزجاج و هذا لا يؤلمني.&lt;br /&gt;
   13. Japanese: 私はガラスを食べられます。それは私を傷つけません。&lt;br /&gt;
 14. Thai: ฉันกินกระจกได้ แต่มันไม่ทำให้ฉันเจ็บ &lt;br /&gt;
&lt;br /&gt;
Notes:&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;I can eat glass&amp;quot; phrase and initial translations (about 30 of them) were borrowed from Ethan Mollick's I Can Eat Glass page (which disappeared on or about June 2004) and converted to UTF-8. Since Ethan's original page is gone, I should mention that his purpose was offer travelers a phrase they could use in any country that would command a certain kind of respect, or at least get attention. See Credits for the many additional contributions since then. When submitting new entries, the word &amp;quot;hurt&amp;quot; (if you have a choice) is used in the sense of &amp;quot;cause harm&amp;quot;, &amp;quot;do damage&amp;quot;, or &amp;quot;bother&amp;quot;, rather than &amp;quot;inflict pain&amp;quot; or &amp;quot;make sad&amp;quot;. In this vein Otto Stolz comments (as do others further down; personally I think it's better for the purpose of this page to have extra entries and/or to show a greater repertoire of characters than it is to enforce a strict interpretation of the word &amp;quot;hurt&amp;quot;):&lt;br /&gt;
&lt;br /&gt;
          This is the meaning I have translated to the Swabian dialect. However, I just have noticed that most of the German variants translate the &amp;quot;inflict pain&amp;quot; meaning. The German example should rather read:&lt;br /&gt;
&lt;br /&gt;
              &amp;quot;Ich kann Glas essen ohne mir zu schaden.&amp;quot; &lt;br /&gt;
&lt;br /&gt;
          (The comma fell victim to the 1996 orthographic reform, cf. http://www.ids-mannheim.de/reform/e3-1.html#P76.&lt;br /&gt;
&lt;br /&gt;
          You may wish to contact the contributors of the following translations to correct them:&lt;br /&gt;
&lt;br /&gt;
* Lëtzebuergescht / Luxemburgish: Ech kan Glas iessen, daat deet mir nët wei.&lt;br /&gt;
* Lausitzer Mundart (&amp;quot;Lusatian&amp;quot;): Ich koann Gloos assn und doas dudd merr ni wii.&lt;br /&gt;
* Sächsisch / Saxon: 'sch kann Glos essn, ohne dass'sch mer wehtue.&lt;br /&gt;
* Bayrisch / Bavarian: I koh Glos esa, und es duard ma ned wei.&lt;br /&gt;
* Allemannisch: I kaun Gloos essen, es tuat ma ned weh.&lt;br /&gt;
* Schwyzerdütsch: Ich chan Glaas ässe, das tuet mir nöd weeh.&lt;br /&gt;
&lt;br /&gt;
In contrast, I deem the following translations *alright*:&lt;br /&gt;
&lt;br /&gt;
* Ruhrdeutsch: Ich kann Glas verkasematuckeln, ohne dattet mich wat jucken tut.&lt;br /&gt;
* Pfälzisch: Isch konn Glass fresse ohne dasses mer ebbes ausmache dud.&lt;br /&gt;
* Schwäbisch / Swabian: I kå Glas frässa, ond des macht mr nix&lt;br /&gt;
&lt;br /&gt;
(However, you could remove the commas, on account of http://www.ids-mannheim.de/reform/e3-1.html#P76 and http://www.ids-mannheim.de/reform/e3-1.html#P72, respectively.)&lt;br /&gt;
&lt;br /&gt;
I guess, also these examples translate the wrong sense of &amp;quot;hurt&amp;quot;, though I do not know these languages well enough to assert them definitely:&lt;br /&gt;
&lt;br /&gt;
* Nederlands / Dutch: Ik kan glas eten; het doet mĳ geen pĳn. (This one has been changed)&lt;br /&gt;
* Kirchröadsj/Bôchesserplat: Iech ken glaas èèse, mer 't deet miech jing pieng.&lt;br /&gt;
&lt;br /&gt;
In the Romanic languages, the variations on &amp;quot;fa male&amp;quot; (it) are probably wrong, whilst the variations on &amp;quot;hace daño&amp;quot; (es) and &amp;quot;damaĝas&amp;quot; (Esperanto) are probably correct; &amp;quot;nocet&amp;quot; (la) is definitely right.&lt;br /&gt;
&lt;br /&gt;
The northern Germanic variants of &amp;quot;skada&amp;quot; are probably right, as are the Slavic variants of &amp;quot;škodi/шкоди&amp;quot; (se); however the Slavic variants of &amp;quot; boli&amp;quot; (hv) are probably wrong, as &amp;quot;bolena&amp;quot; means &amp;quot;pain/ache&amp;quot;, IIRC. &lt;br /&gt;
&lt;br /&gt;
# The numbering of the samples is arbitrary, done only to keep track of how many there are, and can change any time a new entry is added. The arrangement is also arbitrary but with some attempt to group related examples together. Note: All languages not listed are wanted, not just the ones that say (NEEDED).&lt;br /&gt;
# Correct right-to-left display of these languages depends on the capabilities of your browser. The period should appear on the left. In the monospace Yiddish example, the Yiddish digraphs should occupy one character cell.&lt;br /&gt;
# Yoruba: The third word is Latin letter small 'j' followed by small 'e' with U+0329, Combining Vertical Line Below. This displays correctly only if your Unicode font includes the U+0329 glyph and your browser supports combining diacritical marks. The Indic examples also include combining sequences.&lt;br /&gt;
# Includes Unicode 3.1 (or later) characters beyond Plane 0.&lt;br /&gt;
#  The Classic Mongolian example should be vertical, top-to-bottom and left-to-right. But such display is almost impossible. Also no font yet exists which provides the proper ligatures and positional variants for the characters of this script, which works somewhat like Arabic.&lt;br /&gt;
#  Taiwanese is also known as Holo or Hoklo, and is related to Southern Min dialects such as Amoy. Contributed by Henry H. Tan-Tenn, who comments, &amp;quot;The above is the romanized version, in a script current among Taiwanese Christians since the mid-19th century. It was invented by British missionaries and saw use in hundreds of published works, mostly of a religious nature. Most Taiwanese did not know Chinese characters then, or at least not well enough to read. More to the point, though, a written standard using Chinese characters has never developed, so a significant minority of words are represented with different candidate characters, depending on one's personal preference or etymological theory. In this sentence, for example, &amp;quot;-tàng&amp;quot;, &amp;quot;chia̍h&amp;quot;, &amp;quot;mā&amp;quot; and &amp;quot;bē&amp;quot; are problematic using Chinese characters. &amp;quot;Góa&amp;quot; (I/me) and &amp;quot;po-lê&amp;quot; (glass) are as written in other Sinitic languages (e.g. Mandarin, Hakka).&amp;quot;&lt;br /&gt;
# Wagner Amaral of Pinese &amp;amp; Amaral Associados notes that the Brazilian Portuguese sentence for &amp;quot;I can eat glass&amp;quot; should be identical to the Portuguese one, as the word &amp;quot;machuca&amp;quot; means &amp;quot;inflict pain&amp;quot;, or rather &amp;quot;injuries&amp;quot;. The words &amp;quot;faz mal&amp;quot; would more correctly translate as &amp;quot;cause harm&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
The Quick Brown Fox&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;I can eat glass&amp;quot; sentences do not necessarily show off the orthography of each language to best advantage. In many alphabetic written languages it is possible to include all (or most) letters (or &amp;quot;special&amp;quot; characters) in a single (often nonsense) pangram. These were traditionally used in typewriter instruction; now they are useful for stress-testing computer fonts and keyboard input methods. Here are a few examples (SEND MORE):&lt;br /&gt;
&lt;br /&gt;
  1.  English: The quick brown fox jumps over the lazy dog. &lt;br /&gt;
  2. Irish: &amp;quot;An ḃfuil do ċroí ag bualaḋ ó ḟaitíos an ġrá a ṁeall lena ṗóg éada ó ṡlí do leasa ṫú?&amp;quot; &amp;quot;D'ḟuascail Íosa Úrṁac na hÓiġe Beannaiṫe pór Éava agus Áḋaiṁ.&amp;quot; &lt;br /&gt;
  3. Dutch: Pa's wĳze lynx bezag vroom het fikse aquaduct. &lt;br /&gt;
  4. German: Falsches Üben von Xylophonmusik quält jeden größeren Zwerg. (1) &lt;br /&gt;
  5. German: Im finſteren Jagdſchloß am offenen Felsquellwaſſer patzte der affig-flatterhafte kauzig-höf‌liche Bäcker über ſeinem verſifften kniffligen C-Xylophon. (2) &lt;br /&gt;
  6. Swedish: Flygande bäckasiner söka strax hwila på mjuka tuvor. &lt;br /&gt;
  7. Czech: Příliš žluťoučký kůň úpěl ďábelské kódy. &lt;br /&gt;
  8. Slovak: Starý kôň na hŕbe kníh žuje tíško povädnuté ruže, na stĺpe sa ďateľ učí kvákať novú ódu o živote. &lt;br /&gt;
  9. Russian: В чащах юга жил-был цитрус? Да, но фальшивый экземпляр ёъ.&lt;br /&gt;
  10. Bulgarian: Жълтата дюля беше щастлива, че пухът, който цъфна, замръзна като гьон.&lt;br /&gt;
  11. Sami (Northern): Vuol Ruoŧa geđggiid leat máŋga luosa ja čuovžža.&lt;br /&gt;
  12. Hungarian: Árvíztűrő tükörfúrógép.&lt;br /&gt;
  13. Spanish: El pingüino Wenceslao hizo kilómetros bajo exhaustiva lluvia y frío, añoraba a su querido cachorro.&lt;br /&gt;
  14. Portuguese: O próximo vôo à noite sobre o Atlântico, põe freqüentemente o único médico. (3)&lt;br /&gt;
  15. French: Les naïfs ægithales hâtifs pondant à Noël où il gèle sont sûrs d'être déçus et de voir leurs drôles d'œufs abîmés.&lt;br /&gt;
  16. Esperanto: Eĥoŝanĝo ĉiuĵaŭde.&lt;br /&gt;
  17. Hebrew: זה כיף סתם לשמוע איך תנצח קרפד עץ טוב בגן.&lt;br /&gt;
   18. Japanese (Hiragana):&lt;br /&gt;
&lt;br /&gt;
          いろはにほへど　ちりぬるを&lt;br /&gt;
          わがよたれぞ　つねならむ&lt;br /&gt;
          うゐのおくやま　けふこえて&lt;br /&gt;
          あさきゆめみじ　ゑひもせず (4) &lt;br /&gt;
&lt;br /&gt;
Notes:&lt;br /&gt;
&lt;br /&gt;
# Other phrases commonly used in Germany include: &amp;quot;Ein wackerer Bayer vertilgt ja bequem zwo Pfund Kalbshaxe&amp;quot; and, more recently, &amp;quot;Franz jagt im komplett verwahrlosten Taxi quer durch Bayern&amp;quot;, but both lack umlauts and esszet. Previously, going for the shortest sentence that has all the umlauts and special characters, I had &amp;quot;Grüße aus Bärenhöfe (und Óechtringen)&amp;quot; Acute accents are not used in native German words, so I was surprised to discover &amp;quot;Óechtringen&amp;quot; in the Deutsche Bundespost Postleitzahlenbuch (Vorsicht 2.8MB JPG image). It's a small village in eastern Lower Saxony. The &amp;quot;oe&amp;quot; in this case turns out to be the Lower Saxon &amp;quot;lengthening e&amp;quot; (Dehnungs-e), which makes the previous vowel long (used in a number of Lower Saxon place names such as Soest and Itzehoe), not the &amp;quot;e&amp;quot; that indicates umlaut of the preceding vowel. Many thanks to the Óechtringen-Namenschreibungsuntersuchungskomitee (Alex Bochannek, Manfred Erren, Asmus Freytag, Christoph Päper, plus Werner Lemberg who serves as the Óechtringen-Namenschreibungsuntersuchungskomiteerechtschreibungsprüfer) for their relentless pursuit of the facts in this case. Conclusion: the accent almost certainly does not belong on this (or any other native German) word, but neither can it be dismissed as dirt on the page. To add to the mystery, it has been reported that other copies of the same edition of the PLZB do not show the accent&lt;br /&gt;
# From Karl Pentzlin (Kochel am See, Bavaria, Germany): &amp;quot;This German phrase is suited for display by a Fraktur (broken letter) font. It contains: all common three-letter ligatures: ffi ffl fft and all two-letter ligatures required by the Duden for Fraktur typesetting: ch ck ff fi fl ft ll ſch ſi ſſ ſt tz (all in a manner such they are not part of a three-letter ligature), one example of f-l where German typesetting rules prohibit ligating (marked by a ZWNJ), and all German letters a...z, ä,ö,ü,ß, ſ [long s] (all in a manner such that they are not part of a two-letter Fraktur ligature).&amp;quot; Otto Stolz notes that &amp;quot;'Schloß' is now spelled 'Schloss', in contrast to 'größer' (example 4) which has kept its 'ß'. Fraktur has been banned from general use, in 1942, and long-s (ſ) has ceased to be used with Antiqua (Roman) even earlier (the latest Antiqua-ſ I have seen is from 1913, but then I am no expert, so there may well be a later instance.&amp;quot; Later Otto confirms the latter theory, &amp;quot;Now I've run across a book “Deutsche Rechtschreibung” (edited by Lutz Mackensen) from 1954 (my reprint is from 1956) that has kept the Antiqua-ſ in its dictionary part (but neither in the preface nor in the appendix).&amp;quot;&lt;br /&gt;
# Diaeresis is not used in Iberian Portuguese.&lt;br /&gt;
# From Yurio Miyazawa: &amp;quot;This poetry contains all the sounds in the Japanese language and used to be the first thing for children to learn in their Japanese class. The Hiragana version is particularly neat because it covers every character in the phonetic Hiragana character set.&amp;quot; Yurio also sent the Kanji version:&lt;br /&gt;
&lt;br /&gt;
          色は匂へど 散りぬるを&lt;br /&gt;
          我が世誰ぞ 常ならむ&lt;br /&gt;
          有為の奥山 今日越えて&lt;br /&gt;
          浅き夢見じ 酔ひもせず &lt;br /&gt;
&lt;br /&gt;
Accented Cyrillic:&lt;br /&gt;
&lt;br /&gt;
(This section contributed by Vladimir Marinov.)&lt;br /&gt;
&lt;br /&gt;
In Bulgarian it is desirable, customary, or in some cases required to write accents over vowels. Unfortunately, no computer character sets contain the full repertoire of accented Cyrillic letters. With Unicode, however, it is possible to combine any Cyrillic letter with any combining accent. The appearance of the result depends on the font and the rendering engine. Here are two examples.&lt;br /&gt;
&lt;br /&gt;
# Той видя бялата коса́ по главата и́ и ко́са на рамото и́, и ре́че да и́ рече́: &amp;quot;Пара́та по́ па́ри от па́рата, не ща пари́&amp;quot;, но си поми́сли: &amp;quot;Хей, помисли́ си А́ и́ река, а́ е скочила в тази река, която щеше да тече́, а не те́че.&amp;quot;&lt;br /&gt;
# По пъ́тя пъту́ват кю́рди и югославя́ни. &lt;br /&gt;
&lt;br /&gt;
HTML Features&lt;br /&gt;
Here is the Russian alphabet (uppercase only) coded in three different ways, which should look identical:&lt;br /&gt;
&lt;br /&gt;
# АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ   (Literal UTF-8) &lt;br /&gt;
# АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ   (Decimal numeric character reference) &lt;br /&gt;
# АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ   (Hexadecimal numeric character reference)&lt;br /&gt;
&lt;br /&gt;
In another test, we use HTML language tags to distinguish Bulgarian, Russian, and Serbian, which have different italic forms for lowercase б, г, д, п, and/or т:&lt;br /&gt;
&lt;br /&gt;
    Bulgarian:   [ бгдпт ]       [ бгдпт ]       Мога да ям стъкло и не ме боли.&lt;br /&gt;
    Russian:     [ бгдпт ]       [ бгдпт ]       Я могу есть стекло, это мне не вредит.&lt;br /&gt;
    Serbian:     [ бгдпт ]       [ бгдпт ]       Могу јести стакло а да ми не шкоди.&lt;br /&gt;
&lt;br /&gt;
Credits, Tools, and Commentary&lt;br /&gt;
&lt;br /&gt;
Credits:&lt;br /&gt;
    &lt;br /&gt;
The &amp;quot;I can eat glass&amp;quot; phrase and the initial collection of translations: Ethan Mollick. Transcription / conversion to UTF-8: Frank da Cruz. Albanian: Sindi Keesan. Afrikaans: Johan Fourie, Kevin Poalses. Anglo Saxon: Frank da Cruz. Arabic: Najib Tounsi. Armenian: Vaçe Kundakçı. Belarusian: Alexey Chernyak. Bengali: Somnath Purkayastha, Deepayan Sarkar. Bislama: Dan Mc Garry. Braille: Frank da Cruz. Bulgarian: Sindi Keesan, Guentcho Skordev, Vladimir Marinov. Cabo Verde Creole: Cláudio Alexandre Duarte. Chinese: Jack Soo, Wong Pui Lam. Chinook Jargon: David Robertson. Cornish: Chris Stephens. Croatian: Marjan Baće. Czech: Stanislav Pecha, Radovan Garabík. Dutch: Peter Gotink. Pim Blokland, Rob Daniel, Rob de Wit. Erzian: Jack Rueter. Esperanto: Franko Luin, Radovan Garabík. Estonian: Meelis Roos. Farsi/Persian: Payam Elahi. Finnish: Sampsa Toivanen. French: Luc Carissimo, Anne Colin du Terrail, Sean M. Burke. Galician: Laura Probaos. Georgian: Giorgi Lebanidze. German: Christoph Päper, Otto Stolz, Karl Pentzlin, Frank da Cruz. Gothic: Aurélien Coudurier. Greek: Ariel Glenn, Constantine Stathopoulos, Siva Nataraja. Hebrew: Jonathan Rosenne, Tal Barnea. Hausa: Malami Buba, Tom Gewecke. Hawaiian: na Hauʻoli Motta, Anela de Rego, Kaliko Trapp. Hindi: Shirish Kalele. Hungarian: András Rácz, Mark Holczhammer. Icelandic: Andrés Magnússon. International Phonetic Alphabet (IPA): Siva Nataraja / Vincent Ramos. Irish: Michael Everson, Marion Gunn, James Kass, Curtis Clark. Italian: Thomas De Bellis. Japanese: Makoto Takahashi, Yurio Miyazawa. Kirchröadsj: Roger Stoffers. Kreyòl: Sean M. Burke. Korean: Jungshik Shin. Lëtzebuergescht: Stefaan Eeckels. Lithuanian: Gediminas Grigas. Lojban: Edward Cherlin. Lusatian: Ronald Schaffhirt. Macedonian: Sindi Keesan. Malay: Zarina Mustapha. Manx: Éanna Ó Brádaigh. Marathi: Shirish Kalele. Marquesan: Kaliko Trapp. Middle English: Frank da Cruz. Milanese: Marco Cimarosti. Mongolian: Tom Gewecke. Napoletano: Diego Quintano. Navajo: Tom Gewecke. Nórdicg: Yẃlyan Rott. Norwegian: Herman Ranes. Odenwälderisch: Alexander Heß. Old Irish: Michael Everson. Old Norse: Andrés Magnússon. Papiamentu: Bianca and Denise Zanardi. Pashto: N.R. Liwal. Pfälzisch: Dr. Johannes Sander. Picard: Philippe Mennecier. Polish: Juliusz Chroboczek. Portuguese: &amp;quot;Cláudio&amp;quot; Alexandre Duarte, Bianca and Denise Zanardi, Pedro Palhoto Matos, Wagner Amaral. Québécois: Laurent Detillieux. Roman: Pierpaolo Bernardi. Romanian: Juliusz Chroboczek, Ionel Mugurel. Ruhrdeutsch: &amp;quot;Timwi&amp;quot;. Russian: Alexey Chernyak, Serge Nesterovitch. Sami: Anne Colin du Terrail, Luc Carissimo. Sanskrit: Siva Nataraja / Vincent Ramos. Sächsisch: André Müller. Schwäbisch: Otto Stolz. Scots: Jonathan Riddell. Serbian: Sindi Keesan, Ranko Narancic, Boris Daljevic, Szilvia Csorba. Slovak: G. Adam Stanislav, Radovan Garabík. Slovenian: Albert Kolar. Spanish: Aleida Muñoz, Laura Probaos. Swahili: Ronald Schaffhirt. Swedish: Christian Rose, Bengt Larsson. Taiwanese: Henry H. Tan-Tenn. Tagalog: Jim Soliven. Tamil: Vasee Vaseeharan. Tibetan: D. Germano, Tom Gewecke. Thai: Alan Wood's wife. Turkish: Vaçe Kundakçı, Tom Gewecke, Merlign Olnon. Ukrainian: Michael Zajac. Urdu: Mustafa Ali. Vietnamese: Dixon Au, [James] Đỗ Bá Phước 杜 伯 福. Walloon: Pablo Saratxaga. Welsh: Geiriadur Prifysgol Cymru (Andrew). Yiddish: Mark David, Zeneise: Angelo Pavese.&lt;br /&gt;
&lt;br /&gt;
Tools Used to Create This Web Page:&lt;br /&gt;
    &lt;br /&gt;
The UTF8-aware Kermit 95 terminal emulator on Windows, to a Unix host with the EMACS text editor. Kermit 95 displays UTF-8 and also allows keyboard entry of arbitrary Unicode BMP characters as 4 hex digits, as shown HERE. Hex codes for Unicode values can be found in The Unicode Standard (recommended) and the online code charts. When submissions arrive by email encoded in some other character set (Latin-1, Latin-2, KOI, various PC code pages, JEUC, etc), I use the TRANSLATE command of C-Kermit on the Unix host (where I read my mail) to convert the character set to UTF-8 (I could also use Kermit 95 for this; it has the same TRANSLATE command). That's it -- no &amp;quot;Web authoring&amp;quot; tools, no locales, no &amp;quot;smart&amp;quot; anything. It's just plain text, nothing more. By the way, there's nothing special about EMACS -- any text editor will do, providing it allows entry of arbitrary 8-bit bytes as text, including the 0x80-0x9F &amp;quot;C1&amp;quot; range. EMACS 21.1 actually supports UTF-8; earlier versions don't know about it and display the octal codes; either way is OK for this purpose.&lt;br /&gt;
&lt;br /&gt;
Commentary:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:Date: Wed, 27 Feb 2002 13:21:59 +0100&lt;br /&gt;
:From: Bruno DEDOMINICIS b.dedominicis@cite-sciences.fr&lt;br /&gt;
:Subject: Je peux manger du verre, cela ne me fait pas mal.&lt;br /&gt;
&lt;br /&gt;
:I just found out your website and it makes me feel like proposing an interpretation of the choice of this peculiar phrase.&lt;br /&gt;
&lt;br /&gt;
:Glass is transparent and can hurt as everyone knows. The relation between people and civilisations is sometimes effusional and more often rude. The concept of breaking frontiers through globalization, in a way, is also an attempt to deny any difference. Isn't &amp;quot;transparency&amp;quot; the flag of modernity? Nothing should be hidden any more, authority is obsolete, and the new powers are supposed to reign through loving and smiling and no more through coercion...&lt;br /&gt;
&lt;br /&gt;
:Eating glass without pain sounds like a very nice metaphor of this attempt. That is, frontiers should become glass transparent first, and be denied by incorporating them. On the reverse, it shows that through globalization, frontiers undergo a process of displacement, that is, when they are not any more speakable, they become repressed from the speech and are therefore incorporated and might become painful symptoms, as for example what happens when one tries to eat glass.&lt;br /&gt;
&lt;br /&gt;
:The frontiers that used to separate bodies one from another tend to divide bodies from within and make them suffer.... The chosen phrase then appears as a denial of the symptom that might result from the destitution of traditional frontiers.&lt;br /&gt;
&lt;br /&gt;
:Best,&amp;lt;br&amp;gt;&lt;br /&gt;
:Bruno De Dominicis, Paris, France &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Other Unicode pages onsite:&lt;br /&gt;
&lt;br /&gt;
* Peace in All Languages&lt;br /&gt;
* Frank's Compulsive Guide to Postal Addresses (especially the Index)&lt;br /&gt;
* Representing Middle English on the Web with UTF-8&lt;br /&gt;
* The Kermit Bibliography (in UTF-8)&lt;br /&gt;
* Interchange of Non-English Computer Text (UTF-8 math and box-drawing)&lt;br /&gt;
* Unicode Table (in UTF-8)&lt;br /&gt;
&lt;br /&gt;
Unicode samplers offsite:&lt;br /&gt;
&lt;br /&gt;
* Michael Everson's Bibliography of Typography and Scripts&lt;br /&gt;
* Sample Unicode Test Pages and Script Links&lt;br /&gt;
* I don't know, I only work here&lt;br /&gt;
* Anyone can be provincial&lt;br /&gt;
* Transcriptions of &amp;quot;Unicode&amp;quot;&lt;br /&gt;
* Example Unicode Usage for Business Applications&lt;br /&gt;
* UTF-8 and Unicode FAQ for Unix/Linux&lt;br /&gt;
&lt;br /&gt;
Unicode fonts:&lt;br /&gt;
&lt;br /&gt;
* Unicode Fonts for Windows Computers (Alan Wood)&lt;br /&gt;
* Unicode Fonts and Tools for X11 (Markus Kuhn)&lt;br /&gt;
* Everson Mono (Michael Everson)&lt;br /&gt;
* Agfa Monotype&lt;br /&gt;
&lt;br /&gt;
[ Kermit 95 ] [ K95 Screen Shots ] [ C-Kermit ] [ Kermit Home ] [ Display Problems? ] [ The Unicode Consortium ]&lt;br /&gt;
UTF-8 Sampler / The Kermit Project / Columbia University / kermit@columbia.edu&lt;br /&gt;
&lt;br /&gt;
[[Category:Categories]]&lt;/div&gt;</summary>
		<author><name>TimBird</name></author>	</entry>

	<entry>
		<id>http://elinux.org/DLNA_Summit_2008</id>
		<title>DLNA Summit 2008</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/DLNA_Summit_2008"/>
				<updated>2008-07-01T18:55:58Z</updated>
		
		<summary type="html">&lt;p&gt;TimBird: /* Venue/Hotel Information */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
The CE Linux Forum is hosting the second Open Source DLNA Summit, in Ede Netherlands, November 8 2008. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This summit is co-located at the same venue as&lt;br /&gt;
[http://www.embeddedlinuxconference.com/elc_europe08/index.html Embedded Linux Conference Europe].&lt;br /&gt;
 (Note that registration in Embedded Linux Conference is not required for attending the DLNA Summit)&lt;br /&gt;
&lt;br /&gt;
== Purpose ==&lt;br /&gt;
The primary purpose of this conference is to facilitate the meeting and sharing of information among several parties interested in open source implementations of the DLNA specifications. These includes open source developers, product developers who might use these implementations, representatives from the DLNA organization or from related companies (certification and testing labs), and from members of the CE Linux Forum who are interested in this work. &lt;br /&gt;
&lt;br /&gt;
This page has information about the summit. It will be updated as more information becomes available. &lt;br /&gt;
&lt;br /&gt;
The CE Linux Forum is interested in promoting and supporting work in this area, for eventual use in Linux-based CE products. It is hoped that by collaborating we can avoid duplication of effort, strengthen interoperability between implementations, and help accelerate the development of robust and feature-full solutions. During this summit we also want to gauge the interest level for holding such events in the future and discuss ideas for making them more productive. &lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
* Location: Ede, Netherlands &lt;br /&gt;
* Date: November 8 (Saturday), 2008 &lt;br /&gt;
* Times: 10 am to 5 pm &lt;br /&gt;
* Venue: tbd &lt;br /&gt;
* Price: Free &lt;br /&gt;
* Attendees: Attendance is by invitation.  If you are interested in attending, please contact Rahul Saxena: rahul dot saxena at intel.com or Tim Bird: tim dot bird at am.sony.com&lt;br /&gt;
&lt;br /&gt;
== Agenda ==&lt;br /&gt;
List of presentation and discussion topics: &lt;br /&gt;
 &lt;br /&gt;
*Specification Roadmap &lt;br /&gt;
 &lt;br /&gt;
*Status of DLNA OSS Projects &lt;br /&gt;
 &lt;br /&gt;
*Industry input on DLNA stack feature priorities and problem areas &lt;br /&gt;
 &lt;br /&gt;
*CELF sponsorship and support of OSS projects, contract work etc&lt;br /&gt;
 &lt;br /&gt;
*Open sourcing of DLNA stacks from CE companies &lt;br /&gt;
 &lt;br /&gt;
*Ideas on collaboration: Code sharing, partitioning problem space etc &lt;br /&gt;
 &lt;br /&gt;
*Certification Processes and Tools &lt;br /&gt;
 &lt;br /&gt;
*Hardware availability: Development and Test hardware &lt;br /&gt;
 &lt;br /&gt;
*DLNA Plug Fests &lt;br /&gt;
 &lt;br /&gt;
*Share compliance experiences e.g. PS3 war stories &lt;br /&gt;
 &lt;br /&gt;
*Future Summit discussion: Need for such a summit, agenda Ideas, mail lists, new invitees etc &lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Short (up to 30 minutes) presentations on above or similar topics are welcome and encouraged. Though Pre-submission of presentations is not required, please inform Rahul Saxena (rahul dot saxena at intel.com) if you plan to present.&lt;br /&gt;
&lt;br /&gt;
== Attendees ==&lt;br /&gt;
List of Attendees (To be updated)&lt;br /&gt;
&lt;br /&gt;
== Venue/Hotel Information ==&lt;br /&gt;
This summit is co-located at the same venue as Embedded Linux Conference Europe (ELCE). Please see the following ELCE conference web site for Venue and Hotel information:&lt;br /&gt;
* Venue information: http://www.embeddedlinuxconference.com/elc_europe08/venue.html&lt;br /&gt;
* Hotel information: http://www.embeddedlinuxconference.com/elc_europe08/hotel.html&lt;br /&gt;
&lt;br /&gt;
== Link to more resources ==&lt;br /&gt;
More information about open source DLNA projects is available on the elinux wiki at: &lt;br /&gt;
&lt;br /&gt;
http://elinux.org/DLNA_Open_Source_Projects&lt;br /&gt;
&lt;br /&gt;
Link to 2007 DLNA Summit website:&lt;br /&gt;
&lt;br /&gt;
http://tree.celinuxforum.org/CelfPubWiki/DLNASummit&lt;/div&gt;</summary>
		<author><name>TimBird</name></author>	</entry>

	<entry>
		<id>http://elinux.org/DLNA_Summit_2008</id>
		<title>DLNA Summit 2008</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/DLNA_Summit_2008"/>
				<updated>2008-07-01T18:54:58Z</updated>
		
		<summary type="html">&lt;p&gt;TimBird: /* Agenda */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
The CE Linux Forum is hosting the second Open Source DLNA Summit, in Ede Netherlands, November 8 2008. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This summit is co-located at the same venue as&lt;br /&gt;
[http://www.embeddedlinuxconference.com/elc_europe08/index.html Embedded Linux Conference Europe].&lt;br /&gt;
 (Note that registration in Embedded Linux Conference is not required for attending the DLNA Summit)&lt;br /&gt;
&lt;br /&gt;
== Purpose ==&lt;br /&gt;
The primary purpose of this conference is to facilitate the meeting and sharing of information among several parties interested in open source implementations of the DLNA specifications. These includes open source developers, product developers who might use these implementations, representatives from the DLNA organization or from related companies (certification and testing labs), and from members of the CE Linux Forum who are interested in this work. &lt;br /&gt;
&lt;br /&gt;
This page has information about the summit. It will be updated as more information becomes available. &lt;br /&gt;
&lt;br /&gt;
The CE Linux Forum is interested in promoting and supporting work in this area, for eventual use in Linux-based CE products. It is hoped that by collaborating we can avoid duplication of effort, strengthen interoperability between implementations, and help accelerate the development of robust and feature-full solutions. During this summit we also want to gauge the interest level for holding such events in the future and discuss ideas for making them more productive. &lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
* Location: Ede, Netherlands &lt;br /&gt;
* Date: November 8 (Saturday), 2008 &lt;br /&gt;
* Times: 10 am to 5 pm &lt;br /&gt;
* Venue: tbd &lt;br /&gt;
* Price: Free &lt;br /&gt;
* Attendees: Attendance is by invitation.  If you are interested in attending, please contact Rahul Saxena: rahul dot saxena at intel.com or Tim Bird: tim dot bird at am.sony.com&lt;br /&gt;
&lt;br /&gt;
== Agenda ==&lt;br /&gt;
List of presentation and discussion topics: &lt;br /&gt;
 &lt;br /&gt;
*Specification Roadmap &lt;br /&gt;
 &lt;br /&gt;
*Status of DLNA OSS Projects &lt;br /&gt;
 &lt;br /&gt;
*Industry input on DLNA stack feature priorities and problem areas &lt;br /&gt;
 &lt;br /&gt;
*CELF sponsorship and support of OSS projects, contract work etc&lt;br /&gt;
 &lt;br /&gt;
*Open sourcing of DLNA stacks from CE companies &lt;br /&gt;
 &lt;br /&gt;
*Ideas on collaboration: Code sharing, partitioning problem space etc &lt;br /&gt;
 &lt;br /&gt;
*Certification Processes and Tools &lt;br /&gt;
 &lt;br /&gt;
*Hardware availability: Development and Test hardware &lt;br /&gt;
 &lt;br /&gt;
*DLNA Plug Fests &lt;br /&gt;
 &lt;br /&gt;
*Share compliance experiences e.g. PS3 war stories &lt;br /&gt;
 &lt;br /&gt;
*Future Summit discussion: Need for such a summit, agenda Ideas, mail lists, new invitees etc &lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Short (up to 30 minutes) presentations on above or similar topics are welcome and encouraged. Though Pre-submission of presentations is not required, please inform Rahul Saxena (rahul dot saxena at intel.com) if you plan to present.&lt;br /&gt;
&lt;br /&gt;
== Attendees ==&lt;br /&gt;
List of Attendees (To be updated)&lt;br /&gt;
&lt;br /&gt;
== Venue/Hotel Information ==&lt;br /&gt;
This summit is co-located at the same venue as Embedded Linux Conference Europe (ELCE). Please see the following ELCE conference web sites for Venu and Hotel information &lt;br /&gt;
&lt;br /&gt;
== Link to more resources ==&lt;br /&gt;
More information about open source DLNA projects is available on the elinux wiki at: &lt;br /&gt;
&lt;br /&gt;
http://elinux.org/DLNA_Open_Source_Projects&lt;br /&gt;
&lt;br /&gt;
Link to 2007 DLNA Summit website:&lt;br /&gt;
&lt;br /&gt;
http://tree.celinuxforum.org/CelfPubWiki/DLNASummit&lt;/div&gt;</summary>
		<author><name>TimBird</name></author>	</entry>

	<entry>
		<id>http://elinux.org/DLNA_Summit_2008</id>
		<title>DLNA Summit 2008</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/DLNA_Summit_2008"/>
				<updated>2008-07-01T18:54:30Z</updated>
		
		<summary type="html">&lt;p&gt;TimBird: /* Overview */ fix formatting&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
The CE Linux Forum is hosting the second Open Source DLNA Summit, in Ede Netherlands, November 8 2008. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This summit is co-located at the same venue as&lt;br /&gt;
[http://www.embeddedlinuxconference.com/elc_europe08/index.html Embedded Linux Conference Europe].&lt;br /&gt;
 (Note that registration in Embedded Linux Conference is not required for attending the DLNA Summit)&lt;br /&gt;
&lt;br /&gt;
== Purpose ==&lt;br /&gt;
The primary purpose of this conference is to facilitate the meeting and sharing of information among several parties interested in open source implementations of the DLNA specifications. These includes open source developers, product developers who might use these implementations, representatives from the DLNA organization or from related companies (certification and testing labs), and from members of the CE Linux Forum who are interested in this work. &lt;br /&gt;
&lt;br /&gt;
This page has information about the summit. It will be updated as more information becomes available. &lt;br /&gt;
&lt;br /&gt;
The CE Linux Forum is interested in promoting and supporting work in this area, for eventual use in Linux-based CE products. It is hoped that by collaborating we can avoid duplication of effort, strengthen interoperability between implementations, and help accelerate the development of robust and feature-full solutions. During this summit we also want to gauge the interest level for holding such events in the future and discuss ideas for making them more productive. &lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
* Location: Ede, Netherlands &lt;br /&gt;
* Date: November 8 (Saturday), 2008 &lt;br /&gt;
* Times: 10 am to 5 pm &lt;br /&gt;
* Venue: tbd &lt;br /&gt;
* Price: Free &lt;br /&gt;
* Attendees: Attendance is by invitation.  If you are interested in attending, please contact Rahul Saxena: rahul dot saxena at intel.com or Tim Bird: tim dot bird at am.sony.com&lt;br /&gt;
&lt;br /&gt;
== Agenda ==&lt;br /&gt;
List of presentation and discussion topics: &lt;br /&gt;
 &lt;br /&gt;
*Specification Roadmap &lt;br /&gt;
 &lt;br /&gt;
*Status of DLNA OSS Projects &lt;br /&gt;
 &lt;br /&gt;
*Industry input on DLNA stack feature priorities and problem areas &lt;br /&gt;
 &lt;br /&gt;
*CELF sponsorship and support of OSS projects, contract work etc&lt;br /&gt;
 &lt;br /&gt;
*Open sourcing of DLNA stacks from CE companies &lt;br /&gt;
 &lt;br /&gt;
*Ideas on collaboration: Code sharing, partitioning problem space etc &lt;br /&gt;
 &lt;br /&gt;
*Certification Processes and Tools &lt;br /&gt;
 &lt;br /&gt;
*Hardware availability: Development and Test hardware &lt;br /&gt;
 &lt;br /&gt;
*DLNA Plug Fests &lt;br /&gt;
 &lt;br /&gt;
*Share compliance experiences e.g. PS3 war stories &lt;br /&gt;
 &lt;br /&gt;
*Future Summit discussion: Need for such a summit, agenda Ideas, mail lists, new invitees etc &lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Short (Upto 30 minutes) presentations on above or similar topics are welcome and encouraged. Though Pre-submission of presentations is not required, please inform Rahul Saxena (rahul dot saxena at intel.com) if you plan to present. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Attendees ==&lt;br /&gt;
List of Attendees (To be updated)&lt;br /&gt;
&lt;br /&gt;
== Venue/Hotel Information ==&lt;br /&gt;
This summit is co-located at the same venue as Embedded Linux Conference Europe (ELCE). Please see the following ELCE conference web sites for Venu and Hotel information &lt;br /&gt;
&lt;br /&gt;
== Link to more resources ==&lt;br /&gt;
More information about open source DLNA projects is available on the elinux wiki at: &lt;br /&gt;
&lt;br /&gt;
http://elinux.org/DLNA_Open_Source_Projects&lt;br /&gt;
&lt;br /&gt;
Link to 2007 DLNA Summit website:&lt;br /&gt;
&lt;br /&gt;
http://tree.celinuxforum.org/CelfPubWiki/DLNASummit&lt;/div&gt;</summary>
		<author><name>TimBird</name></author>	</entry>

	<entry>
		<id>http://elinux.org/DLNA_Summit_2008</id>
		<title>DLNA Summit 2008</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/DLNA_Summit_2008"/>
				<updated>2008-07-01T18:53:34Z</updated>
		
		<summary type="html">&lt;p&gt;TimBird: add link to ELCE 2008 web site&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
The CE Linux Forum is hosting the second Open Source DLNA Summit, in Ede Netherlands, November 8 2008. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This summit is co-located at the same venue as&lt;br /&gt;
[http://www.embeddedlinuxconference.com/elc_europe08/index.html Embedded Linux Conference Europe].&lt;br /&gt;
 (Note that registration in Embedded Linux Conference is not required for attending the DLNA Summit)&lt;br /&gt;
&lt;br /&gt;
== Purpose ==&lt;br /&gt;
The primary purpose of this conference is to facilitate the meeting and sharing of information among several parties interested in open source implementations of the DLNA specifications. These includes open source developers, product developers who might use these implementations, representatives from the DLNA organization or from related companies (certification and testing labs), and from members of the CE Linux Forum who are interested in this work. &lt;br /&gt;
&lt;br /&gt;
This page has information about the summit. It will be updated as more information becomes available. &lt;br /&gt;
&lt;br /&gt;
The CE Linux Forum is interested in promoting and supporting work in this area, for eventual use in Linux-based CE products. It is hoped that by collaborating we can avoid duplication of effort, strengthen interoperability between implementations, and help accelerate the development of robust and feature-full solutions. During this summit we also want to gauge the interest level for holding such events in the future and discuss ideas for making them more productive. &lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
Location: Ede, Netherlands &lt;br /&gt;
Date: November 8 (Saturday), 2008 &lt;br /&gt;
Times: 10 am to 5 pm &lt;br /&gt;
Venue: tbd &lt;br /&gt;
Price: Free &lt;br /&gt;
Attendees: Attendance is by invitation. If you are interested in attending, please contact Rahul Saxena: rahul dot saxena atintel.com or Tim Bird: tim dot bird at am.sony.com&lt;br /&gt;
&lt;br /&gt;
== Agenda ==&lt;br /&gt;
List of presentation and discussion topics: &lt;br /&gt;
 &lt;br /&gt;
*Specification Roadmap &lt;br /&gt;
 &lt;br /&gt;
*Status of DLNA OSS Projects &lt;br /&gt;
 &lt;br /&gt;
*Industry input on DLNA stack feature priorities and problem areas &lt;br /&gt;
 &lt;br /&gt;
*CELF sponsorship and support of OSS projects, contract work etc&lt;br /&gt;
 &lt;br /&gt;
*Open sourcing of DLNA stacks from CE companies &lt;br /&gt;
 &lt;br /&gt;
*Ideas on collaboration: Code sharing, partitioning problem space etc &lt;br /&gt;
 &lt;br /&gt;
*Certification Processes and Tools &lt;br /&gt;
 &lt;br /&gt;
*Hardware availability: Development and Test hardware &lt;br /&gt;
 &lt;br /&gt;
*DLNA Plug Fests &lt;br /&gt;
 &lt;br /&gt;
*Share compliance experiences e.g. PS3 war stories &lt;br /&gt;
 &lt;br /&gt;
*Future Summit discussion: Need for such a summit, agenda Ideas, mail lists, new invitees etc &lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Short (Upto 30 minutes) presentations on above or similar topics are welcome and encouraged. Though Pre-submission of presentations is not required, please inform Rahul Saxena (rahul dot saxena at intel.com) if you plan to present. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Attendees ==&lt;br /&gt;
List of Attendees (To be updated)&lt;br /&gt;
&lt;br /&gt;
== Venue/Hotel Information ==&lt;br /&gt;
This summit is co-located at the same venue as Embedded Linux Conference Europe (ELCE). Please see the following ELCE conference web sites for Venu and Hotel information &lt;br /&gt;
&lt;br /&gt;
== Link to more resources ==&lt;br /&gt;
More information about open source DLNA projects is available on the elinux wiki at: &lt;br /&gt;
&lt;br /&gt;
http://elinux.org/DLNA_Open_Source_Projects&lt;br /&gt;
&lt;br /&gt;
Link to 2007 DLNA Summit website:&lt;br /&gt;
&lt;br /&gt;
http://tree.celinuxforum.org/CelfPubWiki/DLNASummit&lt;/div&gt;</summary>
		<author><name>TimBird</name></author>	</entry>

	<entry>
		<id>http://elinux.org/ELC_2006_Presentations</id>
		<title>ELC 2006 Presentations</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/ELC_2006_Presentations"/>
				<updated>2008-06-27T19:05:34Z</updated>
		
		<summary type="html">&lt;p&gt;TimBird: /* Table */ fix table layout&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Presenters, Demo-ers, Panelists and Participants:&lt;br /&gt;
Thanks very much for your participation in CELF's Embedded Linux Conference&lt;br /&gt;
I really enjoyed the conference, and hope you did as well.&lt;br /&gt;
&lt;br /&gt;
'''Presenters:''' Please post your technical conference presentations on this page.&lt;br /&gt;
&lt;br /&gt;
(See Instructions below the table)&lt;br /&gt;
&lt;br /&gt;
Here is an article on LinuxDevices with images of the demo posters: http://www.linuxdevices.com/articles/AT8247255296.html&lt;br /&gt;
&lt;br /&gt;
== Table ==&lt;br /&gt;
{|  border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;4&amp;quot;&lt;br /&gt;
|- bgcolor=&amp;quot;#c0e0e0&amp;quot;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | '''Person'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | '''Session Description'''                                  &lt;br /&gt;
| align=&amp;quot;center&amp;quot; | '''Presentation'''&lt;br /&gt;
|- &lt;br /&gt;
|  Tim Bird (Sony)     &lt;br /&gt;
|  Keynote: 13 Years of Linux                                                &lt;br /&gt;
|  [[Media:13-years-of-Linux.pdf]] &lt;br /&gt;
|- &lt;br /&gt;
|  Andre Kruetzfeldt, Christophe Guinet    &lt;br /&gt;
|  The MPPWG Mobile Phone Telephony API – part 2 Introduction to the Mobile Phone API&lt;br /&gt;
|  [[Media:ELC-Aplix-NEC.pdf]]&lt;br /&gt;
|- &lt;br /&gt;
|  Armin Gerritsen     &lt;br /&gt;
|  The Video Clip Player – Philips Nexperia™ PNX0106 and Linux based platform&lt;br /&gt;
|  [[Media:CELF-ELC_VideoClipPlayer.pdf]]&lt;br /&gt;
|- &lt;br /&gt;
|  Chang-Sik Cho          &lt;br /&gt;
|  Digital Entertainment Center Solution                                     &lt;br /&gt;
|  [[Media:ELC-presentation-DEC-0412.pdf]]&lt;br /&gt;
|- &lt;br /&gt;
|  Denis Kropp          &lt;br /&gt;
|  Graphics Subsystem in an Embedded World - Integrating [[DirectFB]] into a UHAPI platform&lt;br /&gt;
|  [[Media:ELC 2006 -GraphicsSubsystemInAnEmbeddedWorld.pdf]]&lt;br /&gt;
|- &lt;br /&gt;
|  Ed Plowman          &lt;br /&gt;
|  Khronos Media API Update                                                  &lt;br /&gt;
|  [[Media:Khronos-API-CELF-Apr06.pdf]]&lt;br /&gt;
|- &lt;br /&gt;
|  Greg Kroah Hartman  &lt;br /&gt;
|  Tutorial: Write a real, working Linux driver                              &lt;br /&gt;
|  [[Media:celf_2006_tutorial.pdf]] [[Media:USB_tutorial_example_code.tar.gz]]&lt;br /&gt;
|- &lt;br /&gt;
|  Greg Ungerer          &lt;br /&gt;
|  uClinux -- Micro-controller Linux                                         &lt;br /&gt;
|  [[Media:uclinux.pdf]]&lt;br /&gt;
|- &lt;br /&gt;
|  Hyok S. Choi          &lt;br /&gt;
|  Non-Paged Memory Management on Mainline ARM Kernel                        &lt;br /&gt;
|  .&lt;br /&gt;
|- &lt;br /&gt;
|  Jared Hulbert          &lt;br /&gt;
|  Tutorial: Creating optimized XIP systems                                  &lt;br /&gt;
|  [[Media:CELF-XIP_Linux.pdf]]&lt;br /&gt;
|- &lt;br /&gt;
|  John Goodacre       &lt;br /&gt;
|  ARM [[MPCore]] and Power Management                                           &lt;br /&gt;
|  [[Media:MPCore_and_Linux_Power.pdf,]] [[Media:MPCore_and_Linux_Power.ppt]]&lt;br /&gt;
|- &lt;br /&gt;
|  Jordan Crouse          &lt;br /&gt;
|  Taking the plunge - the marriage of X86 and embedded Linux                &lt;br /&gt;
|  [[Media:jordan_crouse_celf_2006.pdf]]&lt;br /&gt;
|- &lt;br /&gt;
|  Jung-Hyun Yoo          &lt;br /&gt;
|  Linux on a Terrestrial DMB TV Receiver                                    &lt;br /&gt;
|  .&lt;br /&gt;
|- &lt;br /&gt;
|  Kevin D. Kissell    &lt;br /&gt;
|  Microthreads as Linux [[CPUs]] - SMTC Linux for MIPS MT cores                 &lt;br /&gt;
|  [[Media:CELF_SMTC_April_2006_v0.3.pdf]]&lt;br /&gt;
|- &lt;br /&gt;
|  Kittur Ganesh          &lt;br /&gt;
|  Optimization Techniques for maximizing application performance on Multi-core processors.&lt;br /&gt;
|  [[Media:Ganesh-CELF.pdf,]] [[Media:Ganesh-CELF.ppt]]&lt;br /&gt;
|- &lt;br /&gt;
|  Klaas de Waal          &lt;br /&gt;
|  [[Myth TV]] on Philips Nexperia™ PNX8550 and Linux based platform              &lt;br /&gt;
|  [[Media:MythTVonNexperia-CELF-05.pdf]]&lt;br /&gt;
|- &lt;br /&gt;
|  Liam Girdwood          &lt;br /&gt;
|  Enhancing ALSA audio for portable devices.                                &lt;br /&gt;
|  .&lt;br /&gt;
|- &lt;br /&gt;
|  Manas Saksena          &lt;br /&gt;
|  State of Linux Realtime – BOF                                             &lt;br /&gt;
|  .&lt;br /&gt;
|- &lt;br /&gt;
|  Mark Gross          &lt;br /&gt;
|  Power Management Panel                                                    &lt;br /&gt;
|  .&lt;br /&gt;
|- &lt;br /&gt;
|  Mathew Locke          &lt;br /&gt;
|  CE Linux Forum Open Test Lab                                              &lt;br /&gt;
|  .&lt;br /&gt;
|- &lt;br /&gt;
|  Mathieu Desnoyers   &lt;br /&gt;
|  Low disturbance embedded system tracing with Linux Trace Toolkit Next Generation.&lt;br /&gt;
|  [[Media:celf2006-desnoyers.pdf]]&lt;br /&gt;
|- &lt;br /&gt;
|  Matt Mackall          &lt;br /&gt;
|  Kernel Size Issues                                                        &lt;br /&gt;
|  .&lt;br /&gt;
|- &lt;br /&gt;
|  Matthew Klahn          &lt;br /&gt;
|  Visualizing resource usage during initialization of embedded systems      &lt;br /&gt;
|  [[Media:VisualizingResUsageDuringBoot.pdf]]&lt;br /&gt;
|- &lt;br /&gt;
|  Min-Seok Jang          &lt;br /&gt;
|  Research on Linux 2.6 Kernel Features for CE products                     &lt;br /&gt;
|  .&lt;br /&gt;
|- &lt;br /&gt;
|  Munehiro Ikeda      &lt;br /&gt;
|  Examining Linux Kernel Size                                             &lt;br /&gt;
|  [[Media:size_exam_celf_elc2006.pdf]]&lt;br /&gt;
|- &lt;br /&gt;
|  Prof. Nicholas Mc Guire &lt;br /&gt;
|  Boot-Time Optimization - results of applying currently available solutions&lt;br /&gt;
|  [[Media:boot_opt.pdf]]&lt;br /&gt;
|- &lt;br /&gt;
|  Rob Landley          &lt;br /&gt;
|  What's new with [[Busy Box]]                                                   &lt;br /&gt;
|  .&lt;br /&gt;
|- &lt;br /&gt;
|  Ruud Derwig          &lt;br /&gt;
|  Audio Video Graphics Version 2.0 Specification &lt;br /&gt;
|  [[Media:CELF_AVG_Specification_v2_20060411.pdf]] ([[Media:CELF_AVG_Specification_v2_20060411.ppt)]] &lt;br /&gt;
|- &lt;br /&gt;
|  Scott Preece          &lt;br /&gt;
|  The MPPWG Mobile Phone Telephony API – part 1 Developing the API         &lt;br /&gt;
|  [[Media:MppApiSession1.pdf]]&lt;br /&gt;
|- &lt;br /&gt;
|  Shinichi Ochiai     &lt;br /&gt;
|  Experience with realtime performance of the current Linux technologies    &lt;br /&gt;
|  [[Media:ExperienceWithRealtimePerformance.pdf]]&lt;br /&gt;
|- &lt;br /&gt;
|  Steve Johnson          &lt;br /&gt;
|  Trusted Bootloader                                                        &lt;br /&gt;
|  [[Media:Trusted_Boot_Loader.pdf]]&lt;br /&gt;
|- &lt;br /&gt;
|  Takanari Hayama     &lt;br /&gt;
|  Analysis of User Level Device Driver usability in embedded application – Technique to achieve good real-time performance&lt;br /&gt;
|  [[Media:uldd060411celfelc2006.pdf]]&lt;br /&gt;
|- &lt;br /&gt;
|  Thomas Gleixner     &lt;br /&gt;
|  A Case Study of transitioning a project from RTAI to RT-Preempt           &lt;br /&gt;
|  .&lt;br /&gt;
|- &lt;br /&gt;
|  Todd Poynor          &lt;br /&gt;
|  Topics in Embedded Power Management                                       &lt;br /&gt;
|  [[Media:pm-celf-summit-2006.pdf]]&lt;br /&gt;
|- &lt;br /&gt;
|  Tohru Nojiri          &lt;br /&gt;
|  Kprobes implementation for Embedded System                                &lt;br /&gt;
|  .&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Instructions for Presenters ==&lt;br /&gt;
&lt;br /&gt;
Here are the steps to follow to add your presentation to this page (Please read them BEFORE clicking):&lt;br /&gt;
* If you don't have a wiki account, please create one by clicking on [[User Preferences]], fill out the form, and return here.&lt;br /&gt;
** (A wiki account is required to attach files or edit this page)&lt;br /&gt;
* PDF format is preferred.  If you can convert your presentation to PDF, please do so.&lt;br /&gt;
* If your presentation has any message which says it is confidential (such as in a footer from a corporate or CELF template), please remove it.&lt;br /&gt;
** If you used a CELF template that has &amp;quot;CELF confidential&amp;quot; in the footer, please upload the presentation so we can remove the footer.  Or you can remove it yourself by editing the footer on the slide &amp;quot;master&amp;quot; page.&lt;br /&gt;
* Please make sure your filename does not have any spaces in it&lt;br /&gt;
* Click on the AttachFile link at the bottom of the page&lt;br /&gt;
** on the form, enter your presentation file name (or browse to it)&lt;br /&gt;
** click on &amp;quot;Add link to page&amp;quot;.&lt;br /&gt;
** click on &amp;quot;Upload&amp;quot; (your file will be added as an attachment to the page)&lt;br /&gt;
** click on &amp;quot;ShowText&amp;quot; to see the page again.&lt;br /&gt;
&lt;br /&gt;
If you want to be extra nice, you can add the appropriate &amp;quot;[[Media:&amp;quot;]] line to your entry in the table. Do this&lt;br /&gt;
by clicking on EditText at the bottom of the page and copying the text from the bottom of the page to&lt;br /&gt;
your line (where it currently has a &amp;quot;.&amp;quot;).  &lt;br /&gt;
&lt;br /&gt;
See the entry for Tim Bird (first in the table) for an example of the syntax required.  Each table line is&lt;br /&gt;
one long line, even though it may wrap in your browser (so remove all line feeds from your line before saving this&lt;br /&gt;
page.) Don't worry - if you don't do this or mess something up I will come along later and fix up the table for you.&lt;br /&gt;
&lt;br /&gt;
Thanks&lt;br /&gt;
&lt;br /&gt;
== Attachments ==&lt;br /&gt;
Below this line is a list of attachments:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hr /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [[Media:13-years-of-Linux.pdf]]&lt;br /&gt;
* [[Media:celf2006-desnoyers.pdf]]&lt;br /&gt;
* [[Media:MppApiSession1.pdf]]&lt;br /&gt;
* [[Media:pm-celf-summit-2006.pdf]]&lt;br /&gt;
* [[Media:Ganesh-CELF.pdf]]&lt;br /&gt;
* [[Media:Ganesh-CELF.ppt]]&lt;br /&gt;
* [[Media:ELC 2006 -GraphicsSubsystemInAnEmbeddedWorld.pdf]]&lt;br /&gt;
* [[Media:VisualizingResUsageDuringBoot.pdf]]&lt;br /&gt;
* [[Media:CELF_SMTC_April_2006_v0.3.pdf]]&lt;br /&gt;
* [[Media:celf_2006_tutorial.pdf]]&lt;br /&gt;
* [[Media:USB_tutorial_example_code.tar.gz]]&lt;br /&gt;
* [[Media:Trusted_Boot_Loader.pdf]]&lt;br /&gt;
* [[Media:ExperienceWithRealtimePerformance.pdf]]&lt;br /&gt;
* [[Media:size_exam_celf_elc2006.pdf]]&lt;br /&gt;
* [[Media:CELF_AVG_Specification_v2_20060411.pdf]]&lt;br /&gt;
* [[Media:CELF_AVG_Specification_v2_20060411.ppt]]&lt;br /&gt;
* [[Media:uclinux.pdf]]&lt;br /&gt;
* [[Media:MythTVonNexperia-CELF-05.pdf]]&lt;br /&gt;
* [[Media:CELF-ELC_VideoClipPlayer.pdf]]&lt;br /&gt;
* [[Media:uldd060411celfelc2006.pdf]]&lt;br /&gt;
* [[Media:MPCore_and_Linux_Power.pdf]]&lt;br /&gt;
* [[Media:MPCore_and_Linux_Power.ppt]]&lt;br /&gt;
* [[Media:ELC-Aplix-NEC.pdf]]&lt;br /&gt;
* [[Media:ELC-presentation-DEC-0412.pdf]]&lt;br /&gt;
* [[Media:Khronos-API-CELF-Apr06.pdf]]&lt;br /&gt;
* [[Media:boot_opt.pdf]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Events]]&lt;/div&gt;</summary>
		<author><name>TimBird</name></author>	</entry>

	<entry>
		<id>http://elinux.org/Events</id>
		<title>Events</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/Events"/>
				<updated>2008-06-27T18:50:25Z</updated>
		
		<summary type="html">&lt;p&gt;TimBird: /* Past events */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Upcoming events ==&lt;br /&gt;
* Regional conference in Japan - Tokyo, Japan, July 4, 2008 - [http://tree.celinuxforum.org/CelfPubWiki/JapanTechnicalJamboree21 Japan Technical Jamboree 21]&lt;br /&gt;
* Ottawa Linux Symposium 2008 - Ottawa, Canada, July 23-26&lt;br /&gt;
** Home page: http://www.linuxsymposium.org/2008/&lt;br /&gt;
* Embedded Linux Conference Europe - Ede, The Netherlands, November 6-7, 2008&lt;br /&gt;
** Home page - http://www.embeddedlinuxconference.com/elc_europe08/index.html&lt;br /&gt;
** Call for Presentations - http://tree.celinuxforum.org/CelfPubWiki/ELCE2008CallForPresentations&lt;br /&gt;
&lt;br /&gt;
== Past events ==&lt;br /&gt;
Some information is at: [[Embedded linux events]]&lt;br /&gt;
&lt;br /&gt;
Here is a list of past CELF events:&lt;br /&gt;
* Regional conference in Japan - Tokyo, Japan, April 25, 2008 - [http://tree.celinuxforum.org/CelfPubWiki/JapanTechnicalJamboree20 Japan Technical Jamboree 20]&lt;br /&gt;
* [http://www.embeddedlinuxconference.com/elc2008/index.html Embedded Linux Conference, 2008] - Mountain View, California, USA, April 15-17, 2008&lt;br /&gt;
** [http://www.celinux.org/elc08_presentations/ ELC 2008 Presentations]&lt;br /&gt;
* Regional conference in Japan - Tokyo, Japan, February 21, 2008 - [http://tree.celinuxforum.org/CelfPubWiki/JapanTechnicalJamboree19 Japan Technical Jamboree 19]&lt;br /&gt;
* Regional conference in Korea - Seoul, Japan, February 22, 2008 - [http://tree.celinuxforum.org/CelfPubWiki/KoreaTechJamboree2 Korean Technical Jamboree 2]&lt;br /&gt;
* Regional conference in Japan - Tokyo, Japan, December 21, 2007 - [http://tree.celinuxforum.org/CelfPubWiki/JapanTechnicalJamboree18 Japan Technical Jamboree 18]&lt;br /&gt;
*[http://www.celinux.org/elc2008/index.html Embedded Linux Conference - 2008] - Mountain View, California, USA, April 15-17, 2008&lt;br /&gt;
*[http://www.celinux.org/elc_europe07/elc_europe_index.html Embedded Linux Conference - Europe 2007] - Linz, Austria, November 2-4, 2007&lt;br /&gt;
** Presentations are being collected at: [http://tree.celinuxforum.org/CelfPubWiki/ELCEurope2007Presentations ELC Europe 2007 Presentations]&lt;br /&gt;
* Regional conference in Japan - Tokyo, Japan, October 25, 2007 - [http://tree.celinuxforum.org/CelfPubWiki/JapanTechnicalJamboree17 Japan Technical Jamboree 17]&lt;br /&gt;
*Regional conference in Japan - Tokyo, Japan, August 31, 2007 - [http://tree.celinuxforum.org/CelfPubWiki/JapanTechnicalJamboree16 Japan Technical Jamboree 16]&lt;br /&gt;
*Ottawa Linux Symposium 2007 - Ottawa, Canada, June 27-30, 2007&lt;br /&gt;
** [[Ottawa Linux Symposium 2007]]&lt;br /&gt;
** [[OLS 2007 Embedded Linux BOF]] - June 27&lt;br /&gt;
** [[OLS 2007 Embedded Linux Wiki BOF]] - June 27&lt;br /&gt;
** [[OLS 2007 CELF BOF]] - June 29, 7-9pm, Westin Hotel&lt;br /&gt;
*Regional conference in Japan - Tokyo, Japan, June 29, 2007 - [http://tree.celinuxforum.org/CelfPubWiki/JapanTechnicalJamboree15 Japan Technical Jamboree 15]&lt;br /&gt;
*Embedded System Expo &amp;amp; Conference in Japan - Tokyo, Japan, May 16-18&lt;br /&gt;
*Regional conference in Japan - Tokyo, Japan, April 27, 2007 [http://tree.celinuxforum.org/CelfPubWiki/JapanTechnicalJamboree14 Japan Technical Jamboree 14]&lt;br /&gt;
* Embedded Linux Conference, 2007 - San Jose, California, April 17-19, 2007 [http://www.celinux.org/elc2007/index.html ELC 2007]&lt;br /&gt;
** Presentations are available at http://tree.celinuxforum.org/CelfPubWiki/ELC2007Presentations&lt;br /&gt;
*Regional conference in Japan - Tokyo, Japan, February 22, 2007 - [http://tree.celinuxforum.org/CelfPubWiki/JapanTechnicalJamboree13 Japan Technical Jamboree 13]&lt;br /&gt;
*Regional conference in Japan - Tokyo, Japan, December 8, 2006 - [http://tree.celinuxforum.org/CelfPubWiki/JapanTechnicalJamboree12 Japan Technical Jamboree 12]&lt;br /&gt;
*Embedded Technology 2006 - Yokohama, Japan, November 15..17,&lt;br /&gt;
*Regional conference in Japan - Tokyo, Japan, October 27, 2006 - [http://tree.celinuxforum.org/CelfPubWiki/JapanTechnicalJamboree11 Japan Technical Jamboree 11]&lt;br /&gt;
*Regional conference in Japan - Tokyo, Japan, August 25, 2006 - [http://tree.celinuxforum.org/CelfPubWiki/JapanTechnicalJamboree10 Japan Technical Jamboree 10]&lt;br /&gt;
*GNOME Embedded and Mobile  (GMAE) forum first meetting at Guadec 2006 in Villanova, Spain. Have a look at the report: {{pdf|Gmae-report-for-celf-2006-08-10.pdf|GMAE Report}}&lt;br /&gt;
*Ottawa Linux Symposium 2006 - Ottawa, Canada, July 19-22, 2006&lt;br /&gt;
** We had a great time in Ottawa!  See the following pages for more information:&lt;br /&gt;
** [[Ottawa Linux Symposium 2006]]&lt;br /&gt;
** [http://tree.celinuxforum.org/CelfPubWiki/OLS2006Demos OLS 2006 CELF Demos]&lt;br /&gt;
*Regional conference in Japan - Tokyo, Japan, July 13, 2006 - [http://tree.celinuxforum.org/CelfPubWiki/JapanTechnicalJamboree9 Japan Technical Jamboree 9]&lt;br /&gt;
*Regional conference in Japan - Tokyo, Japan, May 26, 2006 - [http://tree.celinuxforum.org/CelfPubWiki/JapanTechnicalJamboree8 Japan Technical Jamboree 8]&lt;br /&gt;
*CELF Embedded Linux Conference - San Jose, California, April 11-12, 2006 - [http://www.celinux.org/elc2006/index.html elc2006]&lt;br /&gt;
**Presentations from the conference are being collected at: [[ELC 2006 Presentations]]&lt;br /&gt;
*Regional conference in Japan - Tokyo, Japan, March 24, 2006 [http://tree.celinuxforum.org/CelfPubWiki/JapanTechnicalJamboree7 Japan Technical Jamboree 7]&lt;br /&gt;
*Regional conference in Japan - Tokyo, Japan, January 20, 2006 [http://tree.celinuxforum.org/CelfPubWiki/JapanTechnicalJamboree6 Japan Technical Jamboree 6]&lt;br /&gt;
*Regional conference in Japan - Tokyo, Japan, November 25, 2005 [http://tree.celinuxforum.org/CelfPubWiki/JapanTechnicalJamboree5 Japan Technical Jamboree 5]&lt;br /&gt;
*Regional conference in Japan - Tokyo, Japan, September 30, 2005 [http://tree.celinuxforum.org/CelfPubWiki/JapanTechnicalJamboree4 Japan Technical Jamboree 4]&lt;br /&gt;
*Ottawa Linux Symposium - Ottawa, Canada, July 20-23 - [http://www.linuxsymposium.org/ OLS]&lt;br /&gt;
**CELF was a sponsor again this year for the Ottawa Linux Symposium.  We were permitted to show some demos at the event.  CELF held a Birds-of-a-Feather (BOF) session on embedded Linux. Also, CELF  handed out some prizes at the final address.&lt;br /&gt;
*Regional conference in Japan - Tokyo, Japan, July 15, 2005 [[Japan Technical Jamboree 3]]&lt;br /&gt;
*International technical conference - Yokohama, Japan, June 2005 [[International Technical Jamboree]]&lt;br /&gt;
*Regional conference in Korea - Seoul, Korea, May 14, 2005 - [[CELF Korea Tech Conference]]&lt;br /&gt;
*Linux Conf Australia - Canberra, Australia, April 18, 2005&lt;br /&gt;
**A few individuals attended, and Tim put up a poster of bootup-time results&lt;br /&gt;
*CELF Worldwide Technical Conference - San Jose, January 25, 26, 2005&lt;br /&gt;
**Conference program: [http://tree.celinuxforum.org/CelfPubWiki/TechnicalConference2005 CELF Technical Conference 2005]&lt;br /&gt;
**Presentations from various sessions: [http://tree.celinuxforum.org/CelfPubWiki/TechConference2005Docs Tech Conference 2005 Docs]&lt;br /&gt;
*Regional conference  in Japan - December, 2004 - [[Japan Technical Jamboree 2]]&lt;br /&gt;
*Regional conference in Japan - October, 2004 - [[Japan Technical Jamboree]]&lt;br /&gt;
*Ottawa Linux Symposium, July 2004 - Tim gave a talk, and CELF held a BOF and gave out prizes&lt;br /&gt;
**see [http://www.linuxsymposium.org/proceedings/reprints/Reprint-Bird-OLS2004.pdf OLS2004]&lt;br /&gt;
&lt;br /&gt;
== Links to Papers from other events ==&lt;br /&gt;
*Fosdem 2005 embedded kernel papers - [http://www.embedded-kernel-track.org/2005/papers.html FOSDEM]&lt;br /&gt;
*Ottawa Linux Symposium proceedings - [http://www.linuxsymposium.org/proceedings.php OLS]&lt;br /&gt;
** OLS 2007 - broken out paper links - https://ols2006.108.redhat.com/2007/Reprints/&lt;br /&gt;
*OLS proceedings collected on kernel.org - http://kernel.org/doc/ols/&lt;br /&gt;
[[Category:Events]]&lt;/div&gt;</summary>
		<author><name>TimBird</name></author>	</entry>

	<entry>
		<id>http://elinux.org/Events</id>
		<title>Events</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/Events"/>
				<updated>2008-06-27T18:49:58Z</updated>
		
		<summary type="html">&lt;p&gt;TimBird: /* Past events */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Upcoming events ==&lt;br /&gt;
* Regional conference in Japan - Tokyo, Japan, July 4, 2008 - [http://tree.celinuxforum.org/CelfPubWiki/JapanTechnicalJamboree21 Japan Technical Jamboree 21]&lt;br /&gt;
* Ottawa Linux Symposium 2008 - Ottawa, Canada, July 23-26&lt;br /&gt;
** Home page: http://www.linuxsymposium.org/2008/&lt;br /&gt;
* Embedded Linux Conference Europe - Ede, The Netherlands, November 6-7, 2008&lt;br /&gt;
** Home page - http://www.embeddedlinuxconference.com/elc_europe08/index.html&lt;br /&gt;
** Call for Presentations - http://tree.celinuxforum.org/CelfPubWiki/ELCE2008CallForPresentations&lt;br /&gt;
&lt;br /&gt;
== Past events ==&lt;br /&gt;
Some information is at: [[Embedded linux events]]&lt;br /&gt;
&lt;br /&gt;
Here is a list of past CELF events:&lt;br /&gt;
* Regional conference in Japan - Tokyo, Japan, April 25, 2008 - [http://tree.celinuxforum.org/CelfPubWiki/JapanTechnicalJamboree20 Japan Technical Jamboree 20]&lt;br /&gt;
* [[http://www.embeddedlinuxconference.com/elc2008/index.html Embedded Linux Conference, 2008]] - Mountain View, California, USA, April 15-17, 2008&lt;br /&gt;
** [http://www.celinux.org/elc08_presentations/ ELC 2008 Presentations]&lt;br /&gt;
* Regional conference in Japan - Tokyo, Japan, February 21, 2008 - [http://tree.celinuxforum.org/CelfPubWiki/JapanTechnicalJamboree19 Japan Technical Jamboree 19]&lt;br /&gt;
* Regional conference in Korea - Seoul, Japan, February 22, 2008 - [http://tree.celinuxforum.org/CelfPubWiki/KoreaTechJamboree2 Korean Technical Jamboree 2]&lt;br /&gt;
* Regional conference in Japan - Tokyo, Japan, December 21, 2007 - [http://tree.celinuxforum.org/CelfPubWiki/JapanTechnicalJamboree18 Japan Technical Jamboree 18]&lt;br /&gt;
*[http://www.celinux.org/elc2008/index.html Embedded Linux Conference - 2008] - Mountain View, California, USA, April 15-17, 2008&lt;br /&gt;
*[http://www.celinux.org/elc_europe07/elc_europe_index.html Embedded Linux Conference - Europe 2007] - Linz, Austria, November 2-4, 2007&lt;br /&gt;
** Presentations are being collected at: [http://tree.celinuxforum.org/CelfPubWiki/ELCEurope2007Presentations ELC Europe 2007 Presentations]&lt;br /&gt;
* Regional conference in Japan - Tokyo, Japan, October 25, 2007 - [http://tree.celinuxforum.org/CelfPubWiki/JapanTechnicalJamboree17 Japan Technical Jamboree 17]&lt;br /&gt;
*Regional conference in Japan - Tokyo, Japan, August 31, 2007 - [http://tree.celinuxforum.org/CelfPubWiki/JapanTechnicalJamboree16 Japan Technical Jamboree 16]&lt;br /&gt;
*Ottawa Linux Symposium 2007 - Ottawa, Canada, June 27-30, 2007&lt;br /&gt;
** [[Ottawa Linux Symposium 2007]]&lt;br /&gt;
** [[OLS 2007 Embedded Linux BOF]] - June 27&lt;br /&gt;
** [[OLS 2007 Embedded Linux Wiki BOF]] - June 27&lt;br /&gt;
** [[OLS 2007 CELF BOF]] - June 29, 7-9pm, Westin Hotel&lt;br /&gt;
*Regional conference in Japan - Tokyo, Japan, June 29, 2007 - [http://tree.celinuxforum.org/CelfPubWiki/JapanTechnicalJamboree15 Japan Technical Jamboree 15]&lt;br /&gt;
*Embedded System Expo &amp;amp; Conference in Japan - Tokyo, Japan, May 16-18&lt;br /&gt;
*Regional conference in Japan - Tokyo, Japan, April 27, 2007 [http://tree.celinuxforum.org/CelfPubWiki/JapanTechnicalJamboree14 Japan Technical Jamboree 14]&lt;br /&gt;
* Embedded Linux Conference, 2007 - San Jose, California, April 17-19, 2007 [http://www.celinux.org/elc2007/index.html ELC 2007]&lt;br /&gt;
** Presentations are available at http://tree.celinuxforum.org/CelfPubWiki/ELC2007Presentations&lt;br /&gt;
*Regional conference in Japan - Tokyo, Japan, February 22, 2007 - [http://tree.celinuxforum.org/CelfPubWiki/JapanTechnicalJamboree13 Japan Technical Jamboree 13]&lt;br /&gt;
*Regional conference in Japan - Tokyo, Japan, December 8, 2006 - [http://tree.celinuxforum.org/CelfPubWiki/JapanTechnicalJamboree12 Japan Technical Jamboree 12]&lt;br /&gt;
*Embedded Technology 2006 - Yokohama, Japan, November 15..17,&lt;br /&gt;
*Regional conference in Japan - Tokyo, Japan, October 27, 2006 - [http://tree.celinuxforum.org/CelfPubWiki/JapanTechnicalJamboree11 Japan Technical Jamboree 11]&lt;br /&gt;
*Regional conference in Japan - Tokyo, Japan, August 25, 2006 - [http://tree.celinuxforum.org/CelfPubWiki/JapanTechnicalJamboree10 Japan Technical Jamboree 10]&lt;br /&gt;
*GNOME Embedded and Mobile  (GMAE) forum first meetting at Guadec 2006 in Villanova, Spain. Have a look at the report: {{pdf|Gmae-report-for-celf-2006-08-10.pdf|GMAE Report}}&lt;br /&gt;
*Ottawa Linux Symposium 2006 - Ottawa, Canada, July 19-22, 2006&lt;br /&gt;
** We had a great time in Ottawa!  See the following pages for more information:&lt;br /&gt;
** [[Ottawa Linux Symposium 2006]]&lt;br /&gt;
** [http://tree.celinuxforum.org/CelfPubWiki/OLS2006Demos OLS 2006 CELF Demos]&lt;br /&gt;
*Regional conference in Japan - Tokyo, Japan, July 13, 2006 - [http://tree.celinuxforum.org/CelfPubWiki/JapanTechnicalJamboree9 Japan Technical Jamboree 9]&lt;br /&gt;
*Regional conference in Japan - Tokyo, Japan, May 26, 2006 - [http://tree.celinuxforum.org/CelfPubWiki/JapanTechnicalJamboree8 Japan Technical Jamboree 8]&lt;br /&gt;
*CELF Embedded Linux Conference - San Jose, California, April 11-12, 2006 - [http://www.celinux.org/elc2006/index.html elc2006]&lt;br /&gt;
**Presentations from the conference are being collected at: [[ELC 2006 Presentations]]&lt;br /&gt;
*Regional conference in Japan - Tokyo, Japan, March 24, 2006 [http://tree.celinuxforum.org/CelfPubWiki/JapanTechnicalJamboree7 Japan Technical Jamboree 7]&lt;br /&gt;
*Regional conference in Japan - Tokyo, Japan, January 20, 2006 [http://tree.celinuxforum.org/CelfPubWiki/JapanTechnicalJamboree6 Japan Technical Jamboree 6]&lt;br /&gt;
*Regional conference in Japan - Tokyo, Japan, November 25, 2005 [http://tree.celinuxforum.org/CelfPubWiki/JapanTechnicalJamboree5 Japan Technical Jamboree 5]&lt;br /&gt;
*Regional conference in Japan - Tokyo, Japan, September 30, 2005 [http://tree.celinuxforum.org/CelfPubWiki/JapanTechnicalJamboree4 Japan Technical Jamboree 4]&lt;br /&gt;
*Ottawa Linux Symposium - Ottawa, Canada, July 20-23 - [http://www.linuxsymposium.org/ OLS]&lt;br /&gt;
**CELF was a sponsor again this year for the Ottawa Linux Symposium.  We were permitted to show some demos at the event.  CELF held a Birds-of-a-Feather (BOF) session on embedded Linux. Also, CELF  handed out some prizes at the final address.&lt;br /&gt;
*Regional conference in Japan - Tokyo, Japan, July 15, 2005 [[Japan Technical Jamboree 3]]&lt;br /&gt;
*International technical conference - Yokohama, Japan, June 2005 [[International Technical Jamboree]]&lt;br /&gt;
*Regional conference in Korea - Seoul, Korea, May 14, 2005 - [[CELF Korea Tech Conference]]&lt;br /&gt;
*Linux Conf Australia - Canberra, Australia, April 18, 2005&lt;br /&gt;
**A few individuals attended, and Tim put up a poster of bootup-time results&lt;br /&gt;
*CELF Worldwide Technical Conference - San Jose, January 25, 26, 2005&lt;br /&gt;
**Conference program: [http://tree.celinuxforum.org/CelfPubWiki/TechnicalConference2005 CELF Technical Conference 2005]&lt;br /&gt;
**Presentations from various sessions: [http://tree.celinuxforum.org/CelfPubWiki/TechConference2005Docs Tech Conference 2005 Docs]&lt;br /&gt;
*Regional conference  in Japan - December, 2004 - [[Japan Technical Jamboree 2]]&lt;br /&gt;
*Regional conference in Japan - October, 2004 - [[Japan Technical Jamboree]]&lt;br /&gt;
*Ottawa Linux Symposium, July 2004 - Tim gave a talk, and CELF held a BOF and gave out prizes&lt;br /&gt;
**see [http://www.linuxsymposium.org/proceedings/reprints/Reprint-Bird-OLS2004.pdf OLS2004]&lt;br /&gt;
&lt;br /&gt;
== Links to Papers from other events ==&lt;br /&gt;
*Fosdem 2005 embedded kernel papers - [http://www.embedded-kernel-track.org/2005/papers.html FOSDEM]&lt;br /&gt;
*Ottawa Linux Symposium proceedings - [http://www.linuxsymposium.org/proceedings.php OLS]&lt;br /&gt;
** OLS 2007 - broken out paper links - https://ols2006.108.redhat.com/2007/Reprints/&lt;br /&gt;
*OLS proceedings collected on kernel.org - http://kernel.org/doc/ols/&lt;br /&gt;
[[Category:Events]]&lt;/div&gt;</summary>
		<author><name>TimBird</name></author>	</entry>

	<entry>
		<id>http://elinux.org/Events</id>
		<title>Events</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/Events"/>
				<updated>2008-06-27T18:46:52Z</updated>
		
		<summary type="html">&lt;p&gt;TimBird: /* Past events */ fix elc 2008 link&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Upcoming events ==&lt;br /&gt;
* Regional conference in Japan - Tokyo, Japan, July 4, 2008 - [http://tree.celinuxforum.org/CelfPubWiki/JapanTechnicalJamboree21 Japan Technical Jamboree 21]&lt;br /&gt;
* Ottawa Linux Symposium 2008 - Ottawa, Canada, July 23-26&lt;br /&gt;
** Home page: http://www.linuxsymposium.org/2008/&lt;br /&gt;
* Embedded Linux Conference Europe - Ede, The Netherlands, November 6-7, 2008&lt;br /&gt;
** Home page - http://www.embeddedlinuxconference.com/elc_europe08/index.html&lt;br /&gt;
** Call for Presentations - http://tree.celinuxforum.org/CelfPubWiki/ELCE2008CallForPresentations&lt;br /&gt;
&lt;br /&gt;
== Past events ==&lt;br /&gt;
Some information is at: [[Embedded linux events]]&lt;br /&gt;
&lt;br /&gt;
Here is a list of past CELF events:&lt;br /&gt;
* Regional conference in Japan - Tokyo, Japan, April 25, 2008 - [http://tree.celinuxforum.org/CelfPubWiki/JapanTechnicalJamboree20 Japan Technical Jamboree 20]&lt;br /&gt;
* Embedded Linux Conference, 2008 - Mountain View, California, USA, April 15-17, 2008&lt;br /&gt;
** Home page: http://www.embeddedlinuxconference.com/elc2008/index.html&lt;br /&gt;
** [http://tree.celinuxforum.org/CelfPubWiki/ELC2008CallForPresentations Call for sessions]&lt;br /&gt;
* Regional conference in Japan - Tokyo, Japan, February 21, 2008 - [http://tree.celinuxforum.org/CelfPubWiki/JapanTechnicalJamboree19 Japan Technical Jamboree 19]&lt;br /&gt;
* Regional conference in Korea - Seoul, Japan, February 22, 2008 - [http://tree.celinuxforum.org/CelfPubWiki/KoreaTechJamboree2 Korean Technical Jamboree 2]&lt;br /&gt;
* Regional conference in Japan - Tokyo, Japan, December 21, 2007 - [http://tree.celinuxforum.org/CelfPubWiki/JapanTechnicalJamboree18 Japan Technical Jamboree 18]&lt;br /&gt;
*[http://www.celinux.org/elc2008/index.html Embedded Linux Conference - 2008] - Mountain View, California, USA, April 15-17, 2008&lt;br /&gt;
*[http://www.celinux.org/elc_europe07/elc_europe_index.html Embedded Linux Conference - Europe 2007] - Linz, Austria, November 2-4, 2007&lt;br /&gt;
** Presentations are being collected at: [http://tree.celinuxforum.org/CelfPubWiki/ELCEurope2007Presentations ELC Europe 2007 Presentations]&lt;br /&gt;
* Regional conference in Japan - Tokyo, Japan, October 25, 2007 - [http://tree.celinuxforum.org/CelfPubWiki/JapanTechnicalJamboree17 Japan Technical Jamboree 17]&lt;br /&gt;
*Regional conference in Japan - Tokyo, Japan, August 31, 2007 - [http://tree.celinuxforum.org/CelfPubWiki/JapanTechnicalJamboree16 Japan Technical Jamboree 16]&lt;br /&gt;
*Ottawa Linux Symposium 2007 - Ottawa, Canada, June 27-30, 2007&lt;br /&gt;
** [[Ottawa Linux Symposium 2007]]&lt;br /&gt;
** [[OLS 2007 Embedded Linux BOF]] - June 27&lt;br /&gt;
** [[OLS 2007 Embedded Linux Wiki BOF]] - June 27&lt;br /&gt;
** [[OLS 2007 CELF BOF]] - June 29, 7-9pm, Westin Hotel&lt;br /&gt;
*Regional conference in Japan - Tokyo, Japan, June 29, 2007 - [http://tree.celinuxforum.org/CelfPubWiki/JapanTechnicalJamboree15 Japan Technical Jamboree 15]&lt;br /&gt;
*Embedded System Expo &amp;amp; Conference in Japan - Tokyo, Japan, May 16-18&lt;br /&gt;
*Regional conference in Japan - Tokyo, Japan, April 27, 2007 [http://tree.celinuxforum.org/CelfPubWiki/JapanTechnicalJamboree14 Japan Technical Jamboree 14]&lt;br /&gt;
* Embedded Linux Conference, 2007 - San Jose, California, April 17-19, 2007 [http://www.celinux.org/elc2007/index.html ELC 2007]&lt;br /&gt;
** Presentations are available at http://tree.celinuxforum.org/CelfPubWiki/ELC2007Presentations&lt;br /&gt;
*Regional conference in Japan - Tokyo, Japan, February 22, 2007 - [http://tree.celinuxforum.org/CelfPubWiki/JapanTechnicalJamboree13 Japan Technical Jamboree 13]&lt;br /&gt;
*Regional conference in Japan - Tokyo, Japan, December 8, 2006 - [http://tree.celinuxforum.org/CelfPubWiki/JapanTechnicalJamboree12 Japan Technical Jamboree 12]&lt;br /&gt;
*Embedded Technology 2006 - Yokohama, Japan, November 15..17,&lt;br /&gt;
*Regional conference in Japan - Tokyo, Japan, October 27, 2006 - [http://tree.celinuxforum.org/CelfPubWiki/JapanTechnicalJamboree11 Japan Technical Jamboree 11]&lt;br /&gt;
*Regional conference in Japan - Tokyo, Japan, August 25, 2006 - [http://tree.celinuxforum.org/CelfPubWiki/JapanTechnicalJamboree10 Japan Technical Jamboree 10]&lt;br /&gt;
*GNOME Embedded and Mobile  (GMAE) forum first meetting at Guadec 2006 in Villanova, Spain. Have a look at the report: {{pdf|Gmae-report-for-celf-2006-08-10.pdf|GMAE Report}}&lt;br /&gt;
*Ottawa Linux Symposium 2006 - Ottawa, Canada, July 19-22, 2006&lt;br /&gt;
** We had a great time in Ottawa!  See the following pages for more information:&lt;br /&gt;
** [[Ottawa Linux Symposium 2006]]&lt;br /&gt;
** [http://tree.celinuxforum.org/CelfPubWiki/OLS2006Demos OLS 2006 CELF Demos]&lt;br /&gt;
*Regional conference in Japan - Tokyo, Japan, July 13, 2006 - [http://tree.celinuxforum.org/CelfPubWiki/JapanTechnicalJamboree9 Japan Technical Jamboree 9]&lt;br /&gt;
*Regional conference in Japan - Tokyo, Japan, May 26, 2006 - [http://tree.celinuxforum.org/CelfPubWiki/JapanTechnicalJamboree8 Japan Technical Jamboree 8]&lt;br /&gt;
*CELF Embedded Linux Conference - San Jose, California, April 11-12, 2006 - [http://www.celinux.org/elc2006/index.html elc2006]&lt;br /&gt;
**Presentations from the conference are being collected at: [[ELC 2006 Presentations]]&lt;br /&gt;
*Regional conference in Japan - Tokyo, Japan, March 24, 2006 [http://tree.celinuxforum.org/CelfPubWiki/JapanTechnicalJamboree7 Japan Technical Jamboree 7]&lt;br /&gt;
*Regional conference in Japan - Tokyo, Japan, January 20, 2006 [http://tree.celinuxforum.org/CelfPubWiki/JapanTechnicalJamboree6 Japan Technical Jamboree 6]&lt;br /&gt;
*Regional conference in Japan - Tokyo, Japan, November 25, 2005 [http://tree.celinuxforum.org/CelfPubWiki/JapanTechnicalJamboree5 Japan Technical Jamboree 5]&lt;br /&gt;
*Regional conference in Japan - Tokyo, Japan, September 30, 2005 [http://tree.celinuxforum.org/CelfPubWiki/JapanTechnicalJamboree4 Japan Technical Jamboree 4]&lt;br /&gt;
*Ottawa Linux Symposium - Ottawa, Canada, July 20-23 - [http://www.linuxsymposium.org/ OLS]&lt;br /&gt;
**CELF was a sponsor again this year for the Ottawa Linux Symposium.  We were permitted to show some demos at the event.  CELF held a Birds-of-a-Feather (BOF) session on embedded Linux. Also, CELF  handed out some prizes at the final address.&lt;br /&gt;
*Regional conference in Japan - Tokyo, Japan, July 15, 2005 [[Japan Technical Jamboree 3]]&lt;br /&gt;
*International technical conference - Yokohama, Japan, June 2005 [[International Technical Jamboree]]&lt;br /&gt;
*Regional conference in Korea - Seoul, Korea, May 14, 2005 - [[CELF Korea Tech Conference]]&lt;br /&gt;
*Linux Conf Australia - Canberra, Australia, April 18, 2005&lt;br /&gt;
**A few individuals attended, and Tim put up a poster of bootup-time results&lt;br /&gt;
*CELF Worldwide Technical Conference - San Jose, January 25, 26, 2005&lt;br /&gt;
**Conference program: [http://tree.celinuxforum.org/CelfPubWiki/TechnicalConference2005 CELF Technical Conference 2005]&lt;br /&gt;
**Presentations from various sessions: [http://tree.celinuxforum.org/CelfPubWiki/TechConference2005Docs Tech Conference 2005 Docs]&lt;br /&gt;
*Regional conference  in Japan - December, 2004 - [[Japan Technical Jamboree 2]]&lt;br /&gt;
*Regional conference in Japan - October, 2004 - [[Japan Technical Jamboree]]&lt;br /&gt;
*Ottawa Linux Symposium, July 2004 - Tim gave a talk, and CELF held a BOF and gave out prizes&lt;br /&gt;
**see [http://www.linuxsymposium.org/proceedings/reprints/Reprint-Bird-OLS2004.pdf OLS2004]&lt;br /&gt;
&lt;br /&gt;
== Links to Papers from other events ==&lt;br /&gt;
*Fosdem 2005 embedded kernel papers - [http://www.embedded-kernel-track.org/2005/papers.html FOSDEM]&lt;br /&gt;
*Ottawa Linux Symposium proceedings - [http://www.linuxsymposium.org/proceedings.php OLS]&lt;br /&gt;
** OLS 2007 - broken out paper links - https://ols2006.108.redhat.com/2007/Reprints/&lt;br /&gt;
*OLS proceedings collected on kernel.org - http://kernel.org/doc/ols/&lt;br /&gt;
[[Category:Events]]&lt;/div&gt;</summary>
		<author><name>TimBird</name></author>	</entry>

	<entry>
		<id>http://elinux.org/Test_Systems</id>
		<title>Test Systems</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/Test_Systems"/>
				<updated>2008-06-25T21:19:52Z</updated>
		
		<summary type="html">&lt;p&gt;TimBird: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Here is a quick list of different test systems (and test projects) for Linux:&lt;br /&gt;
&lt;br /&gt;
== Test Projects ==&lt;br /&gt;
Clearly, a number of open source projects in this realm exist.  This page intends to collect descriptions and links to these projects&lt;br /&gt;
&lt;br /&gt;
=== Test Automation Tools ===&lt;br /&gt;
&lt;br /&gt;
 * [http://test.kernel.org/autotest Autotest]&lt;br /&gt;
 * [https://testing.108.redhat.com/ Red Hat Test Project]&lt;br /&gt;
&lt;br /&gt;
=== Test Suites ===&lt;br /&gt;
&lt;br /&gt;
 * [http://ltp.sourceforge.net/ Linux Test Project]&lt;br /&gt;
&lt;br /&gt;
=== Static Analysis ===&lt;br /&gt;
&lt;br /&gt;
 * [http://tree.celinuxforum.org/CelfPubWiki/Sparse Sparse]&lt;br /&gt;
 * [http://smatch.sourceforge.net/ Smatch]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Automated kernel compilation results ==&lt;br /&gt;
Here are some locations where automated tests of kernel compilation can be viewed:&lt;br /&gt;
=== L4X ===&lt;br /&gt;
&lt;br /&gt;
* http://l4x.org/k/ - Jan Dittmer's page showing the build status and kernel size of the defconfigs of many architectures.  Running since 2004 or 2005&lt;br /&gt;
&lt;br /&gt;
=== Kautobuild ===&lt;br /&gt;
Kautobuild is Simtec's automated system to build and store results for ARM and MIPS platforms, for every kernel version.  It uses defconfigs for multiple boards, and reports compile errors/warnings, module size, kernel size etc.&lt;br /&gt;
* Kautobuild for ARM - http://armlinux.simtec.co.uk/kautobuild/&lt;br /&gt;
* mail archive version of results is at: http://lists.simtec.co.uk/pipermail/kautobuild/&lt;br /&gt;
* Article about the Simtel site is at: http://www.linuxdevices.com/news/NS4646877354.html (2006)&lt;br /&gt;
&lt;br /&gt;
=== ABAT ===&lt;br /&gt;
ABAT - https://sourceforge.net/projects/abat/&lt;br /&gt;
 - does a download/build/boot regression test for several mainline kernel trees, as soon as new versions are available&lt;br /&gt;
 - test results matrix is available here:&lt;br /&gt;
    - http://ftp.kernel.org/pub/linux/kernel/people/mbligh/abat/regression_matrix.html&lt;/div&gt;</summary>
		<author><name>TimBird</name></author>	</entry>

	<entry>
		<id>http://elinux.org/Test_Systems</id>
		<title>Test Systems</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/Test_Systems"/>
				<updated>2008-06-25T21:19:27Z</updated>
		
		<summary type="html">&lt;p&gt;TimBird: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Here is a quick list of different test systems (and test projects) for Linux:&lt;br /&gt;
&lt;br /&gt;
== Test Projects ==&lt;br /&gt;
Clearly, a number of open source projects in this realm exist.  This page intends to collect descriptions and links to these projects&lt;br /&gt;
&lt;br /&gt;
=== Test Automation Tools ===&lt;br /&gt;
&lt;br /&gt;
 * [http://test.kernel.org/autotest Autotest]&lt;br /&gt;
 * [https://testing.108.redhat.com/ Red Hat Test Project]&lt;br /&gt;
&lt;br /&gt;
=== Test Suites ===&lt;br /&gt;
&lt;br /&gt;
 * [http://ltp.sourceforge.net/ Linux Test Project]&lt;br /&gt;
&lt;br /&gt;
=== Static Analysis ===&lt;br /&gt;
&lt;br /&gt;
 * [http://tree.celinuxforum.org/CelfPubWiki/Sparse Sparse]&lt;br /&gt;
 * [http://smatch.sourceforge.net/ Smatch]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Automated kernel compilation results ==&lt;br /&gt;
Here are some locations where automated tests of kernel compilation can be viewed:&lt;br /&gt;
=== L4X ===&lt;br /&gt;
&lt;br /&gt;
* http://l4x.org/k/ - Jan Dittmer's page showing the build status and kernel size of the defconfigs of many architectures.  Running since 2004 or 2005&lt;br /&gt;
&lt;br /&gt;
=== Kautobuild ==&lt;br /&gt;
Kautobuild is Simtec's automated system to build and store results for ARM and MIPS platforms, for every kernel version.  It uses defconfigs for multiple boards, and reports compile errors/warnings, module size, kernel size etc.&lt;br /&gt;
* Kautobuild for ARM - http://armlinux.simtec.co.uk/kautobuild/&lt;br /&gt;
* mail archive version of results is at: http://lists.simtec.co.uk/pipermail/kautobuild/&lt;br /&gt;
* Article about the Simtel site is at: http://www.linuxdevices.com/news/NS4646877354.html (2006)&lt;br /&gt;
&lt;br /&gt;
=== ABAT ===&lt;br /&gt;
ABAT - https://sourceforge.net/projects/abat/&lt;br /&gt;
 - does a download/build/boot regression test for several mainline kernel trees, as soon as new versions are available&lt;br /&gt;
 - test results matrix is available here:&lt;br /&gt;
    - http://ftp.kernel.org/pub/linux/kernel/people/mbligh/abat/regression_matrix.html&lt;/div&gt;</summary>
		<author><name>TimBird</name></author>	</entry>

	<entry>
		<id>http://elinux.org/Test_Systems</id>
		<title>Test Systems</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/Test_Systems"/>
				<updated>2008-06-25T21:08:44Z</updated>
		
		<summary type="html">&lt;p&gt;TimBird: add links to automated test sites&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Here is a quick list of different test systems (and test projects) for Linux:&lt;br /&gt;
&lt;br /&gt;
This information has also been posted to the OSDL test-tools wiki.&lt;br /&gt;
&lt;br /&gt;
See: http://developer.osdl.org/dev/test_tools/index.php/Test_Projects&lt;br /&gt;
&lt;br /&gt;
There was a testing summit held at [[Linux World]] in San Francisco in August of 2006.&lt;br /&gt;
The minutes from the meeting are at:&lt;br /&gt;
http://lists.osdl.org/pipermail/test-tools/2006-August/000000.html&lt;br /&gt;
&lt;br /&gt;
As a result of the meeting, a mailing list and wiki were created.&lt;br /&gt;
These resources are intended to be used to coordinate the efforts&lt;br /&gt;
of the disparate testing projects in Linux. The list info is at:&lt;br /&gt;
https://lists.osdl.org/mailman/listinfo/test-tools&lt;br /&gt;
&lt;br /&gt;
The wiki is at:&lt;br /&gt;
http://developer.osdl.org/dev/test_tools/index.php/Main_Page&lt;br /&gt;
&lt;br /&gt;
== automated kernel compilation tests ==&lt;br /&gt;
Here are some locations where automated tests of kernel compilation can be viewed:&lt;br /&gt;
* http://l4x.org/k/ - Jan Dittmer's page showing the build status and kernel size of the defconfigs of many architectures.  Running since 2004 or 2005&lt;br /&gt;
* http://lists.simtec.co.uk/pipermail/kautobuild/ - Simtec's archive of build results for ARM and MIPS platforms, for every kernel version.  It uses defconfigs for multiple boards, and reports compile errors/warnings, module size, kernel size etc.&lt;br /&gt;
  &lt;br /&gt;
== old page content ==&lt;br /&gt;
This content was moved to the OSDL test-tools wiki at:&lt;br /&gt;
http://developer.osdl.org/dev/test_tools/index.php/Test_Projects&lt;br /&gt;
&lt;br /&gt;
It is preserved here only temporarily. (TRB - Aug, 2006)&lt;br /&gt;
&lt;br /&gt;
ABAT - https://sourceforge.net/projects/abat/&lt;br /&gt;
 - does a download/build/boot regression test for several mainline kernel trees, as soon as new versions are available&lt;br /&gt;
 - test results matrix is available here:&lt;br /&gt;
    - http://ftp.kernel.org/pub/linux/kernel/people/mbligh/abat/regression_matrix.html&lt;br /&gt;
&lt;br /&gt;
Linux Test Project&lt;br /&gt;
 - http://ltp.sourceforge.net/&lt;br /&gt;
&lt;br /&gt;
CELF's Proposed Test Lab &lt;br /&gt;
  - [[Open Test Lab]]&lt;br /&gt;
&lt;br /&gt;
[[K Auto Build]]  - http://armlinux.simtec.co.uk/index.html&lt;br /&gt;
  - [[KAuto Build]] project for ARM architectures&lt;br /&gt;
  - Article about the site is at: http://www.linuxdevices.com/news/NS4646877354.html&lt;br /&gt;
&lt;br /&gt;
There was a testing summit held &lt;br /&gt;
&lt;br /&gt;
I wanted to report that there was a testing summit held at&lt;br /&gt;
[[Linux World]] in San Francisco a few weeks ago.  I represented&lt;br /&gt;
the CELF test lab effort at the meeting.&lt;br /&gt;
&lt;br /&gt;
[[Category:Community]]&lt;/div&gt;</summary>
		<author><name>TimBird</name></author>	</entry>

	<entry>
		<id>http://elinux.org/Toolbox</id>
		<title>Toolbox</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/Toolbox"/>
				<updated>2008-06-25T20:57:34Z</updated>
		
		<summary type="html">&lt;p&gt;TimBird: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page has information about developing Embedded Linux, including links to toolchains, debuggers and other development tools.  Also, it has links to pages with debugging tips.&lt;br /&gt;
&lt;br /&gt;
== Development Tools ==&lt;br /&gt;
=== Toolchains ===&lt;br /&gt;
* see [[Toolchains]]&lt;br /&gt;
=== Debuggers ===&lt;br /&gt;
* [http://openocd.berlios.de/web/ Open On-Chip Debugger]&lt;br /&gt;
* FIXTHIS - need link for debuggers (DDD, gdb, kgdb, etc.)eclipse&lt;br /&gt;
&lt;br /&gt;
=== Integrated Development Environments === &lt;br /&gt;
* FIXTHIS - need link for IDEs (eclipse, etc.)&lt;br /&gt;
&lt;br /&gt;
=== Tracers and Profilers ===&lt;br /&gt;
* see [[Kernel Trace Systems]]&lt;br /&gt;
&lt;br /&gt;
=== Benchmarks ===&lt;br /&gt;
* see [[Benchmark Programs]]&lt;br /&gt;
&lt;br /&gt;
=== Source Management Tools ===&lt;br /&gt;
There are a number of tools for managing patches, which are useful for different tasks.&lt;br /&gt;
There's now a whole page devoted to this.  See [[Source Management Tools]]&lt;br /&gt;
&lt;br /&gt;
For some simple tools for managing patches, see [[Diff And Patch Tricks]]&lt;br /&gt;
&lt;br /&gt;
=== Test Systems ===&lt;br /&gt;
* See [[Test Systems]]&lt;br /&gt;
&lt;br /&gt;
== Developer Resources ==&lt;br /&gt;
=== Kernel mailing lists, web sites, etc. ===&lt;br /&gt;
* See [[Linux Kernel Resources]]&lt;br /&gt;
&lt;br /&gt;
=== Documentation ===&lt;br /&gt;
* Linux Device Drivers, 3rd edition - http://lwn.net/Kernel/LDD3/&lt;br /&gt;
* Papers from the Ottawa Linux Symposium - broken out - see http://kernel.org/doc/ols/&lt;br /&gt;
&lt;br /&gt;
==== Books ====&lt;br /&gt;
* Embedded Linux System Design and Development - by P. Raghavan, Amol Lad, and Sriram Neelakandan (Hardcover - Dec 21, 2005)&lt;br /&gt;
** This one looks quite good.&lt;br /&gt;
* Embedded Linux Primer: A Practical Real-World Approach - by Christopher Hallinan&lt;br /&gt;
** So does this one.&lt;br /&gt;
* Building Embedded Linux Systems - by Karim Yaghmour&lt;br /&gt;
** This book is a bit dated (the edition I have is from 2003, but it is still a great resource.&lt;br /&gt;
&lt;br /&gt;
=== Code Style Tips ===&lt;br /&gt;
* This section is for good [[Code Styling Tips]]&lt;br /&gt;
&lt;br /&gt;
=== Debugging Tips ===&lt;br /&gt;
* See the [[Kernel Debugging Tips]] page&lt;br /&gt;
* See also [[Debugging Makefiles]]&lt;br /&gt;
&lt;br /&gt;
=== GCC Tips and Tricks ===&lt;br /&gt;
* This section of [[GCC Tips]] is a collection of tips and tricks helpful for embedded developers&lt;br /&gt;
&lt;br /&gt;
== Embedded Linux Distributions ==&lt;br /&gt;
* see [[Embedded Linux Distributions]]&lt;br /&gt;
[[Category:Development Tools]]&lt;/div&gt;</summary>
		<author><name>TimBird</name></author>	</entry>

	<entry>
		<id>http://elinux.org/Toolbox</id>
		<title>Toolbox</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/Toolbox"/>
				<updated>2008-06-25T20:56:56Z</updated>
		
		<summary type="html">&lt;p&gt;TimBird: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page has information about developing Embedded Linux, including links to toolchains, debuggers and other development tools.  Also, it has links to pages with debugging tips.&lt;br /&gt;
&lt;br /&gt;
== Development Tools ==&lt;br /&gt;
=== Toolchains ===&lt;br /&gt;
* see [[Toolchains]]&lt;br /&gt;
=== Debuggers ===&lt;br /&gt;
* [http://openocd.berlios.de/web/ Open On-Chip Debugger]&lt;br /&gt;
* FIXTHIS - need link for debuggers (DDD, gdb, kgdb, etc.)eclipse&lt;br /&gt;
&lt;br /&gt;
=== Integrated Development Environments === &lt;br /&gt;
* FIXTHIS - need link for IDEs (eclipse, etc.)&lt;br /&gt;
&lt;br /&gt;
=== Tracers and Profilers ===&lt;br /&gt;
* see [[Kernel Trace Systems]]&lt;br /&gt;
&lt;br /&gt;
=== Benchmarks ===&lt;br /&gt;
* see [[Benchmark Programs]]&lt;br /&gt;
&lt;br /&gt;
=== Source Management Tools ===&lt;br /&gt;
There are a number of tools for managing patches, which are useful for different tasks.&lt;br /&gt;
There's now a whole page devoted to this.  See [[Source Management Tools]]&lt;br /&gt;
&lt;br /&gt;
=== Test Systems ===&lt;br /&gt;
* See [[Test Systems]]&lt;br /&gt;
&lt;br /&gt;
For some simple tools for managing patches, see [[Diff And Patch Tricks]]&lt;br /&gt;
== Developer Resources ==&lt;br /&gt;
=== Kernel mailing lists, web sites, etc. ===&lt;br /&gt;
* See [[Linux Kernel Resources]]&lt;br /&gt;
&lt;br /&gt;
=== Documentation ===&lt;br /&gt;
* Linux Device Drivers, 3rd edition - http://lwn.net/Kernel/LDD3/&lt;br /&gt;
* Papers from the Ottawa Linux Symposium - broken out - see http://kernel.org/doc/ols/&lt;br /&gt;
&lt;br /&gt;
==== Books ====&lt;br /&gt;
* Embedded Linux System Design and Development - by P. Raghavan, Amol Lad, and Sriram Neelakandan (Hardcover - Dec 21, 2005)&lt;br /&gt;
** This one looks quite good.&lt;br /&gt;
* Embedded Linux Primer: A Practical Real-World Approach - by Christopher Hallinan&lt;br /&gt;
** So does this one.&lt;br /&gt;
* Building Embedded Linux Systems - by Karim Yaghmour&lt;br /&gt;
** This book is a bit dated (the edition I have is from 2003, but it is still a great resource.&lt;br /&gt;
&lt;br /&gt;
=== Code Style Tips ===&lt;br /&gt;
* This section is for good [[Code Styling Tips]]&lt;br /&gt;
&lt;br /&gt;
=== Debugging Tips ===&lt;br /&gt;
* See the [[Kernel Debugging Tips]] page&lt;br /&gt;
* See also [[Debugging Makefiles]]&lt;br /&gt;
&lt;br /&gt;
=== GCC Tips and Tricks ===&lt;br /&gt;
* This section of [[GCC Tips]] is a collection of tips and tricks helpful for embedded developers&lt;br /&gt;
&lt;br /&gt;
== Embedded Linux Distributions ==&lt;br /&gt;
* see [[Embedded Linux Distributions]]&lt;br /&gt;
[[Category:Development Tools]]&lt;/div&gt;</summary>
		<author><name>TimBird</name></author>	</entry>

	<entry>
		<id>http://elinux.org/Squash_Fs</id>
		<title>Squash Fs</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/Squash_Fs"/>
				<updated>2008-06-25T18:44:45Z</updated>
		
		<summary type="html">&lt;p&gt;TimBird: /* File System Performance */ fix lnk to comparisons page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Description ==&lt;br /&gt;
&amp;quot;Squash FS&amp;quot; is the name of a compressed read-only filesystem for Linux. There are a number of such file systems available for Linux, including ROMFS, CRAMFS and SquashFS.&lt;br /&gt;
&lt;br /&gt;
== Rationale ==&lt;br /&gt;
A compressed file system is interesting in embedded systems for reducing the overall size (in flash) of the Linux system.  Squash FS is reported to have better compression capabilities than CRAMFS, which is a very popular &lt;br /&gt;
&lt;br /&gt;
== Resources ==&lt;br /&gt;
=== Projects ===&lt;br /&gt;
The Squash fs home page is at: [http://squashfs.sourceforge.net/ Squash FS]&lt;br /&gt;
&lt;br /&gt;
=== Specifications ===&lt;br /&gt;
There are no specifications on this technology.&lt;br /&gt;
&lt;br /&gt;
== Downloads ==&lt;br /&gt;
=== Patch ===&lt;br /&gt;
*see the Squash fs [http://sourceforge.net/project/showfiles.php?group_id=63835 download page] for latest patches&lt;br /&gt;
&lt;br /&gt;
=== Utility programs ===&lt;br /&gt;
The squashfs file release contains a README, the squashfs patch files, and the squashfs-tools directory (mksquashfs). Please see the INSTALL file for install instructions.&lt;br /&gt;
&lt;br /&gt;
== How To Use ==&lt;br /&gt;
See the Squash FS Howto:&lt;br /&gt;
*[http://artemio.net/projects/linuxdoc/squashfs online version]&lt;br /&gt;
*[[Squash FS Howto]] page (copy of document in this wiki - may be out of date)&lt;br /&gt;
&lt;br /&gt;
== Sample Results ==&lt;br /&gt;
&lt;br /&gt;
Here are brief summaries for 2 large file systems, saved using a variety of file system types.&lt;br /&gt;
&lt;br /&gt;
This information was provided by Phillip Lougher. &lt;br /&gt;
&lt;br /&gt;
=== Ubuntu liveCD compression results ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
   ext3 uncompressed size      1.4 GB&lt;br /&gt;
   ISO9660 uncompressed size   1.3 GB&lt;br /&gt;
   Zisofs compressed size      589.81 MB&lt;br /&gt;
   Cloop compressed size       471.89 MB&lt;br /&gt;
   Squashfs2.0 compressed size 448.58 MB&lt;br /&gt;
   Squashfs2.1 compressed size 448.58 MB&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Damn Small Linux liveCD compression results ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
   ext3 uncompressed size      126 MB&lt;br /&gt;
   CRAMFS compressed size      52.19 MB&lt;br /&gt;
   Squashfs2.0 compressed size 46.52 MB&lt;br /&gt;
   Squashfs2.1 compressed size 46.52 MB&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== File System Performance ===&lt;br /&gt;
There is performance data for these file systems on the page [[Squash Fs Comparisons]]&lt;br /&gt;
&lt;br /&gt;
=== lzma data comparison ===&lt;br /&gt;
Here is some information that was posted recently on the squashfsmailing list by Oleg Vdovikin:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;gt; # du -s target&lt;br /&gt;
&amp;gt; 7836    target&lt;br /&gt;
&amp;gt; # ls -l target.*&lt;br /&gt;
&amp;gt; -rw-r--r--  1 root     root 2842788 Aug 27 17:54 target.cramfs&lt;br /&gt;
&amp;gt; -rwx------  1 root     root 2449408 Jan 26 13:19 target.sqshfs&lt;br /&gt;
&amp;gt; -rwx------  1 root     root 2060288 Jan 26 13:21 target.lzmafs&lt;br /&gt;
&amp;gt; &lt;br /&gt;
&amp;gt;     So, lzma for this filesystem gives 84% of original size. For bigger&lt;br /&gt;
&amp;gt; filesystem I've got 82%.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Future Work/Action Items =&lt;br /&gt;
Here is a list of things that could be worked on for this feature:&lt;br /&gt;
*there was a report in August, 2004 of problems with squashfs on PPC. see [http://sourceforge.net/forum/message.php?msg_id=2735613 here] (at bottom of page)&lt;br /&gt;
*there was a suggestion to use LZMA compression for version 3.0 of squashfs - see [http://sourceforge.net/forum/forum.php?thread_id=1113639&amp;amp;forum_id=215699 here]&lt;br /&gt;
&lt;br /&gt;
== Notes on compression ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
From: John Richard Moser &amp;lt;nigele...@comcast.net&amp;gt;&lt;br /&gt;
Date: Wed, 29 Sep 2004 18:20:11 +0200&lt;br /&gt;
Subject: Re: Compressed filesystems: Better compression?&lt;br /&gt;
&lt;br /&gt;
Matti Aarnio wrote:&lt;br /&gt;
| Compression algorithms are a bit tough to be used in a random access&lt;br /&gt;
| smallish blocks environments. In long streams where you can use megabytes&lt;br /&gt;
| worth of buffer spaces there is no problem is achieving good performance.&lt;br /&gt;
| But do try to do that in an environment where your maximum block size&lt;br /&gt;
| is, say: 4 kB, and you have to start afresh at every block boundary.&lt;br /&gt;
&lt;br /&gt;
Yes of course. I've seen the compressed page cache patch do this and&lt;br /&gt;
get fair peformance (10-20%), though on double size blocks (8KiB) it&lt;br /&gt;
manages almost twice as good (20-50%, averaged around 30% IIRC). Not&lt;br /&gt;
great, but not bad.&lt;br /&gt;
&lt;br /&gt;
On compressed filesystems you can work with 64k or 128k blocks.&lt;br /&gt;
Somewhere around 32-64k is usually optimal; you're not going to see&lt;br /&gt;
great improvements using 1M blocks instead of 512k blocks.&lt;br /&gt;
&lt;br /&gt;
| Whatever algorithms you use, there will always be data sequences that&lt;br /&gt;
| are of maximum entropy, and won't compress. Rather they will be&lt;br /&gt;
| presented in streams as is with a few bytes long wrappers around&lt;br /&gt;
| them.&lt;br /&gt;
&lt;br /&gt;
Yes, an intelligent algorithm decides that if the underlying compression&lt;br /&gt;
algorithm used produces no results, it just marks the block as&lt;br /&gt;
uncompressed and stores it as such. ZLIB does this if the block gets&lt;br /&gt;
bigger. LZMA might not; but higher level intrinsics (block headers)&lt;br /&gt;
could handle that easy (as you said).&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:File Systems]]&lt;/div&gt;</summary>
		<author><name>TimBird</name></author>	</entry>

	<entry>
		<id>http://elinux.org/Boot_Time</id>
		<title>Boot Time</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/Boot_Time"/>
				<updated>2008-06-17T19:40:05Z</updated>
		
		<summary type="html">&lt;p&gt;TimBird: /* Measuring Boot-up Time */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Boot Time includes topics such as Boot Time measurement, Boot Time reduction, and Boot Time analysis.  Boot Time directly impacts the first perception an end user has of a consumer electronic product.  Regardless of how attractive or well designed a consumer electronic device is, the time required to move the device from off to an interactive, usable state is critical to obtaining a positive end user experience.  Turning on a device is Use Case #1.&lt;br /&gt;
&lt;br /&gt;
== Technology/Project Pages ==&lt;br /&gt;
The following are individual pages with information about various technologies relevant to improving Boot Time for Linux.  Some of these describe local patches available on this site.  Others point to projects or patches maintained elsewhere.&lt;br /&gt;
&lt;br /&gt;
=== Measuring Boot-up Time ===&lt;br /&gt;
*[[Printk Times]] - simple system for showing timing information for each printk.&lt;br /&gt;
*[[Kernel Function Trace]] - system for reporting function timings in the kernel.&lt;br /&gt;
*[[Linux Trace Toolkit]] - system for reporting timing data for certain kernel and process events.&lt;br /&gt;
*[http://oprofile.sourceforge.net/news/ Oprofile] - system-wide profiler for Linux.&lt;br /&gt;
*[[Bootchart]] - a tool for performance analysis and visualization of the Linux boot process. Resource utilization and  process information are collected during the user-space portion of the boot process and are later rendered in a PNG, SVG or EPS encoded chart.&lt;br /&gt;
*[http://people.redhat.com/berrange/systemtap/bootprobe/ Bootprobe] - a set of [[System Tap]] scripts for analyzing system bootup.&lt;br /&gt;
* and, let us not forget: &amp;quot;cat /proc/uptime&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[ FIXTHIS - should mention (and publish) sstream here ]&lt;br /&gt;
&lt;br /&gt;
[ FIXTHIS - should also mention initcall_debug (kernel command line option) here - it shows driver init times for many drivers]&lt;br /&gt;
&lt;br /&gt;
=== Technologies and Techniques for Reducing Boot Time ===&lt;br /&gt;
==== Bootloader speedups ====&lt;br /&gt;
*[[Kernel XIP]] - Allow kernel to be executed in-place in ROM or FLASH.&lt;br /&gt;
*[[DMA Copy Of Kernel On Startup]] - Copy kernel from Flash to RAM using DMA&lt;br /&gt;
&lt;br /&gt;
==== Kernel speedups ====&lt;br /&gt;
*[[Disable Console]] - Avoid overhead of console output during system startup.&lt;br /&gt;
*[[RTC No Sync]] - Avoid delay to synchronize system time with RTC clock edge on startup.&lt;br /&gt;
*[[Short IDE Delays]] - Reduce duration of IDE startup delays (this is effective but possibly dangerous).&lt;br /&gt;
*[[Hardcode kernel module info]] - Reduce the overhead of loading a module, by hardcoding some information used for loading the relocation information&lt;br /&gt;
*[[IDE No Probe]] - Force kernel to observe the ide&amp;lt;x&amp;gt;=noprobe option.&lt;br /&gt;
*[[Preset LPJ]] - Allow the use of a preset loops_per_jiffy value.&lt;br /&gt;
*[[Threaded Device Probing]] - Allow drivers to probe devices in parallel.&lt;br /&gt;
&lt;br /&gt;
==== User-space and application speedups ====&lt;br /&gt;
* [[Optimize RC Scripts]] - Reduce overhead of running RC scripts&lt;br /&gt;
* [[Parallel RC Scripts]] - Run RC scripts in parallel instead of sequentially&lt;br /&gt;
* [[Application XIP]] - Allow programs and libraries to be executed in-place in ROM or FLASH&lt;br /&gt;
* [[Pre Linking]] - Avoid cost of runtime linking on first program load&lt;br /&gt;
* GNU_HASH: ~ 50% speed improvement in dynamic linking&lt;br /&gt;
** See http://sourceware.org/ml/binutils/2006-06/msg00418.html&lt;br /&gt;
* [[Application Init Optimizations]] - Improvements in program load and init time via: &lt;br /&gt;
** use of mmap vs. read&lt;br /&gt;
** control over page mapping characteristics.&lt;br /&gt;
&lt;br /&gt;
== Information ==&lt;br /&gt;
*[[Boot-up Time Definition Of Terms]] - definitions of terms &lt;br /&gt;
*[[Kernel Instrumentation]] - lists some known kernel instrumentation tools.  These are of interest for measuring kernel startup time.&lt;br /&gt;
*[[Filesystem Information]] - information about boot-up times with various file systems&lt;br /&gt;
*[[Image:alert.gif]] ''in progress'' - [[Boot-up Time Reduction Howto]] - this is a project to catalog existing boot-up time reduction techniques.  Work on this project is under way.  The wiki will serve as the primary repository of information gathered for this project.&lt;br /&gt;
*[[Image:alert.gif]]''no content yet'' - [[Boot-up Time Delay Taxonomy]] - list of delays categorized by boot phase, type and magnitude&lt;br /&gt;
&lt;br /&gt;
== Articles ==&lt;br /&gt;
* [http://lwn.net/Articles/192082/ Optimizing Linker Load Times]&lt;br /&gt;
** (introducing various kinds of bootuptime reduction, prelinking, etc.)&lt;br /&gt;
&lt;br /&gt;
=== Case Studies ===&lt;br /&gt;
*Samsung proof-of-acceptability study for digital still camera: see [[Media:LinuxBootupTimeReduction4DSC.ppt|Boot Up Time Reduction PPT]]&lt;br /&gt;
*Tim Bird's (Sony) survey of boot-up time reduction techniques:&lt;br /&gt;
**[http://kernel.org/doc/ols/2004/ols2004v1-pages-79-88.pdf Methods to Improve Boot-up Time in Linux] - Paper prepared for 2004 Ottawa Linux Symposium&lt;br /&gt;
**{{pdf|ReducingStartupTime v0.8.pdf|Reducing Startup Time in Embedded Linux Systems}} - December 2003 Presentation describing some existing boot-up time reduction techniques and strategies.&lt;br /&gt;
&lt;br /&gt;
== Additional Projects/Mailing Lists/Resources ==&lt;br /&gt;
=== Kexec ===&lt;br /&gt;
*Kexec is a system which allows a system to be '''rebooted''' without going through BIOS. That is, a Linux kernel can directly boot into another Linux kernel, without going through firmware.  See the white paper at: [http://developer.osdl.org/andyp/kexec/whitepaper/kexec.pdf kexec.pdf]&lt;br /&gt;
**2004 Kernel Summit presentation: [http://www.xenotime.net/linux/fastboot/fastboot-ks-2004.pdf fastboot.pdf]&lt;br /&gt;
**here's another Kexec white paper:[http://www-106.ibm.com/developerworks/linux/library/l-kexec.html?ca=dgr-lnxw04 Reboot Fast]&lt;br /&gt;
&lt;br /&gt;
=== Others ===&lt;br /&gt;
*[http://www.bootsplash.org/ bootspash.org] - technology to put up a splash screen early in boot sequence&lt;br /&gt;
*[http://dev.gentoo.org/~spock/projects/gensplash/ Gentoo Splashscreen] - newer technology to put a splash screen early in the boot sequence&lt;br /&gt;
**see the HOWTO at: [http://gentoo-wiki.com/HOWTO_fbsplash HOWTO FBSplash]&lt;br /&gt;
* [http://butterfeet.org/?p=8 PSplash] - PSplash is a userspace graphical boot splash screen for mainly&lt;br /&gt;
embedded Linux devices supporting a 16bpp or 32bpp framebuffer.&lt;br /&gt;
*[http://www.linuxdevices.com/news/NS5907201615.html FSMLabs Fastboot] - press release by FSMLabs about fast booting of their product. Is any of this published?&lt;br /&gt;
&lt;br /&gt;
*[http://tree.celinuxforum.org/CelfPubWiki/ snapshot boot] - a technology uses software resume to boot up the system quickly.&lt;br /&gt;
[[Category:Boot Time]]&lt;/div&gt;</summary>
		<author><name>TimBird</name></author>	</entry>

	<entry>
		<id>http://elinux.org/Boot_Time</id>
		<title>Boot Time</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/Boot_Time"/>
				<updated>2008-06-17T19:08:26Z</updated>
		
		<summary type="html">&lt;p&gt;TimBird: /* Case Studies */ fix link to Tim Bird's OSL 2004 paper&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Boot Time includes topics such as Boot Time measurement, Boot Time reduction, and Boot Time analysis.  Boot Time directly impacts the first perception an end user has of a consumer electronic product.  Regardless of how attractive or well designed a consumer electronic device is, the time required to move the device from off to an interactive, usable state is critical to obtaining a positive end user experience.  Turning on a device is Use Case #1.&lt;br /&gt;
&lt;br /&gt;
== Technology/Project Pages ==&lt;br /&gt;
The following are individual pages with information about various technologies relevant to improving Boot Time for Linux.  Some of these describe local patches available on this site.  Others point to projects or patches maintained elsewhere.&lt;br /&gt;
&lt;br /&gt;
=== Measuring Boot-up Time ===&lt;br /&gt;
*[[Printk Times]] - simple system for showing timing information for each printk.&lt;br /&gt;
*[[Kernel Function Trace]] - system for reporting function timings in the kernel.&lt;br /&gt;
*[[Linux Trace Toolkit]] - system for reporting timing data for certain kernel and process events.&lt;br /&gt;
*[http://oprofile.sourceforge.net/news/ Oprofile] - system-wide profiler for Linux.&lt;br /&gt;
*[[Bootchart]] - a tool for performance analysis and visualization of the Linux boot process. Resource utilization and  process information are collected during the user-space portion of the boot process and are later rendered in a PNG, SVG or EPS encoded chart.&lt;br /&gt;
*[http://people.redhat.com/berrange/systemtap/bootprobe/ Bootprobe] - a set of [[System Tap]] scripts for analyzing system bootup.&lt;br /&gt;
* and, let us not forget: &amp;quot;cat /proc/uptime&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Technologies and Techniques for Reducing Boot Time ===&lt;br /&gt;
==== Bootloader speedups ====&lt;br /&gt;
*[[Kernel XIP]] - Allow kernel to be executed in-place in ROM or FLASH.&lt;br /&gt;
*[[DMA Copy Of Kernel On Startup]] - Copy kernel from Flash to RAM using DMA&lt;br /&gt;
&lt;br /&gt;
==== Kernel speedups ====&lt;br /&gt;
*[[Disable Console]] - Avoid overhead of console output during system startup.&lt;br /&gt;
*[[RTC No Sync]] - Avoid delay to synchronize system time with RTC clock edge on startup.&lt;br /&gt;
*[[Short IDE Delays]] - Reduce duration of IDE startup delays (this is effective but possibly dangerous).&lt;br /&gt;
*[[Hardcode kernel module info]] - Reduce the overhead of loading a module, by hardcoding some information used for loading the relocation information&lt;br /&gt;
*[[IDE No Probe]] - Force kernel to observe the ide&amp;lt;x&amp;gt;=noprobe option.&lt;br /&gt;
*[[Preset LPJ]] - Allow the use of a preset loops_per_jiffy value.&lt;br /&gt;
*[[Threaded Device Probing]] - Allow drivers to probe devices in parallel.&lt;br /&gt;
&lt;br /&gt;
==== User-space and application speedups ====&lt;br /&gt;
* [[Optimize RC Scripts]] - Reduce overhead of running RC scripts&lt;br /&gt;
* [[Parallel RC Scripts]] - Run RC scripts in parallel instead of sequentially&lt;br /&gt;
* [[Application XIP]] - Allow programs and libraries to be executed in-place in ROM or FLASH&lt;br /&gt;
* [[Pre Linking]] - Avoid cost of runtime linking on first program load&lt;br /&gt;
* GNU_HASH: ~ 50% speed improvement in dynamic linking&lt;br /&gt;
** See http://sourceware.org/ml/binutils/2006-06/msg00418.html&lt;br /&gt;
* [[Application Init Optimizations]] - Improvements in program load and init time via: &lt;br /&gt;
** use of mmap vs. read&lt;br /&gt;
** control over page mapping characteristics.&lt;br /&gt;
&lt;br /&gt;
== Information ==&lt;br /&gt;
*[[Boot-up Time Definition Of Terms]] - definitions of terms &lt;br /&gt;
*[[Kernel Instrumentation]] - lists some known kernel instrumentation tools.  These are of interest for measuring kernel startup time.&lt;br /&gt;
*[[Filesystem Information]] - information about boot-up times with various file systems&lt;br /&gt;
*[[Image:alert.gif]] ''in progress'' - [[Boot-up Time Reduction Howto]] - this is a project to catalog existing boot-up time reduction techniques.  Work on this project is under way.  The wiki will serve as the primary repository of information gathered for this project.&lt;br /&gt;
*[[Image:alert.gif]]''no content yet'' - [[Boot-up Time Delay Taxonomy]] - list of delays categorized by boot phase, type and magnitude&lt;br /&gt;
&lt;br /&gt;
== Articles ==&lt;br /&gt;
* [http://lwn.net/Articles/192082/ Optimizing Linker Load Times]&lt;br /&gt;
** (introducing various kinds of bootuptime reduction, prelinking, etc.)&lt;br /&gt;
&lt;br /&gt;
=== Case Studies ===&lt;br /&gt;
*Samsung proof-of-acceptability study for digital still camera: see [[Media:LinuxBootupTimeReduction4DSC.ppt|Boot Up Time Reduction PPT]]&lt;br /&gt;
*Tim Bird's (Sony) survey of boot-up time reduction techniques:&lt;br /&gt;
**[http://kernel.org/doc/ols/2004/ols2004v1-pages-79-88.pdf Methods to Improve Boot-up Time in Linux] - Paper prepared for 2004 Ottawa Linux Symposium&lt;br /&gt;
**{{pdf|ReducingStartupTime v0.8.pdf|Reducing Startup Time in Embedded Linux Systems}} - December 2003 Presentation describing some existing boot-up time reduction techniques and strategies.&lt;br /&gt;
&lt;br /&gt;
== Additional Projects/Mailing Lists/Resources ==&lt;br /&gt;
=== Kexec ===&lt;br /&gt;
*Kexec is a system which allows a system to be '''rebooted''' without going through BIOS. That is, a Linux kernel can directly boot into another Linux kernel, without going through firmware.  See the white paper at: [http://developer.osdl.org/andyp/kexec/whitepaper/kexec.pdf kexec.pdf]&lt;br /&gt;
**2004 Kernel Summit presentation: [http://www.xenotime.net/linux/fastboot/fastboot-ks-2004.pdf fastboot.pdf]&lt;br /&gt;
**here's another Kexec white paper:[http://www-106.ibm.com/developerworks/linux/library/l-kexec.html?ca=dgr-lnxw04 Reboot Fast]&lt;br /&gt;
&lt;br /&gt;
=== Others ===&lt;br /&gt;
*[http://www.bootsplash.org/ bootspash.org] - technology to put up a splash screen early in boot sequence&lt;br /&gt;
*[http://dev.gentoo.org/~spock/projects/gensplash/ Gentoo Splashscreen] - newer technology to put a splash screen early in the boot sequence&lt;br /&gt;
**see the HOWTO at: [http://gentoo-wiki.com/HOWTO_fbsplash HOWTO FBSplash]&lt;br /&gt;
* [http://butterfeet.org/?p=8 PSplash] - PSplash is a userspace graphical boot splash screen for mainly&lt;br /&gt;
embedded Linux devices supporting a 16bpp or 32bpp framebuffer.&lt;br /&gt;
*[http://www.linuxdevices.com/news/NS5907201615.html FSMLabs Fastboot] - press release by FSMLabs about fast booting of their product. Is any of this published?&lt;br /&gt;
&lt;br /&gt;
*[http://tree.celinuxforum.org/CelfPubWiki/ snapshot boot] - a technology uses software resume to boot up the system quickly.&lt;br /&gt;
[[Category:Boot Time]]&lt;/div&gt;</summary>
		<author><name>TimBird</name></author>	</entry>

	<entry>
		<id>http://elinux.org/Debugging_Makefiles</id>
		<title>Debugging Makefiles</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/Debugging_Makefiles"/>
				<updated>2008-06-13T20:08:55Z</updated>
		
		<summary type="html">&lt;p&gt;TimBird: add remake&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Here is some information on debugging Makefiles:&lt;br /&gt;
&lt;br /&gt;
== showing symbol values, and showing file dependencies ==&lt;br /&gt;
There's a good Dr. Dobbs article on this topic, by John Graham-Cumming, at:&lt;br /&gt;
* [http://www.ddj.com/development-tools/197003338 Debugging Makefiles]&lt;br /&gt;
or printable, all-in-one page, at&lt;br /&gt;
http://www.embedded.com/columns/technicalinsights/197003517?printable=true&lt;br /&gt;
&lt;br /&gt;
This article describes some macros you can put in your Makefiles to show&lt;br /&gt;
you the values of symbols, and to show the dependencies that led to a particular&lt;br /&gt;
target being built.  This is handy if you have a complex Makefile that you&lt;br /&gt;
are trying to debug.&lt;br /&gt;
&lt;br /&gt;
== Makefile Debugger ==&lt;br /&gt;
John has also written a Makefile Debugger.&lt;br /&gt;
&lt;br /&gt;
The following articles describe the debugger and how to use it:&lt;br /&gt;
* [http://www.cmcrossroads.com/content/view/6479/120/ An Interactive GNU Make Debugger]&lt;br /&gt;
* [http://www.cmcrossroads.com/content/view/6529/120/ Dynamic Breakpoints in the GNU Make Debugger]&lt;br /&gt;
&lt;br /&gt;
The following resources are needed to use the debugger:&lt;br /&gt;
&lt;br /&gt;
* Download gmsl (a library of gnu make stuff), from http://gmsl.sf.net/&lt;br /&gt;
* Download gmd (the debugger itself), from http://gmd.sf.net/&lt;br /&gt;
&lt;br /&gt;
Expand the tarballs from these, and place __gmsl, gmsl and gmd in the&lt;br /&gt;
directory with the Makefile you wish to debug.&lt;br /&gt;
&lt;br /&gt;
Add the following lines to your Makefile:&lt;br /&gt;
 include gdm&lt;br /&gt;
&lt;br /&gt;
and&lt;br /&gt;
&lt;br /&gt;
 all:&lt;br /&gt;
         $(__BREAKPOINT)&lt;br /&gt;
&lt;br /&gt;
== remake ==&lt;br /&gt;
&amp;quot;remake&amp;quot;, is &amp;quot;A patched GNU make with a debuger,&lt;br /&gt;
better tracing and error reporting&amp;quot; (based on GNU make 3.80).&lt;br /&gt;
&lt;br /&gt;
See: http://sourceforge.net/projects/bashdb/&lt;br /&gt;
&lt;br /&gt;
Development seems to have stopped, though.&lt;br /&gt;
&lt;br /&gt;
== Debugging a kernel build ==&lt;br /&gt;
=== Verbose options ===&lt;br /&gt;
There are several Kernel makefile tricks which are helpful for debugging a kernel build.&lt;br /&gt;
&lt;br /&gt;
Try &amp;quot;make V=1 [&amp;lt;rest of make args...&amp;gt;]&amp;quot; to see all the full-length commands used to build the kernel.&lt;br /&gt;
&lt;br /&gt;
Sometimes, if a particular step is breaking and you don't understand why, you can copy-and-paste from&lt;br /&gt;
this verbose command output (to the shell command line).  To do this you need to make sure you are in&lt;br /&gt;
the correct source directory, and that all required files are present.&lt;br /&gt;
&lt;br /&gt;
To see why a particular target is being build, use &amp;quot;make V=2&amp;quot;.&lt;br /&gt;
This is quite useful when a small change results in much more being build than you expected.&lt;br /&gt;
&lt;br /&gt;
=== Building in a separate directory ===&lt;br /&gt;
Use the variable KBUILD_OUTPUT either as an environment variable or on the make command line, if you wish&lt;br /&gt;
to put the build output into a separate directory from the source.  This can be useful for several reasons, including &lt;br /&gt;
when you want to build for multiple architectures from the same source, or when you wish to avoid cluttering up&lt;br /&gt;
the source tree with object files, libraries and other generated files (to make diffs easier).&lt;/div&gt;</summary>
		<author><name>TimBird</name></author>	</entry>

	<entry>
		<id>http://elinux.org/Debugging_Makefiles</id>
		<title>Debugging Makefiles</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/Debugging_Makefiles"/>
				<updated>2008-06-13T19:32:00Z</updated>
		
		<summary type="html">&lt;p&gt;TimBird: add kernel makefile tips&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Here is some information on debugging Makefiles:&lt;br /&gt;
&lt;br /&gt;
== showing symbol values, and showing file dependencies ==&lt;br /&gt;
There's a good Dr. Dobbs article on this topic, by John Graham-Cumming, at:&lt;br /&gt;
* [http://www.ddj.com/development-tools/197003338 Debugging Makefiles]&lt;br /&gt;
or printable, all-in-one page, at&lt;br /&gt;
http://www.embedded.com/columns/technicalinsights/197003517?printable=true&lt;br /&gt;
&lt;br /&gt;
This article describes some macros you can put in your Makefiles to show&lt;br /&gt;
you the values of symbols, and to show the dependencies that led to a particular&lt;br /&gt;
target being built.  This is handy if you have a complex Makefile that you&lt;br /&gt;
are trying to debug.&lt;br /&gt;
&lt;br /&gt;
== Makefile Debugger ==&lt;br /&gt;
John has also written a Makefile Debugger.&lt;br /&gt;
&lt;br /&gt;
The following articles describe the debugger and how to use it:&lt;br /&gt;
* [http://www.cmcrossroads.com/content/view/6479/120/ An Interactive GNU Make Debugger]&lt;br /&gt;
* [http://www.cmcrossroads.com/content/view/6529/120/ Dynamic Breakpoints in the GNU Make Debugger]&lt;br /&gt;
&lt;br /&gt;
The following resources are needed to use the debugger:&lt;br /&gt;
&lt;br /&gt;
* Download gmsl (a library of gnu make stuff), from http://gmsl.sf.net/&lt;br /&gt;
* Download gmd (the debugger itself), from http://gmd.sf.net/&lt;br /&gt;
&lt;br /&gt;
Expand the tarballs from these, and place __gmsl, gmsl and gmd in the&lt;br /&gt;
directory with the Makefile you wish to debug.&lt;br /&gt;
&lt;br /&gt;
Add the following lines to your Makefile:&lt;br /&gt;
 include gdm&lt;br /&gt;
&lt;br /&gt;
and&lt;br /&gt;
&lt;br /&gt;
 all:&lt;br /&gt;
         $(__BREAKPOINT)&lt;br /&gt;
&lt;br /&gt;
== Debugging a kernel build ==&lt;br /&gt;
=== Verbose options ===&lt;br /&gt;
There are several Kernel makefile tricks which are helpful for debugging a kernel build.&lt;br /&gt;
&lt;br /&gt;
Try &amp;quot;make V=1 [&amp;lt;rest of make args...&amp;gt;]&amp;quot; to see all the full-length commands used to build the kernel.&lt;br /&gt;
&lt;br /&gt;
Sometimes, if a particular step is breaking and you don't understand why, you can copy-and-paste from&lt;br /&gt;
this verbose command output (to the shell command line).  To do this you need to make sure you are in&lt;br /&gt;
the correct source directory, and that all required files are present.&lt;br /&gt;
&lt;br /&gt;
To see why a particular target is being build, use &amp;quot;make V=2&amp;quot;.&lt;br /&gt;
This is quite useful when a small change results in much more being build than you expected.&lt;br /&gt;
&lt;br /&gt;
=== Building in a separate directory ===&lt;br /&gt;
Use the variable KBUILD_OUTPUT either as an environment variable or on the make command line, if you wish&lt;br /&gt;
to put the build output into a separate directory from the source.  This can be useful for several reasons, including &lt;br /&gt;
when you want to build for multiple architectures from the same source, or when you wish to avoid cluttering up&lt;br /&gt;
the source tree with object files, libraries and other generated files (to make diffs easier).&lt;/div&gt;</summary>
		<author><name>TimBird</name></author>	</entry>

	<entry>
		<id>http://elinux.org/Debugging_Makefiles</id>
		<title>Debugging Makefiles</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/Debugging_Makefiles"/>
				<updated>2008-06-13T18:34:07Z</updated>
		
		<summary type="html">&lt;p&gt;TimBird: /* Makefile Debugger */ re-arrange links&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Here is some information on debugging Makefiles:&lt;br /&gt;
&lt;br /&gt;
== showing symbol values, and showing file dependencies ==&lt;br /&gt;
There's a good Dr. Dobbs article on this topic, by John Graham-Cumming, at:&lt;br /&gt;
* [http://www.ddj.com/development-tools/197003338 Debugging Makefiles]&lt;br /&gt;
or printable, all-in-one page, at&lt;br /&gt;
http://www.embedded.com/columns/technicalinsights/197003517?printable=true&lt;br /&gt;
&lt;br /&gt;
This article describes some macros you can put in your Makefiles to show&lt;br /&gt;
you the values of symbols, and to show the dependencies that led to a particular&lt;br /&gt;
target being built.  This is handy if you have a complex Makefile that you&lt;br /&gt;
are trying to debug.&lt;br /&gt;
&lt;br /&gt;
== Makefile Debugger ==&lt;br /&gt;
John has also written a Makefile Debugger.&lt;br /&gt;
&lt;br /&gt;
The following articles describe the debugger and how to use it:&lt;br /&gt;
* [http://www.cmcrossroads.com/content/view/6479/120/ An Interactive GNU Make Debugger]&lt;br /&gt;
* [http://www.cmcrossroads.com/content/view/6529/120/ Dynamic Breakpoints in the GNU Make Debugger]&lt;br /&gt;
&lt;br /&gt;
The following resources are needed to use the debugger:&lt;br /&gt;
&lt;br /&gt;
* Download gmsl (a library of gnu make stuff), from http://gmsl.sf.net/&lt;br /&gt;
* Download gmd (the debugger itself), from http://gmd.sf.net/&lt;br /&gt;
&lt;br /&gt;
Expand the tarballs from these, and place __gmsl, gmsl and gmd in the&lt;br /&gt;
directory with the Makefile you wish to debug.&lt;br /&gt;
&lt;br /&gt;
Add the following lines to your Makefile:&lt;br /&gt;
 include gdm&lt;br /&gt;
&lt;br /&gt;
and&lt;br /&gt;
&lt;br /&gt;
 all:&lt;br /&gt;
         $(__BREAKPOINT)&lt;/div&gt;</summary>
		<author><name>TimBird</name></author>	</entry>

	<entry>
		<id>http://elinux.org/Debugging_Makefiles</id>
		<title>Debugging Makefiles</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/Debugging_Makefiles"/>
				<updated>2008-06-13T18:33:18Z</updated>
		
		<summary type="html">&lt;p&gt;TimBird: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Here is some information on debugging Makefiles:&lt;br /&gt;
&lt;br /&gt;
== showing symbol values, and showing file dependencies ==&lt;br /&gt;
There's a good Dr. Dobbs article on this topic, by John Graham-Cumming, at:&lt;br /&gt;
* [http://www.ddj.com/development-tools/197003338 Debugging Makefiles]&lt;br /&gt;
or printable, all-in-one page, at&lt;br /&gt;
http://www.embedded.com/columns/technicalinsights/197003517?printable=true&lt;br /&gt;
&lt;br /&gt;
This article describes some macros you can put in your Makefiles to show&lt;br /&gt;
you the values of symbols, and to show the dependencies that led to a particular&lt;br /&gt;
target being built.  This is handy if you have a complex Makefile that you&lt;br /&gt;
are trying to debug.&lt;br /&gt;
&lt;br /&gt;
== Makefile Debugger ==&lt;br /&gt;
John has also written a Makefile Debugger.&lt;br /&gt;
The following resources are needed to use this debugger:&lt;br /&gt;
&lt;br /&gt;
* Download gmsl (a library of gnu make stuff), from http://gmsl.sf.net/&lt;br /&gt;
* Download gmd (the debugger itself), from http://gmd.sf.net/&lt;br /&gt;
&lt;br /&gt;
Expand the tarballs from these, and place __gmsl, gmsl and gmd in the&lt;br /&gt;
directory with the Makefile you wish to debug.&lt;br /&gt;
&lt;br /&gt;
Add the following lines to your Makefile:&lt;br /&gt;
 include gdm&lt;br /&gt;
&lt;br /&gt;
and&lt;br /&gt;
&lt;br /&gt;
 all:&lt;br /&gt;
         $(__BREAKPOINT)&lt;br /&gt;
&lt;br /&gt;
See the following articles for more information:&lt;br /&gt;
* [http://www.cmcrossroads.com/content/view/6479/120/ An Interactive GNU Make Debugger]&lt;br /&gt;
* [http://www.cmcrossroads.com/content/view/6529/120/ Dynamic Breakpoints in the GNU Make Debugger]&lt;/div&gt;</summary>
		<author><name>TimBird</name></author>	</entry>

	<entry>
		<id>http://elinux.org/Debugging_Makefiles</id>
		<title>Debugging Makefiles</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/Debugging_Makefiles"/>
				<updated>2008-06-13T18:28:05Z</updated>
		
		<summary type="html">&lt;p&gt;TimBird: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Here is some information on debugging Makefiles:&lt;br /&gt;
&lt;br /&gt;
There's a good Dr. Dobbs article on this topic, by John Graham-Cumming, at:&lt;br /&gt;
* [http://www.ddj.com/development-tools/197003338 Debugging Makefiles]&lt;br /&gt;
or printable, all-in-one page, at&lt;br /&gt;
http://www.embedded.com/columns/technicalinsights/197003517?printable=true&lt;br /&gt;
&lt;br /&gt;
John has also written a Makefile Debugger.&lt;br /&gt;
The following resources are needed to use this debugger:&lt;br /&gt;
&lt;br /&gt;
* Download gmsl (a library of gnu make stuff), from http://gmsl.sf.net/&lt;br /&gt;
* Download gmd (the debugger itself), from http://gmd.sf.net/&lt;br /&gt;
&lt;br /&gt;
Expand the tarballs from these, and place __gmsl, gmsl and gmd in the&lt;br /&gt;
directory with the Makefile you wish to debug.&lt;br /&gt;
&lt;br /&gt;
Add the following lines to your Makefile:&lt;br /&gt;
 include gdm&lt;br /&gt;
&lt;br /&gt;
and&lt;br /&gt;
&lt;br /&gt;
 all:&lt;br /&gt;
         $(__BREAKPOINT)&lt;br /&gt;
&lt;br /&gt;
See the following articles for more information:&lt;br /&gt;
* [http://www.cmcrossroads.com/content/view/6479/120/ An Interactive GNU Make Debugger]&lt;br /&gt;
* [http://www.cmcrossroads.com/content/view/6529/120/ Dynamic Breakpoints in the GNU Make Debugger]&lt;/div&gt;</summary>
		<author><name>TimBird</name></author>	</entry>

	<entry>
		<id>http://elinux.org/Debugging_Makefiles</id>
		<title>Debugging Makefiles</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/Debugging_Makefiles"/>
				<updated>2008-06-13T18:27:39Z</updated>
		
		<summary type="html">&lt;p&gt;TimBird: create page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Here is some information on debugging Makefiles:&lt;br /&gt;
&lt;br /&gt;
There's a good Dr. Dobbs article on this topic, by John Graham-Cumming, at:&lt;br /&gt;
* [http://www.ddj.com/development-tools/197003338 Debugging Makefiles]&lt;br /&gt;
or printable, all-in-one page, at&lt;br /&gt;
http://www.embedded.com/columns/technicalinsights/197003517?printable=true&lt;br /&gt;
&lt;br /&gt;
John has also written a Makefile Debugger.&lt;br /&gt;
The following resources are needed to use this debugger:&lt;br /&gt;
&lt;br /&gt;
* Download gmsl (a library of gnu make stuff), from http://gmsl.sf.net/&lt;br /&gt;
* Download gmd (the debugger itself), from http://gmd.sf.net/&lt;br /&gt;
&lt;br /&gt;
Explode the tarballs from these, and place __gmsl, gmsl and gmd in the&lt;br /&gt;
directory with the Makefile you wish to debug.&lt;br /&gt;
&lt;br /&gt;
Add the following lines to your Makefile:&lt;br /&gt;
 include gdm&lt;br /&gt;
&lt;br /&gt;
and&lt;br /&gt;
&lt;br /&gt;
 all:&lt;br /&gt;
         $(__BREAKPOINT)&lt;br /&gt;
&lt;br /&gt;
See the following articles for more information:&lt;br /&gt;
* [http://www.cmcrossroads.com/content/view/6479/120/ An Interactive GNU Make Debugger]&lt;br /&gt;
* [http://www.cmcrossroads.com/content/view/6529/120/ Dynamic Breakpoints in the GNU Make Debugger]&lt;/div&gt;</summary>
		<author><name>TimBird</name></author>	</entry>

	<entry>
		<id>http://elinux.org/Toolbox</id>
		<title>Toolbox</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/Toolbox"/>
				<updated>2008-06-13T18:08:43Z</updated>
		
		<summary type="html">&lt;p&gt;TimBird: /* Debugging Tips */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page has information about developing Embedded Linux, including links to toolchains, debuggers and other development tools.  Also, it has links to pages with debugging tips.&lt;br /&gt;
&lt;br /&gt;
== Development Tools ==&lt;br /&gt;
=== Toolchains ===&lt;br /&gt;
* see [[Toolchains]]&lt;br /&gt;
=== Debuggers ===&lt;br /&gt;
* [http://openocd.berlios.de/web/ Open On-Chip Debugger]&lt;br /&gt;
* FIXTHIS - need link for debuggers (DDD, gdb, kgdb, etc.)eclipse&lt;br /&gt;
&lt;br /&gt;
=== Integrated Development Environments === &lt;br /&gt;
* FIXTHIS - need link for IDEs (eclipse, etc.)&lt;br /&gt;
&lt;br /&gt;
=== Tracers and Profilers ===&lt;br /&gt;
* see [[Kernel Trace Systems]]&lt;br /&gt;
&lt;br /&gt;
=== Benchmarks ===&lt;br /&gt;
* see [[Benchmark Programs]]&lt;br /&gt;
&lt;br /&gt;
=== Source Management Tools ===&lt;br /&gt;
There are a number of tools for managing patches, which are useful for different tasks.&lt;br /&gt;
There's now a whole page devoted to this.  See [[Source Management Tools]]&lt;br /&gt;
&lt;br /&gt;
For some simple tools for managing patches, see [[Diff And Patch Tricks]]&lt;br /&gt;
== Developer Resources ==&lt;br /&gt;
=== Kernel mailing lists, web sites, etc. ===&lt;br /&gt;
* See [[Linux Kernel Resources]]&lt;br /&gt;
&lt;br /&gt;
=== Documentation ===&lt;br /&gt;
* Linux Device Drivers, 3rd edition - http://lwn.net/Kernel/LDD3/&lt;br /&gt;
* Papers from the Ottawa Linux Symposium - broken out - see http://kernel.org/doc/ols/&lt;br /&gt;
&lt;br /&gt;
==== Books ====&lt;br /&gt;
* Embedded Linux System Design and Development - by P. Raghavan, Amol Lad, and Sriram Neelakandan (Hardcover - Dec 21, 2005)&lt;br /&gt;
** This one looks quite good.&lt;br /&gt;
* Embedded Linux Primer: A Practical Real-World Approach - by Christopher Hallinan&lt;br /&gt;
** So does this one.&lt;br /&gt;
* Building Embedded Linux Systems - by Karim Yaghmour&lt;br /&gt;
** This book is a bit dated (the edition I have is from 2003, but it is still a great resource.&lt;br /&gt;
&lt;br /&gt;
=== Code Style Tips ===&lt;br /&gt;
* This section is for good [[Code Styling Tips]]&lt;br /&gt;
&lt;br /&gt;
=== Debugging Tips ===&lt;br /&gt;
* See the [[Kernel Debugging Tips]] page&lt;br /&gt;
* See also [[Debugging Makefiles]]&lt;br /&gt;
&lt;br /&gt;
=== GCC Tips and Tricks ===&lt;br /&gt;
* This section of [[GCC Tips]] is a collection of tips and tricks helpful for embedded developers&lt;br /&gt;
&lt;br /&gt;
== Embedded Linux Distributions ==&lt;br /&gt;
* see [[Embedded Linux Distributions]]&lt;br /&gt;
[[Category:Development Tools]]&lt;/div&gt;</summary>
		<author><name>TimBird</name></author>	</entry>

	<entry>
		<id>http://elinux.org/Toolchains</id>
		<title>Toolchains</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/Toolchains"/>
				<updated>2008-06-13T17:24:57Z</updated>
		
		<summary type="html">&lt;p&gt;TimBird: /* Available Toolchains */ add info on embedded debian toolchains&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A [http://en.wikipedia.org/wiki/Toolchain toolchain] is a set of distinct software development tools that are linked (or chained) together by specific stages such as GCC, binutils and glibc (a portion of the [http://en.wikipedia.org/wiki/GNU_Toolchain GNU Toolchain]). Optionally, a toolchain may contain other tools such as a [http://en.wikipedia.org/wiki/Debugger Debugger] or a [http://en.wikipedia.org/wiki/Compiler Compiler] for a specific programming language, such as ,[http://en.wikipedia.org/wiki/C%2B%2B C++]. Quite often, the toolchain used for embedded development is a cross toolchain, or more commonly known as a [http://en.wikipedia.org/wiki/Cross_compiler cross compiler].  All the programs (like GCC) run on a host system of a specific architecture (such as x86) but produce binary code (executables) to run on a different architecture (e.g. ARM). This is called cross compilation and is the typical way of building embedded software. It is possible to compile natively, running gcc on your target.  Before searching for a prebuilt toolchain or building your own, it's worth checking to see if one is included with your target hardware's [http://en.wikipedia.org/wiki/Board_support_package Board Support Package (BSP)] if you have one.&lt;br /&gt;
&lt;br /&gt;
== Note about C libraries ==&lt;br /&gt;
Realistically, there are two options for the C Library: [http://en.wikipedia.org/wiki/Uclibc uClibc] &amp;amp; [http://en.wikipedia.org/wiki/Glibc glibc]. GLibc is what your PC is probably using. It's a bit of a brute, very powerful but a bit bloated. If flash space and memory footprint is an issue, using uClibc is likely to be the better option. However, the space advantages gained using uClibc are becoming less important as the price of memory &amp;amp; flash continues to drop. There are a few &amp;quot;gotcha&amp;quot;s when using uClibc. At time of writing(uClibc 0.9.28), locales are a bit ropey and the new Application Binary Interface (ABI) for ARM architectures (EABI) introduced with GCC 4.1.1 requires patches to be applied. This situation is likely to get better quickly as uClibc is under heavy development.&lt;br /&gt;
&lt;br /&gt;
== Available Toolchains ==&lt;br /&gt;
Creating a cross development toolchain from sources can be a real pain. There are version dependency issues, patches required to make something work etc. etc. Check out the [http://kegel.com/crosstool/crosstool-0.43/buildlogs/ build matrix] for crosstool and look at all the red &amp;quot;failed&amp;quot; entries. Fortunately, there are several groups of people who have done all the hard work for you, producing scripts to create a toolchain or releases of binary toolchains.&lt;br /&gt;
&lt;br /&gt;
=== DENX ELDK ===&lt;br /&gt;
The DENX Embedded Linux Development Kit (ELDK) provides a complete and powerful software development environment for embedded and real-time systems. It is available for ARM, PowerPC and MIPS processors and consists of:&lt;br /&gt;
&lt;br /&gt;
    * Cross Development Tools (Compiler, Assembler, Linker etc.) to develop software for the target system.&lt;br /&gt;
    * Native Tools (Shell, commands and libraries) which provide a standard Linux development environment that runs on the target system.&lt;br /&gt;
    * Firmware that can be easily ported to new boards and processors.&lt;br /&gt;
    * Linux kernel including the complete source-code with all device drivers, board-support functions etc.&lt;br /&gt;
    * RTAI (Real Time Application Interface) Extension for systems requiring hard real-time responses.&lt;br /&gt;
    * SELF (Simple Embedded Linux Framework) as fundament to build your embedded systems on.&lt;br /&gt;
&lt;br /&gt;
All components of the ELDK are available for free with complete source code under GPL and other Free Software Licenses. Also, detailed instructions to rebuild all the tools and packages from scratch are included.&lt;br /&gt;
&lt;br /&gt;
The ELDK can be downloaded for free from several mirror sites or ordered on CD-ROM for a nominal charge (99 Euro). To order the CD please contact office@denx.de&lt;br /&gt;
&lt;br /&gt;
Detailed information about the ELDK is available [http://www.denx.de/wiki/DULG/ELDK here].&lt;br /&gt;
&lt;br /&gt;
=== Buildroot ===&lt;br /&gt;
Buildroot is a complete build system based on the Linux Kernel configuration system and supports a wide range of target architectures. It generates root file system images ready to be written to flash. In addition to having a huge number of packages which can be compiled into the image, it also generates a cross toolchain to build those packages from source. Even if you don't want to use buildroot for your root filesystem, it is a useful tool for generating a toolchain. It should be noted however that it only supports uClibc. If you want to use glibc, you'll need something else. Link: [http://buildroot.uclibc.org/ Buildroot homepage]&lt;br /&gt;
&lt;br /&gt;
=== Scratchbox ===&lt;br /&gt;
Scratchbox provides toolchains for ARM and x86 target architectures (with PowerPC, MIPS and CRIS in experimental stages). Both uClibc &amp;amp; glibc are supported. Scratchbox simplifies cross compiling software which is built using GNU autotools - Code tests performed by configure are run in an emulator or even on the actual target. The toolchains scratchbox ships with are based on gcc 3.3 and as such are quite old, but stable and well tested. It should be pointed out that scripts to build custom toolchains are also provided with scratchbox allowing more recent gcc versions to be used. Link: [http://www.scratchbox.org/ Scratchbox]&lt;br /&gt;
&lt;br /&gt;
=== Crossdev (Gentoo) ===&lt;br /&gt;
Crossdev is specific to developers using Gentoo for their development PCs. It is a script which generates a cross toolchain using the portage build scripts for gcc etc. There are numerous architectures which are supported and both uClibc and glibc toolchains can be built. Link: [http://gentoo-wiki.com/HOWTO_Cross_Compile Gentoo Cross-Compile HOWTO]&lt;br /&gt;
&lt;br /&gt;
=== Crosstool ===&lt;br /&gt;
Crosstool is a script which downloads source tar-balls and builds simple gcc/glibc cross toolchains. There is a build matrix which shows which versions of gcc/glibc work together with various architectures ([http://kegel.com/crosstool/crosstool-0.43/buildlogs/ link]). The inclusion of this matrix makes it easy to select which versions of gcc/glibc should be used to generate a toolchain for a particular architecture. Link: [http://kegel.com/crosstool/ Crosstool]&lt;br /&gt;
&lt;br /&gt;
=== Crosstool-NG ===&lt;br /&gt;
Crosstool-NG is a fork of crosstool, targeted at easier configuration, re-factored code, and a learning base on how toolchains are built, with support for both uClibc and glibc, for debug tools (gdb, strace, dmalloc...), and a wide range of versions for each tools. Different target architectures are supported as well. Link: [http://ymorin.is-a-geek.org/dokuwiki/projects/crosstool crosstool-NG]&lt;br /&gt;
&lt;br /&gt;
=== CodeSourcery ===&lt;br /&gt;
[http://www.codesourcery.com/ CodeSourcery] develops [http://www.codesourcery.com/gnu_toolchains/sgpp/ Sourcery G++], an [http://en.wikipedia.org/wiki/Eclipse_IDE Eclipse] based [http://en.wikipedia.org/wiki/Integrated_development_environment Integrated Development Environment (IDE)] that incorporates the [http://en.wikipedia.org/wiki/GNU_toolchain GNU Toolchain] (gcc, gdb, etc.) for cross development for numerous target architectures. [http://www.codesourcery.com/ CodeSourcery] provides a &amp;quot;lite&amp;quot; version for [http://www.codesourcery.com/gnu_toolchains/arm ARM], [http://www.codesourcery.com/gnu_toolchains/coldfire Coldfire], [http://www.codesourcery.com/gnu_toolchains/mips MIPS] and [http://www.codesourcery.com/gnu_toolchains/power Power] architectures. The toolchains are always very up to date. [http://www.codesourcery.com/ CodeSourcery] contributes enhancements it makes to the [http://en.wikipedia.org/wiki/GNU_toolchain GNU Toolchain] upstream continually, making it the single largest (by patch count) corporate contributor.&lt;br /&gt;
&lt;br /&gt;
=== Crossdev/tsrpm (Timesys) ===&lt;br /&gt;
Crossdev is a project sponsored by Timesys, completely unrelated to the Gentoo cross toolchain generation system. The projects main focus is on a tool called tsrpm which is used to build cross development toolchains and generate cross-compiled software packages. Currently only x86 and select PowerPC architectures are supported. Link: [https://crossdev.timesys.com/ Crossdev]&lt;br /&gt;
&lt;br /&gt;
=== Fedora ARM ===&lt;br /&gt;
Fedora ARM is a try to port Fedora to ARM.&lt;br /&gt;
It provides some tools as an ARM toolchain packaged in RPM format.&lt;br /&gt;
Link: [http://fedoraproject.org/wiki/Architectures/ARM Fedora ARM]&lt;br /&gt;
&lt;br /&gt;
=== Embedded Debian cross-tools packages ===&lt;br /&gt;
Paraphrasing Wookey (from a post on the linux-embedded mailing list):&lt;br /&gt;
[For Debian users, the toolchains problem] is fairly reliably solved.&lt;br /&gt;
&lt;br /&gt;
For a debian-based box just install pre-built cross toolchians from emdebian:&lt;br /&gt;
http://www.emdebian.org/tools/crosstools.html&lt;br /&gt;
(from i386, amd64, powerpc; to: nearly all debian-supported&lt;br /&gt;
architectures, gcc3.3, 3.4, 4.1, 4.2, 4.3)&lt;br /&gt;
&lt;br /&gt;
http://www.emdebian.org/toolchains/search.php?section=devel gives more&lt;br /&gt;
details.&lt;br /&gt;
&lt;br /&gt;
emdebian-tools also provides the debian equivalent of crosstool&lt;br /&gt;
('emchain' to build your own version of current toolchain,&lt;br /&gt;
should a suitable pre-built one not exist.&lt;br /&gt;
&lt;br /&gt;
[[Category:Development Tools]]&lt;/div&gt;</summary>
		<author><name>TimBird</name></author>	</entry>

	<entry>
		<id>http://elinux.org/Kernel_Debugging_Tips</id>
		<title>Kernel Debugging Tips</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/Kernel_Debugging_Tips"/>
				<updated>2008-06-13T16:13:24Z</updated>
		
		<summary type="html">&lt;p&gt;TimBird: /* Using CONFIG_DEBUG_LL and printascii() */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Here are some miscellaneous tips for debugging a kernel:&lt;br /&gt;
&lt;br /&gt;
== Debugging early boot problems ==&lt;br /&gt;
=== Accessing the printk buffer after a silent hang on boot ===&lt;br /&gt;
Sometimes, if the kernel hangs early in the boot process, you get no&lt;br /&gt;
messages on the console before the hang.  However, there may still&lt;br /&gt;
be messages in the printk buffer, which can give you an idea of&lt;br /&gt;
where the problem is.&lt;br /&gt;
&lt;br /&gt;
The kernel starts putting messages into the printk buffer as soon&lt;br /&gt;
as it starts.  They stay buffered there until the console code&lt;br /&gt;
has a chance to initialize the console device (often the serial&lt;br /&gt;
port for embedded devices).  Eve though these messages&lt;br /&gt;
are no printed before the hang, it is still possible in some circumstances&lt;br /&gt;
to dump the printk buffer and see the messages.&lt;br /&gt;
&lt;br /&gt;
Quinn Jensen writes:&lt;br /&gt;
&lt;br /&gt;
Something I've found handy when the console is&lt;br /&gt;
silent is to dump the printk buffer from the boot&lt;br /&gt;
loader.  To do it you have to know how your boot&lt;br /&gt;
loader maps memory compared to the kernel.&lt;br /&gt;
&lt;br /&gt;
==== Redboot example on a Freescale ADS board ====&lt;br /&gt;
Quinn says: Here's what I do with Redboot on i.MX31:&lt;br /&gt;
&lt;br /&gt;
 fgrep printk_buf System.map&lt;br /&gt;
&lt;br /&gt;
this shows the linked address of the printk_buf, e.g.:&lt;br /&gt;
&lt;br /&gt;
 c02338f0 b printk_buf.16194&lt;br /&gt;
&lt;br /&gt;
The address &amp;quot;c02338f0&amp;quot; is in kernel virtual, which,&lt;br /&gt;
in the case of i.MX31 ADS, redboot will have mapped&lt;br /&gt;
to 0x802338f0.  So, after resetting the target board,&lt;br /&gt;
but without letting it try to boot again, at the redboot&lt;br /&gt;
prompt,&lt;br /&gt;
&lt;br /&gt;
 dump -b 0x802338f0 -l 10000&lt;br /&gt;
&lt;br /&gt;
And you see the printk buffer that never got flushed&lt;br /&gt;
to the UART.  Knowing what's there can be '''very'''&lt;br /&gt;
useful in debugging your console.&lt;br /&gt;
&lt;br /&gt;
==== U-boot example on an OMAP OSK board ====&lt;br /&gt;
Tim Bird tried these steps and they worked:&lt;br /&gt;
&lt;br /&gt;
 grep __log_buf System.map&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
 grep __log_buf /proc/kallsyms&lt;br /&gt;
&lt;br /&gt;
These show:&lt;br /&gt;
&lt;br /&gt;
 c0352d88 B __log_buf&lt;br /&gt;
&lt;br /&gt;
In the case of the OSK, this address maps to&lt;br /&gt;
0x10352d88.  So I reset the target board and use the following:&lt;br /&gt;
&lt;br /&gt;
 OMAP5912 OSK # md 10352d88&lt;br /&gt;
 10352d88: 4c3e353c 78756e69 72657620 6e6f6973    &amp;lt;5&amp;gt;Linux version&lt;br /&gt;
 10352d98: 362e3220 2e32322e 612d3631 6e5f706c     2.6.22.16-alp_n&lt;br /&gt;
 10352da8: 7428206c 64726962 6d697440 6b736564    l (tbird@timdesk&lt;br /&gt;
 10352db8: 2e6d612e 796e6f73 6d6f632e 67282029    .am.sony.com) (g&lt;br /&gt;
 10352dc8: 76206363 69737265 33206e6f 342e342e    cc version 3.4.4&lt;br /&gt;
 10352dd8: 34232029 45525020 54504d45 65755420    ) #4 PREEMPT Tue&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
=== Using CONFIG_DEBUG_LL and printascii() (ARM only) ===&lt;br /&gt;
If the kernel fails before the serial console is enabled, you can use CONFIG_DEBUG_LL&lt;br /&gt;
to add extra debug output routines to the kernel.  These are printascii, printch and printhex.&lt;br /&gt;
These routines print directly to the serial port, bypassing the console code, and are available&lt;br /&gt;
earlier in machine initialization.&lt;br /&gt;
&lt;br /&gt;
Here is an e-mail exchange seen on the linux-embedded mailing list (with answer by George Davis):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;gt; When we try to boot a 2.6.21 kernel after uncompressing the kernel the boot process dies somehow.&lt;br /&gt;
&amp;gt; We've figured out so far that the kernel dies somewhere between  the gunzip and start_kernel.&lt;br /&gt;
&lt;br /&gt;
Try enabling DEBUG_LL to see if it's an machine ID error.  If you see:&lt;br /&gt;
&lt;br /&gt;
Error: unrecognized/unsupported processor variant.&lt;br /&gt;
&lt;br /&gt;
or:&lt;br /&gt;
&lt;br /&gt;
Error: unrecognized/unsupported machine ID...&lt;br /&gt;
&lt;br /&gt;
Then you either don't have proper processor support enabled for your target&lt;br /&gt;
or your bootloader is passing in the wrong machine number.&lt;br /&gt;
&lt;br /&gt;
If you still don't see anything, try hacking printk.c to call&lt;br /&gt;
printascii() (enabled for the DEBUG_LL case) to print directly to the&lt;br /&gt;
serial port w/o a driver, etc.,.  You can find more details on these&lt;br /&gt;
low-level debugging hacks via a little googling...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Triggering a kernel event ==&lt;br /&gt;
=== overloading the sync system call ===&lt;br /&gt;
Sometimes, it is nice to trigger an event to happen in the kernel from user space.&lt;br /&gt;
Instead of creating infrastructure to handle a /proc event, an ioctl() or making a new syscall,&lt;br /&gt;
it can be quick and easy to just overload an existing function.  One function not used&lt;br /&gt;
very often is sync.   (I have found that the sync system call is not normally called by user&lt;br /&gt;
space programs (or during standard linux booting). &lt;br /&gt;
&lt;br /&gt;
It is quite easy to put a hook to your own kernel program in the sys_sync() routine&lt;br /&gt;
(located in fs/sync.c) and cause it to execute by issuing 'sync' from the shell command line.&lt;br /&gt;
This is handy as a temporary mechanism to test things that you have put in the kernel.&lt;br /&gt;
[[Category:Development Tools]]&lt;/div&gt;</summary>
		<author><name>TimBird</name></author>	</entry>

	<entry>
		<id>http://elinux.org/Kernel_Debugging_Tips</id>
		<title>Kernel Debugging Tips</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/Kernel_Debugging_Tips"/>
				<updated>2008-06-13T16:05:06Z</updated>
		
		<summary type="html">&lt;p&gt;TimBird: put in overloading sync tip&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Here are some miscellaneous tips for debugging a kernel:&lt;br /&gt;
&lt;br /&gt;
== Debugging early boot problems ==&lt;br /&gt;
=== Accessing the printk buffer after a silent hang on boot ===&lt;br /&gt;
Sometimes, if the kernel hangs early in the boot process, you get no&lt;br /&gt;
messages on the console before the hang.  However, there may still&lt;br /&gt;
be messages in the printk buffer, which can give you an idea of&lt;br /&gt;
where the problem is.&lt;br /&gt;
&lt;br /&gt;
The kernel starts putting messages into the printk buffer as soon&lt;br /&gt;
as it starts.  They stay buffered there until the console code&lt;br /&gt;
has a chance to initialize the console device (often the serial&lt;br /&gt;
port for embedded devices).  Eve though these messages&lt;br /&gt;
are no printed before the hang, it is still possible in some circumstances&lt;br /&gt;
to dump the printk buffer and see the messages.&lt;br /&gt;
&lt;br /&gt;
Quinn Jensen writes:&lt;br /&gt;
&lt;br /&gt;
Something I've found handy when the console is&lt;br /&gt;
silent is to dump the printk buffer from the boot&lt;br /&gt;
loader.  To do it you have to know how your boot&lt;br /&gt;
loader maps memory compared to the kernel.&lt;br /&gt;
&lt;br /&gt;
==== Redboot example on a Freescale ADS board ====&lt;br /&gt;
Quinn says: Here's what I do with Redboot on i.MX31:&lt;br /&gt;
&lt;br /&gt;
 fgrep printk_buf System.map&lt;br /&gt;
&lt;br /&gt;
this shows the linked address of the printk_buf, e.g.:&lt;br /&gt;
&lt;br /&gt;
 c02338f0 b printk_buf.16194&lt;br /&gt;
&lt;br /&gt;
The address &amp;quot;c02338f0&amp;quot; is in kernel virtual, which,&lt;br /&gt;
in the case of i.MX31 ADS, redboot will have mapped&lt;br /&gt;
to 0x802338f0.  So, after resetting the target board,&lt;br /&gt;
but without letting it try to boot again, at the redboot&lt;br /&gt;
prompt,&lt;br /&gt;
&lt;br /&gt;
 dump -b 0x802338f0 -l 10000&lt;br /&gt;
&lt;br /&gt;
And you see the printk buffer that never got flushed&lt;br /&gt;
to the UART.  Knowing what's there can be '''very'''&lt;br /&gt;
useful in debugging your console.&lt;br /&gt;
&lt;br /&gt;
==== U-boot example on an OMAP OSK board ====&lt;br /&gt;
Tim Bird tried these steps and they worked:&lt;br /&gt;
&lt;br /&gt;
 grep __log_buf System.map&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
 grep __log_buf /proc/kallsyms&lt;br /&gt;
&lt;br /&gt;
These show:&lt;br /&gt;
&lt;br /&gt;
 c0352d88 B __log_buf&lt;br /&gt;
&lt;br /&gt;
In the case of the OSK, this address maps to&lt;br /&gt;
0x10352d88.  So I reset the target board and use the following:&lt;br /&gt;
&lt;br /&gt;
 OMAP5912 OSK # md 10352d88&lt;br /&gt;
 10352d88: 4c3e353c 78756e69 72657620 6e6f6973    &amp;lt;5&amp;gt;Linux version&lt;br /&gt;
 10352d98: 362e3220 2e32322e 612d3631 6e5f706c     2.6.22.16-alp_n&lt;br /&gt;
 10352da8: 7428206c 64726962 6d697440 6b736564    l (tbird@timdesk&lt;br /&gt;
 10352db8: 2e6d612e 796e6f73 6d6f632e 67282029    .am.sony.com) (g&lt;br /&gt;
 10352dc8: 76206363 69737265 33206e6f 342e342e    cc version 3.4.4&lt;br /&gt;
 10352dd8: 34232029 45525020 54504d45 65755420    ) #4 PREEMPT Tue&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
=== Using CONFIG_DEBUG_LL and printascii() ===&lt;br /&gt;
If the kernel fails before the serial console is enabled, you can use CONFIG_DEBUG_LL&lt;br /&gt;
to change the way the printk code outputs characters.&lt;br /&gt;
&lt;br /&gt;
Here is an e-mail exchange seen on the linux-embedded mailing list (with answer by George Davis):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;gt; When we try to boot a 2.6.21 kernel after uncompressing the kernel the boot process dies somehow.&lt;br /&gt;
&amp;gt; We've figured out so far that the kernel dies somewhere between  the gunzip and start_kernel.&lt;br /&gt;
&lt;br /&gt;
Try enabling DEBUG_LL to see if it's an machine ID error.  If you see:&lt;br /&gt;
&lt;br /&gt;
Error: unrecognized/unsupported processor variant.&lt;br /&gt;
&lt;br /&gt;
or:&lt;br /&gt;
&lt;br /&gt;
Error: unrecognized/unsupported machine ID...&lt;br /&gt;
&lt;br /&gt;
Then you either don't have proper processor support enabled for your target&lt;br /&gt;
or your bootloader is passing in the wrong machine number.&lt;br /&gt;
&lt;br /&gt;
If you still don't see anything, try hacking printk.c to call&lt;br /&gt;
printascii() (enabled for the DEBUG_LL case) to print directly to the&lt;br /&gt;
serial port w/o a driver, etc.,.  You can find more details on these&lt;br /&gt;
low-level debugging hacks via a little googling...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Triggering a kernel event ==&lt;br /&gt;
=== overloading the sync system call ===&lt;br /&gt;
Sometimes, it is nice to trigger an event to happen in the kernel from user space.&lt;br /&gt;
Instead of creating infrastructure to handle a /proc event, an ioctl() or making a new syscall,&lt;br /&gt;
it can be quick and easy to just overload an existing function.  One function not used&lt;br /&gt;
very often is sync.   (I have found that the sync system call is not normally called by user&lt;br /&gt;
space programs (or during standard linux booting). &lt;br /&gt;
&lt;br /&gt;
It is quite easy to put a hook to your own kernel program in the sys_sync() routine&lt;br /&gt;
(located in fs/sync.c) and cause it to execute by issuing 'sync' from the shell command line.&lt;br /&gt;
This is handy as a temporary mechanism to test things that you have put in the kernel.&lt;br /&gt;
[[Category:Development Tools]]&lt;/div&gt;</summary>
		<author><name>TimBird</name></author>	</entry>

	<entry>
		<id>http://elinux.org/Kernel_Debugging_Tips</id>
		<title>Kernel Debugging Tips</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/Kernel_Debugging_Tips"/>
				<updated>2008-06-13T16:00:02Z</updated>
		
		<summary type="html">&lt;p&gt;TimBird: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Here are some miscellaneous tips for debugging a kernel:&lt;br /&gt;
&lt;br /&gt;
== Debugging early boot problems ==&lt;br /&gt;
=== Accessing the printk buffer after a silent hang on boot ===&lt;br /&gt;
Sometimes, if the kernel hangs early in the boot process, you get no&lt;br /&gt;
messages on the console before the hang.  However, there may still&lt;br /&gt;
be messages in the printk buffer, which can give you an idea of&lt;br /&gt;
where the problem is.&lt;br /&gt;
&lt;br /&gt;
The kernel starts putting messages into the printk buffer as soon&lt;br /&gt;
as it starts.  They stay buffered there until the console code&lt;br /&gt;
has a chance to initialize the console device (often the serial&lt;br /&gt;
port for embedded devices).  Eve though these messages&lt;br /&gt;
are no printed before the hang, it is still possible in some circumstances&lt;br /&gt;
to dump the printk buffer and see the messages.&lt;br /&gt;
&lt;br /&gt;
Quinn Jensen writes:&lt;br /&gt;
&lt;br /&gt;
Something I've found handy when the console is&lt;br /&gt;
silent is to dump the printk buffer from the boot&lt;br /&gt;
loader.  To do it you have to know how your boot&lt;br /&gt;
loader maps memory compared to the kernel.&lt;br /&gt;
&lt;br /&gt;
==== Redboot example on a Freescale ADS board ====&lt;br /&gt;
Quinn says: Here's what I do with Redboot on i.MX31:&lt;br /&gt;
&lt;br /&gt;
 fgrep printk_buf System.map&lt;br /&gt;
&lt;br /&gt;
this shows the linked address of the printk_buf, e.g.:&lt;br /&gt;
&lt;br /&gt;
 c02338f0 b printk_buf.16194&lt;br /&gt;
&lt;br /&gt;
The address &amp;quot;c02338f0&amp;quot; is in kernel virtual, which,&lt;br /&gt;
in the case of i.MX31 ADS, redboot will have mapped&lt;br /&gt;
to 0x802338f0.  So, after resetting the target board,&lt;br /&gt;
but without letting it try to boot again, at the redboot&lt;br /&gt;
prompt,&lt;br /&gt;
&lt;br /&gt;
 dump -b 0x802338f0 -l 10000&lt;br /&gt;
&lt;br /&gt;
And you see the printk buffer that never got flushed&lt;br /&gt;
to the UART.  Knowing what's there can be '''very'''&lt;br /&gt;
useful in debugging your console.&lt;br /&gt;
&lt;br /&gt;
==== U-boot example on an OMAP OSK board ====&lt;br /&gt;
Tim Bird tried these steps and they worked:&lt;br /&gt;
&lt;br /&gt;
 grep __log_buf System.map&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
 grep __log_buf /proc/kallsyms&lt;br /&gt;
&lt;br /&gt;
These show:&lt;br /&gt;
&lt;br /&gt;
 c0352d88 B __log_buf&lt;br /&gt;
&lt;br /&gt;
In the case of the OSK, this address maps to&lt;br /&gt;
0x10352d88.  So I reset the target board and use the following:&lt;br /&gt;
&lt;br /&gt;
 OMAP5912 OSK # md 10352d88&lt;br /&gt;
 10352d88: 4c3e353c 78756e69 72657620 6e6f6973    &amp;lt;5&amp;gt;Linux version&lt;br /&gt;
 10352d98: 362e3220 2e32322e 612d3631 6e5f706c     2.6.22.16-alp_n&lt;br /&gt;
 10352da8: 7428206c 64726962 6d697440 6b736564    l (tbird@timdesk&lt;br /&gt;
 10352db8: 2e6d612e 796e6f73 6d6f632e 67282029    .am.sony.com) (g&lt;br /&gt;
 10352dc8: 76206363 69737265 33206e6f 342e342e    cc version 3.4.4&lt;br /&gt;
 10352dd8: 34232029 45525020 54504d45 65755420    ) #4 PREEMPT Tue&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
=== Using CONFIG_DEBUG_LL and printascii() ===&lt;br /&gt;
If the kernel fails before the serial console is enabled, you can use CONFIG_DEBUG_LL&lt;br /&gt;
to change the way the printk code outputs characters.&lt;br /&gt;
&lt;br /&gt;
Here is an e-mail exchange seen on the linux-embedded mailing list (with answer by George Davis):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;gt; When we try to boot a 2.6.21 kernel after uncompressing the kernel the boot process dies somehow.&lt;br /&gt;
&amp;gt; We've figured out so far that the kernel dies somewhere between  the gunzip and start_kernel.&lt;br /&gt;
&lt;br /&gt;
Try enabling DEBUG_LL to see if it's an machine ID error.  If you see:&lt;br /&gt;
&lt;br /&gt;
Error: unrecognized/unsupported processor variant.&lt;br /&gt;
&lt;br /&gt;
or:&lt;br /&gt;
&lt;br /&gt;
Error: unrecognized/unsupported machine ID...&lt;br /&gt;
&lt;br /&gt;
Then you either don't have proper processor support enabled for your target&lt;br /&gt;
or your bootloader is passing in the wrong machine number.&lt;br /&gt;
&lt;br /&gt;
If you still don't see anything, try hacking printk.c to call&lt;br /&gt;
printascii() (enabled for the DEBUG_LL case) to print directly to the&lt;br /&gt;
serial port w/o a driver, etc.,.  You can find more details on these&lt;br /&gt;
low-level debugging hacks via a little googling...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
[[Category:Development Tools]]&lt;/div&gt;</summary>
		<author><name>TimBird</name></author>	</entry>

	<entry>
		<id>http://elinux.org/Kernel_Debugging_Tips</id>
		<title>Kernel Debugging Tips</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/Kernel_Debugging_Tips"/>
				<updated>2008-06-13T15:58:49Z</updated>
		
		<summary type="html">&lt;p&gt;TimBird: add DEBUG_LL info&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Here are some miscellaneous tips for debugging a kernel:&lt;br /&gt;
&lt;br /&gt;
== Accessing the printk buffer after a silent hang on boot ==&lt;br /&gt;
Sometimes, if the kernel hangs early in the boot process, you get no&lt;br /&gt;
messages on the console before the hang.  However, there may still&lt;br /&gt;
be messages in the printk buffer, which can give you an idea of&lt;br /&gt;
where the problem is.&lt;br /&gt;
&lt;br /&gt;
The kernel starts putting messages into the printk buffer as soon&lt;br /&gt;
as it starts.  They stay buffered there until the console code&lt;br /&gt;
has a chance to initialize the console device (often the serial&lt;br /&gt;
port for embedded devices).  Eve though these messages&lt;br /&gt;
are no printed before the hang, it is still possible in some circumstances&lt;br /&gt;
to dump the printk buffer and see the messages.&lt;br /&gt;
&lt;br /&gt;
Quinn Jensen writes:&lt;br /&gt;
&lt;br /&gt;
Something I've found handy when the console is&lt;br /&gt;
silent is to dump the printk buffer from the boot&lt;br /&gt;
loader.  To do it you have to know how your boot&lt;br /&gt;
loader maps memory compared to the kernel.&lt;br /&gt;
&lt;br /&gt;
=== Redboot example on a Freescale ADS board ===&lt;br /&gt;
Quinn says: Here's what I do with Redboot on i.MX31:&lt;br /&gt;
&lt;br /&gt;
 fgrep printk_buf System.map&lt;br /&gt;
&lt;br /&gt;
this shows the linked address of the printk_buf, e.g.:&lt;br /&gt;
&lt;br /&gt;
 c02338f0 b printk_buf.16194&lt;br /&gt;
&lt;br /&gt;
The address &amp;quot;c02338f0&amp;quot; is in kernel virtual, which,&lt;br /&gt;
in the case of i.MX31 ADS, redboot will have mapped&lt;br /&gt;
to 0x802338f0.  So, after resetting the target board,&lt;br /&gt;
but without letting it try to boot again, at the redboot&lt;br /&gt;
prompt,&lt;br /&gt;
&lt;br /&gt;
 dump -b 0x802338f0 -l 10000&lt;br /&gt;
&lt;br /&gt;
And you see the printk buffer that never got flushed&lt;br /&gt;
to the UART.  Knowing what's there can be '''very'''&lt;br /&gt;
useful in debugging your console.&lt;br /&gt;
&lt;br /&gt;
=== U-boot example on an OMAP OSK board ===&lt;br /&gt;
Tim Bird tried these steps and they worked:&lt;br /&gt;
&lt;br /&gt;
 grep __log_buf System.map&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
 grep __log_buf /proc/kallsyms&lt;br /&gt;
&lt;br /&gt;
These show:&lt;br /&gt;
&lt;br /&gt;
 c0352d88 B __log_buf&lt;br /&gt;
&lt;br /&gt;
In the case of the OSK, this address maps to&lt;br /&gt;
0x10352d88.  So I reset the target board and use the following:&lt;br /&gt;
&lt;br /&gt;
 OMAP5912 OSK # md 10352d88&lt;br /&gt;
 10352d88: 4c3e353c 78756e69 72657620 6e6f6973    &amp;lt;5&amp;gt;Linux version&lt;br /&gt;
 10352d98: 362e3220 2e32322e 612d3631 6e5f706c     2.6.22.16-alp_n&lt;br /&gt;
 10352da8: 7428206c 64726962 6d697440 6b736564    l (tbird@timdesk&lt;br /&gt;
 10352db8: 2e6d612e 796e6f73 6d6f632e 67282029    .am.sony.com) (g&lt;br /&gt;
 10352dc8: 76206363 69737265 33206e6f 342e342e    cc version 3.4.4&lt;br /&gt;
 10352dd8: 34232029 45525020 54504d45 65755420    ) #4 PREEMPT Tue&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
== Debugging very early boot problems ==&lt;br /&gt;
If the kernel fails before the serial console is enabled, you can use CONFIG_DEBUG_LL&lt;br /&gt;
to change the way the printk code outputs characters.&lt;br /&gt;
&lt;br /&gt;
Here is an e-mail exchange seen on the linux-embedded mailing list (with answer by George Davis):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;gt; When we try to boot a 2.6.21 kernel after uncompressing the kernel the boot process dies somehow.&lt;br /&gt;
&amp;gt; We've figured out so far that the kernel dies somewhere between  the gunzip and start_kernel.&lt;br /&gt;
&lt;br /&gt;
Try enabling DEBUG_LL to see if it's an machine ID error.  If you see:&lt;br /&gt;
&lt;br /&gt;
Error: unrecognized/unsupported processor variant.&lt;br /&gt;
&lt;br /&gt;
or:&lt;br /&gt;
&lt;br /&gt;
Error: unrecognized/unsupported machine ID...&lt;br /&gt;
&lt;br /&gt;
Then you either don't have proper processor support enabled for your target&lt;br /&gt;
or your bootloader is passing in the wrong machine number.&lt;br /&gt;
&lt;br /&gt;
If you still don't see anything, try hacking printk.c to call&lt;br /&gt;
printascii() (enabled for the DEBUG_LL case) to print directly to the&lt;br /&gt;
serial port w/o a driver, etc.,.  You can find more details on these&lt;br /&gt;
low-level debugging hacks via a little googling...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
[[Category:Development Tools]]&lt;/div&gt;</summary>
		<author><name>TimBird</name></author>	</entry>

	<entry>
		<id>http://elinux.org/Kernel_Function_Trace</id>
		<title>Kernel Function Trace</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/Kernel_Function_Trace"/>
				<updated>2008-06-12T21:20:17Z</updated>
		
		<summary type="html">&lt;p&gt;TimBird: /* kft log output (excerpt) */ upload sample kfi log&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
Kernel Function Trace (KFT) is a kernel function tracing system, which uses the &amp;quot;-finstrument-functions&amp;quot; capability of the gcc compiler to add&lt;br /&gt;
instrumentation callouts to every function entry and exit.  The KFT system provides for capturing these callouts and generating a trace of events, with&lt;br /&gt;
timing details.  KFT is excellent at providing a good timing overview of kernel procedures, allowing you to see where time is spent in functions and&lt;br /&gt;
sub-routines in the kernel.&lt;br /&gt;
&lt;br /&gt;
The main mode of operation with KFT is to use the system with a dynamic trace configuration. That is, you can set a trace configuration after kernel&lt;br /&gt;
startup, using the &amp;lt;code&amp;gt;/proc/kft&amp;lt;/code&amp;gt; interface, and retrieve trace data immediately. However, another (special) mode of operation is available, called STATIC_RUN&lt;br /&gt;
mode, where the configuration for a KFT run is configured and compiled statically into the kernel.  This mode is useful for getting a trace of kernel&lt;br /&gt;
operation during system bootup (before user space is running).&lt;br /&gt;
&lt;br /&gt;
The KFT configuration lets you specify how to automatically start and stop a trace, whether to include interrupts as part of the trace, and whether to&lt;br /&gt;
filter the trace data by various criteria (for minimum function duration, only certain listed functions, etc.)  KFT trace data is retrieved by reading from&lt;br /&gt;
&amp;lt;code&amp;gt;/proc/kft_data&amp;lt;/code&amp;gt; after the trace is complete.&lt;br /&gt;
&lt;br /&gt;
Tools are supplied to convert numeric trace data to kernel symbols, and to process and analyze the data in a KFT trace.&lt;br /&gt;
&lt;br /&gt;
== Basic Use ==&lt;br /&gt;
Documentation for KFT is available (as of 2.6.12) in Documentation/kft.txt, after applying the kft-all-in-one.patch.&lt;br /&gt;
&lt;br /&gt;
An online guide is provided at [[Using Kernel Function Trace]]&lt;br /&gt;
&lt;br /&gt;
Here's a presentation about KFT usage:&lt;br /&gt;
* Presentation: [[Media:KFI-presentation.pdf|Learning the Kernel and Finding Performance Problems with KFI]]&lt;br /&gt;
* Sample trace used with presentation: [[Media:omap-serial_init.trace.txt|omap-serial_init.trace.txt]]&lt;br /&gt;
&lt;br /&gt;
KFT used to be called KFI (for Kernel Function Instrumentation). For prior releases of KFT, see KernelFunctionInstrumentation&lt;br /&gt;
&lt;br /&gt;
== Download ==&lt;br /&gt;
=== Patches ===&lt;br /&gt;
* Download directory with recent versions: ftp://dslab.lzu.edu.cn/pub/kft/&lt;br /&gt;
** This is a fairly slow link - you can download the patch for 2.6.21 here: [[Media:kft-all-in-one-2.6.21.patch|kft-all-in-one-2.6.21.patch]]&lt;br /&gt;
* Patches for Linux 2.6.8.1, 2.6.11 and 2.6.12: see the [[Patch Archive]] page (available as an all-in-one patch or a tar archive of broken-out patches)&lt;br /&gt;
* Patch for Linux 2.6.11: (can just download [[Media:kfi-2.patch|kfi-2.patch]])&lt;br /&gt;
* Patch for Linux 2.6.7 (for x86 only): [[Media:kfi-26-test1.patch|kfi-26-test1.patch]]&lt;br /&gt;
* Patch for CELF kernel (based on linux-2.4.20): [[Media:kfi-24-test4.patch|kfi-24-test4.patch]]&lt;br /&gt;
&lt;br /&gt;
=== KFT utilities ===&lt;br /&gt;
KFT includes several helper scripts which are located in the kernel &amp;lt;code&amp;gt;scripts&amp;lt;/code&amp;gt; directory:&lt;br /&gt;
* addr2sym - convert function addresses to symbols in the trace data&lt;br /&gt;
* kd - KFT dump - does filtering, sorting, analysis and trace formatting of KFT trace logs&lt;br /&gt;
* mkkftrun.pl - used during building the kernel to convert a configuration file into a C file to be compiled into the kernel&lt;br /&gt;
* sym2addr - convert function names to addresses in a KFT configuration file (for a dynamic trace)&lt;br /&gt;
&lt;br /&gt;
See Documentation/kft.txt, in the kernel source tree after applying the patch, for instructions on using these programs.&lt;br /&gt;
&lt;br /&gt;
== How To Use ==&lt;br /&gt;
* download both the patch&lt;br /&gt;
* apply the patch in the kernel top-level directory:&lt;br /&gt;
* patch -p1 &amp;lt;kft.patch&lt;br /&gt;
* read the rest of the instructions in the Documentation/kft.txt file. (my apologies for being lazy!)&lt;br /&gt;
&lt;br /&gt;
=== Adding platform support for the kft clock source ===&lt;br /&gt;
The current patch (from Sep 2005), uses sched_clock() as the clock source for kft_readclock(). sched_clock() is new in the 2.6 kernel, and returns a 64-bit value containing nanoseconds&lt;br /&gt;
(not necessarily relative to any particular time base, but assumed to be monotonically increasing, and relatively frequency-stable.)&lt;br /&gt;
&lt;br /&gt;
If your platform has good support for sched_clock(), then KFT should work for you unmodified. If not, you may wish to do one of two things:&lt;br /&gt;
* improve support for sched_clock() in your board port, or &lt;br /&gt;
* write a custom kft_readclock() routine.&lt;br /&gt;
&lt;br /&gt;
A &amp;quot;good&amp;quot; sched_clock() routine will provide at least microsecond resolution on return values. Some architectures have sched_clock() returning values based on the &amp;lt;code&amp;gt;jiffy&amp;lt;/code&amp;gt; variable,&lt;br /&gt;
which on many embedded platforms only has resolution to 10 milliseconds.&lt;br /&gt;
&lt;br /&gt;
There are some sample custom kft_readclock() routines in the current patch for different architectures.&lt;br /&gt;
&lt;br /&gt;
== Issues ==&lt;br /&gt;
Here is a list of things that need more work:&lt;br /&gt;
* may need to add noinstrument attributes for some time-critical code (need to check this)&lt;br /&gt;
** maybe check &amp;quot;Function Trace in KDB&amp;quot; patch for help with this&lt;br /&gt;
&lt;br /&gt;
=== Overhead ===&lt;br /&gt;
Mitsubishi measured the overhead of KFI (the predecessor to KFT). The period is from start_kernel() to smp_init().&lt;br /&gt;
&lt;br /&gt;
Platform was: SH7751R 240MHz (Memory Clock 80MHz)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;tt&amp;gt;&lt;br /&gt;
With KFI&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;: 922.419 msec&amp;lt;br/&amp;gt;&lt;br /&gt;
Without KFI&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;: 666.982 msec&amp;lt;br/&amp;gt;&lt;br /&gt;
Overhead&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;: 27.69%&lt;br /&gt;
&amp;lt;/tt&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Similar technologies ==&lt;br /&gt;
There are other technologies for doing call traces or kernel profiling that are similar to KFT.  Some of these are mentioned on the [[Kernel Instrumentation]] page.  One that is very similar is a kernel trace mechanism for use with KDB.  A patch was posted to LKML in January of 2002.&lt;br /&gt;
See the message: http://www.uwsg.iu.edu/hypermail/linux/kernel/0201.3/0888.html&lt;br /&gt;
&lt;br /&gt;
== Filter Q&amp;amp;A ==&lt;br /&gt;
Tim asked the question:&lt;br /&gt;
&lt;br /&gt;
Q. Is there a way to adjust the trigger or filters to reduce the memory usage?&lt;br /&gt;
&lt;br /&gt;
A. The memory usage is determined by the size of the log, which is specified by &amp;lt;code&amp;gt;logentries&amp;lt;/code&amp;gt; in the KFT configuration.  If &amp;lt;code&amp;gt;logentries&amp;lt;/code&amp;gt; is not specified, it defaults to a rather large number (20,000 in the current code).  To use a smaller trace log, specify a smaller number of logentries in the KFT configuration.&lt;br /&gt;
&lt;br /&gt;
The use of triggers and filters can help you fit more data (or more pertinent data) into the log, so you can more readily see the information you are interested in.&lt;br /&gt;
&lt;br /&gt;
By setting start and stop triggers with a narrower &amp;quot;range&amp;quot; of operation, then the amount of data put into the log will be more limited.  For example, the default configuration for a static trace uses&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;trigger start entry start_kernel&amp;lt;br/&amp;gt;&lt;br /&gt;
trigger stop entry to_userspace &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will trace EVERYTHING that the kernel does between those two routines.  However, you can limit tracing to a much smaller time area of kernel initialization using better triggers.  Here is an example showing a triggers for just watching mem_init():&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
trigger start entry mem_init&amp;lt;br/&amp;gt;&lt;br /&gt;
trigger stop exit mem_init&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Filters are also vital to reduce the number of entries the trace log.  With no time filters in place, KFT will log every single function executed by the kernel.  This will quickly overrun the log (no matter what size you have reserved with &amp;lt;code&amp;gt;logentries&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
When using KFT to find long-duration functions in the kernel, we usually are not interested in routines that execute quickly, and instead use something like &amp;quot;filter mintime 500&amp;quot; to filter out routines taking less than 500 microseconds.&lt;br /&gt;
&lt;br /&gt;
== Sample results ==&lt;br /&gt;
Here is an excerpt from a KFI log trace (processed with addr2sym). It shows all functions which lasted longer than 500 microseconds, from when the kernel entered start_kernel() to when it entered to_userspace().&lt;br /&gt;
&lt;br /&gt;
=== kft log output (excerpt) ===&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
Kernel Instrumentation Run ID 0&lt;br /&gt;
&lt;br /&gt;
Logging started at 6785045 usec by entry to function start_kernel&lt;br /&gt;
Logging stopped at 8423650 usec by entry to function to_userspace&lt;br /&gt;
&lt;br /&gt;
Filters:&lt;br /&gt;
	500 usecs minimum execution time&lt;br /&gt;
&lt;br /&gt;
Filter Counters:&lt;br /&gt;
&lt;br /&gt;
Execution time filter count = 896348&lt;br /&gt;
Total entries filtered = 896348&lt;br /&gt;
Entries not found = 24&lt;br /&gt;
&lt;br /&gt;
Number of entries after filters = 1757&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Entry      Delta      PID            Function                    Called At&lt;br /&gt;
       1          0       0                start_kernel   L6+0x0&lt;br /&gt;
      14       8687       0                  setup_arch   start_kernel+0x35&lt;br /&gt;
      39        891       0                setup_memory   setup_arch+0x2a8&lt;br /&gt;
      53        872       0   register_bootmem_low_pages   setup_memory+0x8f&lt;br /&gt;
      54        871       0                free_bootmem   register_bootmem_low_pages+0x95&lt;br /&gt;
      54        871       0           free_bootmem_core   free_bootmem+0x34&lt;br /&gt;
     930       7432       0                 paging_init   setup_arch+0x2af&lt;br /&gt;
     935       7427       0             zone_sizes_init   paging_init+0x4e&lt;br /&gt;
     935       7427       0              free_area_init   zone_sizes_init+0x83&lt;br /&gt;
     935       7427       0         free_area_init_node   free_area_init+0x4b&lt;br /&gt;
     935       3759       0        __alloc_bootmem_node   free_area_init_node+0xc5&lt;br /&gt;
     935       3759       0        __alloc_bootmem_core   __alloc_bootmem_node+0x43&lt;br /&gt;
    4694       3668       0         free_area_init_core   free_area_init_node+0x75&lt;br /&gt;
    4817       3535       0            memmap_init_zone   free_area_init_core+0x2bd&lt;br /&gt;
    8807     266911       0                   time_init   start_kernel+0xb6&lt;br /&gt;
    8807     261404       0               get_cmos_time   time_init+0x1c&lt;br /&gt;
  270211       5507       0                select_timer   time_init+0x41&lt;br /&gt;
  270211       5507       0                    init_tsc   select_timer+0x45&lt;br /&gt;
  270211       5507       0               calibrate_tsc   init_tsc+0x6c&lt;br /&gt;
  275718       1638       0                console_init   start_kernel+0xbb&lt;br /&gt;
  275718       1638       0                    con_init   console_init+0x59&lt;br /&gt;
  275954        733       0          vgacon_save_screen   con_init+0x288&lt;br /&gt;
  277376       6730       0                    mem_init   start_kernel+0xf8&lt;br /&gt;
  277376       1691       0            free_all_bootmem   mem_init+0x52&lt;br /&gt;
  277376       1691       0       free_all_bootmem_core   free_all_bootmem+0x24&lt;br /&gt;
  284118      25027       0             calibrate_delay   start_kernel+0x10f&lt;br /&gt;
  293860        770       0                     __delay   calibrate_delay+0x62&lt;br /&gt;
  293860        770       0                   delay_tsc   __delay+0x26&lt;br /&gt;
  294951       1534       0                     __delay   calibrate_delay+0x62&lt;br /&gt;
  294951       1534       0                   delay_tsc   __delay+0x26&lt;br /&gt;
  297134       1149       0                     __delay   calibrate_delay+0xbe&lt;br /&gt;
  297134       1149       0                   delay_tsc   __delay+0x26&lt;br /&gt;
  .&lt;br /&gt;
  .&lt;br /&gt;
  .&lt;br /&gt;
 1638605          0     145              filemap_nopage   do_no_page+0xef&lt;br /&gt;
 1638605          0     145                 __lock_page   filemap_nopage+0x286&lt;br /&gt;
 1638605          0     145                 io_schedule   __lock_page+0x95&lt;br /&gt;
 1638605          0     145                    schedule   io_schedule+0x24&lt;br /&gt;
 1638605          0       5                    schedule   worker_thread+0x217&lt;br /&gt;
 1638605          0       1                to_userspace   init+0xa6&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The log is attached here: [[Media:Kfiboot-9.lst]]&lt;br /&gt;
A Delta value of 0 usually means the exit from the routine was not seen.&lt;br /&gt;
&lt;br /&gt;
=== kft log analysis with 'kd' ===&lt;br /&gt;
Below is a &amp;lt;code&amp;gt;kd&amp;lt;/code&amp;gt; dump of the data from the above log.&lt;br /&gt;
&lt;br /&gt;
For the purpose of finding areas of big time in the kernel, the functions with high &amp;quot;Local&amp;quot; time are important.  For example, &amp;lt;code&amp;gt;delay_tsc()&amp;lt;/code&amp;gt; is called 156 times, resulting in 619 milliseconds of duration.  Other time-consuming routines were: &amp;lt;code&amp;gt;isapnp_isolate()&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;get_cmos_time()&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;default_idle()&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The top line showing schedule() called 192 times and lasting over 5 seconds, is accounted wrong due to the switch in execution control inside the schedule routine.  (The count of 192 calls is correct, but the duration is wrong.)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ ~/work/kft/kft/kd -n 30 kftboot-9.lst&lt;br /&gt;
Function                  Count Time     Average  Local&lt;br /&gt;
------------------------- ----- -------- -------- --------&lt;br /&gt;
schedule                    192  5173790    26946  5173790&lt;br /&gt;
do_basic_setup                1  1159270  1159270       14&lt;br /&gt;
do_initcalls                  1  1159256  1159256      627&lt;br /&gt;
__delay                     156   619322     3970        0&lt;br /&gt;
delay_tsc                   156   619322     3970   619322&lt;br /&gt;
__const_udelay              146   608427     4167        0&lt;br /&gt;
probe_hwif                    8   553972    69246      126&lt;br /&gt;
do_probe                     31   553025    17839       68&lt;br /&gt;
ide_delay_50ms              103   552588     5364        0&lt;br /&gt;
isapnp_init                   1   383138   383138       18&lt;br /&gt;
isapnp_isolate                1   383120   383120   311629&lt;br /&gt;
ide_init                      1   339778   339778       22&lt;br /&gt;
probe_for_hwifs               1   339756   339756      103&lt;br /&gt;
ide_scan_pcibus               1   339653   339653       13&lt;br /&gt;
init_setup_piix               2   339640   169820        0&lt;br /&gt;
ide_scan_pcidev               2   339640   169820        0&lt;br /&gt;
piix_init_one                 2   339640   169820        0&lt;br /&gt;
ide_setup_pci_device          2   339640   169820      242&lt;br /&gt;
probe_hwif_init               4   339398    84849       40&lt;br /&gt;
time_init                     1   266911   266911        0&lt;br /&gt;
get_cmos_time                 1   261404   261404   261404&lt;br /&gt;
ide_generic_init              1   214614   214614        0&lt;br /&gt;
ideprobe_init                 1   214614   214614        0&lt;br /&gt;
wait_for_completion           6   194573    32428        0&lt;br /&gt;
default_idle                183   192589     1052   192589&lt;br /&gt;
io_schedule                  18   171313     9517        0&lt;br /&gt;
__wait_on_buffer             14   150369    10740      141&lt;br /&gt;
i8042_init                    1   137210   137210      295&lt;br /&gt;
i8042_port_register           2   135318    67659      301&lt;br /&gt;
__serio_register_port         2   135017    67508        0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== kft nested call trace with 'kd -c' ===&lt;br /&gt;
Below is a &amp;lt;code&amp;gt;kd -c&amp;lt;/code&amp;gt; trace of the data from a log taken from a PPC440g platform, from a (dynamic) trace of the function do_fork().&lt;br /&gt;
&lt;br /&gt;
Here is the configuration file that was used:&lt;br /&gt;
&amp;lt;code&amp;gt;new&lt;br /&gt;
begin&lt;br /&gt;
trigger start entry do_fork&lt;br /&gt;
trigger stop exit do_fork&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here is the first part of the trace in nested call format:&lt;br /&gt;
Times (Entry, Duration and Local) are in micro-seconds. Note the timer interrupt during the routine.&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
      Entry      Duration   Local       Pid    Trace&lt;br /&gt;
         4      20428        209      33 do_fork&lt;br /&gt;
         7          6          6      33 |  alloc_pidmap&lt;br /&gt;
        18       2643         84      33 |  copy_process&lt;br /&gt;
        21        114         19      33 |  |  dup_task_struct&lt;br /&gt;
        24          8          6      33 |  |  |  prepare_to_copy&lt;br /&gt;
        27          2          2      33 |  |  |  |  sub_preempt_count&lt;br /&gt;
        35         22          9      33 |  |  |  kmem_cache_alloc&lt;br /&gt;
        38          2          2      33 |  |  |  |  __might_sleep&lt;br /&gt;
        43         11          9      33 |  |  |  |  cache_alloc_refill&lt;br /&gt;
        49          2          2      33 |  |  |  |  |  sub_preempt_count&lt;br /&gt;
        60         65          6      33 |  |  |  __get_free_pages&lt;br /&gt;
        63         59         14      33 |  |  |  |  __alloc_pages&lt;br /&gt;
        65          3          3      33 |  |  |  |  |  __might_sleep&lt;br /&gt;
        71          3          3      33 |  |  |  |  |  zone_watermark_ok&lt;br /&gt;
        77         37         17      33 |  |  |  |  |  buffered_rmqueue&lt;br /&gt;
        80          4          4      33 |  |  |  |  |  |  __rmqueue&lt;br /&gt;
        86          3          3      33 |  |  |  |  |  |  sub_preempt_count&lt;br /&gt;
        92          3          3      33 |  |  |  |  |  |  bad_range&lt;br /&gt;
        98          2          2      33 |  |  |  |  |  |  __mod_page_state&lt;br /&gt;
       103          8          5      33 |  |  |  |  |  |  prep_new_page&lt;br /&gt;
       106          3          3      33 |  |  |  |  |  |  |  set_page_refs&lt;br /&gt;
       117          2          2      33 |  |  |  |  |  zone_statistics&lt;br /&gt;
       141         25          4      33 |  |  do_posix_clock_monotonic_gettime&lt;br /&gt;
       143         21          6      33 |  |  |  do_posix_clock_monotonic_get&lt;br /&gt;
       146         15          6      33 |  |  |  |  do_posix_clock_monotonic_gettime_parts&lt;br /&gt;
       149          9          6      33 |  |  |  |  |  getnstimeofday&lt;br /&gt;
       152          3          3      33 |  |  |  |  |  |  do_gettimeofday&lt;br /&gt;
       169          3          3      33 |  |  copy_semundo&lt;br /&gt;
       174         41         17      33 |  |  copy_files&lt;br /&gt;
       177         19          9      33 |  |  |  kmem_cache_alloc&lt;br /&gt;
       180          2          2      33 |  |  |  |  __might_sleep&lt;br /&gt;
       185          8          5      33 |  |  |  |  cache_alloc_refill&lt;br /&gt;
       188          3          3      33 |  |  |  |  |  sub_preempt_count&lt;br /&gt;
       200          3          3      33 |  |  |  count_open_files&lt;br /&gt;
       209          2          2      33 |  |  |  sub_preempt_count&lt;br /&gt;
       218         19          8      33 |  |  kmem_cache_alloc&lt;br /&gt;
       220          2          2      33 |  |  |  __might_sleep&lt;br /&gt;
       225          9          6      33 |  |  |  cache_alloc_refill&lt;br /&gt;
       229          3          3      33 |  |  |  |  sub_preempt_count&lt;br /&gt;
       241          2          2      33 |  |  sub_preempt_count&lt;br /&gt;
       246        216          9      33 |  |  kmem_cache_alloc&lt;br /&gt;
       249        199        199      33 |  |  |  __might_sleep&lt;br /&gt;
             !!!! start &lt;br /&gt;
       253        151         63      33 timer_interrupt&lt;br /&gt;
       256          8          6      -1 !  profile_tick&lt;br /&gt;
       259          2          2      -1 !  !  profile_hit&lt;br /&gt;
       267         61         15      -1 !  update_process_times&lt;br /&gt;
       270          8          5      -1 !  !  account_system_time&lt;br /&gt;
       273          3          3      -1 !  !  !  update_mem_hiwater&lt;br /&gt;
       281          8          5      -1 !  !  run_local_timers&lt;br /&gt;
       284          3          3      -1 !  !  !  raise_softirq&lt;br /&gt;
       293         27         16      -1 !  !  scheduler_tick&lt;br /&gt;
.&lt;br /&gt;
.&lt;br /&gt;
.&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To see the full trace, go to the [[KftDoForkTrace]] page.&lt;br /&gt;
&lt;br /&gt;
[[Category:Boot Time]]&lt;br /&gt;
[[Category:Kernel Function Trace]]&lt;/div&gt;</summary>
		<author><name>TimBird</name></author>	</entry>

	<entry>
		<id>http://elinux.org/File:Kfiboot-9.lst</id>
		<title>File:Kfiboot-9.lst</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/File:Kfiboot-9.lst"/>
				<updated>2008-06-12T21:16:46Z</updated>
		
		<summary type="html">&lt;p&gt;TimBird: sample kfi boot log&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;sample kfi boot log&lt;/div&gt;</summary>
		<author><name>TimBird</name></author>	</entry>

	<entry>
		<id>http://elinux.org/Kernel_Function_Trace</id>
		<title>Kernel Function Trace</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/Kernel_Function_Trace"/>
				<updated>2008-06-12T21:12:34Z</updated>
		
		<summary type="html">&lt;p&gt;TimBird: /* kft log analysis with 'kd' */ fix table&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
Kernel Function Trace (KFT) is a kernel function tracing system, which uses the &amp;quot;-finstrument-functions&amp;quot; capability of the gcc compiler to add&lt;br /&gt;
instrumentation callouts to every function entry and exit.  The KFT system provides for capturing these callouts and generating a trace of events, with&lt;br /&gt;
timing details.  KFT is excellent at providing a good timing overview of kernel procedures, allowing you to see where time is spent in functions and&lt;br /&gt;
sub-routines in the kernel.&lt;br /&gt;
&lt;br /&gt;
The main mode of operation with KFT is to use the system with a dynamic trace configuration. That is, you can set a trace configuration after kernel&lt;br /&gt;
startup, using the &amp;lt;code&amp;gt;/proc/kft&amp;lt;/code&amp;gt; interface, and retrieve trace data immediately. However, another (special) mode of operation is available, called STATIC_RUN&lt;br /&gt;
mode, where the configuration for a KFT run is configured and compiled statically into the kernel.  This mode is useful for getting a trace of kernel&lt;br /&gt;
operation during system bootup (before user space is running).&lt;br /&gt;
&lt;br /&gt;
The KFT configuration lets you specify how to automatically start and stop a trace, whether to include interrupts as part of the trace, and whether to&lt;br /&gt;
filter the trace data by various criteria (for minimum function duration, only certain listed functions, etc.)  KFT trace data is retrieved by reading from&lt;br /&gt;
&amp;lt;code&amp;gt;/proc/kft_data&amp;lt;/code&amp;gt; after the trace is complete.&lt;br /&gt;
&lt;br /&gt;
Tools are supplied to convert numeric trace data to kernel symbols, and to process and analyze the data in a KFT trace.&lt;br /&gt;
&lt;br /&gt;
== Basic Use ==&lt;br /&gt;
Documentation for KFT is available (as of 2.6.12) in Documentation/kft.txt, after applying the kft-all-in-one.patch.&lt;br /&gt;
&lt;br /&gt;
An online guide is provided at [[Using Kernel Function Trace]]&lt;br /&gt;
&lt;br /&gt;
Here's a presentation about KFT usage:&lt;br /&gt;
* Presentation: [[Media:KFI-presentation.pdf|Learning the Kernel and Finding Performance Problems with KFI]]&lt;br /&gt;
* Sample trace used with presentation: [[Media:omap-serial_init.trace.txt|omap-serial_init.trace.txt]]&lt;br /&gt;
&lt;br /&gt;
KFT used to be called KFI (for Kernel Function Instrumentation). For prior releases of KFT, see KernelFunctionInstrumentation&lt;br /&gt;
&lt;br /&gt;
== Download ==&lt;br /&gt;
=== Patches ===&lt;br /&gt;
* Download directory with recent versions: ftp://dslab.lzu.edu.cn/pub/kft/&lt;br /&gt;
** This is a fairly slow link - you can download the patch for 2.6.21 here: [[Media:kft-all-in-one-2.6.21.patch|kft-all-in-one-2.6.21.patch]]&lt;br /&gt;
* Patches for Linux 2.6.8.1, 2.6.11 and 2.6.12: see the [[Patch Archive]] page (available as an all-in-one patch or a tar archive of broken-out patches)&lt;br /&gt;
* Patch for Linux 2.6.11: (can just download [[Media:kfi-2.patch|kfi-2.patch]])&lt;br /&gt;
* Patch for Linux 2.6.7 (for x86 only): [[Media:kfi-26-test1.patch|kfi-26-test1.patch]]&lt;br /&gt;
* Patch for CELF kernel (based on linux-2.4.20): [[Media:kfi-24-test4.patch|kfi-24-test4.patch]]&lt;br /&gt;
&lt;br /&gt;
=== KFT utilities ===&lt;br /&gt;
KFT includes several helper scripts which are located in the kernel &amp;lt;code&amp;gt;scripts&amp;lt;/code&amp;gt; directory:&lt;br /&gt;
* addr2sym - convert function addresses to symbols in the trace data&lt;br /&gt;
* kd - KFT dump - does filtering, sorting, analysis and trace formatting of KFT trace logs&lt;br /&gt;
* mkkftrun.pl - used during building the kernel to convert a configuration file into a C file to be compiled into the kernel&lt;br /&gt;
* sym2addr - convert function names to addresses in a KFT configuration file (for a dynamic trace)&lt;br /&gt;
&lt;br /&gt;
See Documentation/kft.txt, in the kernel source tree after applying the patch, for instructions on using these programs.&lt;br /&gt;
&lt;br /&gt;
== How To Use ==&lt;br /&gt;
* download both the patch&lt;br /&gt;
* apply the patch in the kernel top-level directory:&lt;br /&gt;
* patch -p1 &amp;lt;kft.patch&lt;br /&gt;
* read the rest of the instructions in the Documentation/kft.txt file. (my apologies for being lazy!)&lt;br /&gt;
&lt;br /&gt;
=== Adding platform support for the kft clock source ===&lt;br /&gt;
The current patch (from Sep 2005), uses sched_clock() as the clock source for kft_readclock(). sched_clock() is new in the 2.6 kernel, and returns a 64-bit value containing nanoseconds&lt;br /&gt;
(not necessarily relative to any particular time base, but assumed to be monotonically increasing, and relatively frequency-stable.)&lt;br /&gt;
&lt;br /&gt;
If your platform has good support for sched_clock(), then KFT should work for you unmodified. If not, you may wish to do one of two things:&lt;br /&gt;
* improve support for sched_clock() in your board port, or &lt;br /&gt;
* write a custom kft_readclock() routine.&lt;br /&gt;
&lt;br /&gt;
A &amp;quot;good&amp;quot; sched_clock() routine will provide at least microsecond resolution on return values. Some architectures have sched_clock() returning values based on the &amp;lt;code&amp;gt;jiffy&amp;lt;/code&amp;gt; variable,&lt;br /&gt;
which on many embedded platforms only has resolution to 10 milliseconds.&lt;br /&gt;
&lt;br /&gt;
There are some sample custom kft_readclock() routines in the current patch for different architectures.&lt;br /&gt;
&lt;br /&gt;
== Issues ==&lt;br /&gt;
Here is a list of things that need more work:&lt;br /&gt;
* may need to add noinstrument attributes for some time-critical code (need to check this)&lt;br /&gt;
** maybe check &amp;quot;Function Trace in KDB&amp;quot; patch for help with this&lt;br /&gt;
&lt;br /&gt;
=== Overhead ===&lt;br /&gt;
Mitsubishi measured the overhead of KFI (the predecessor to KFT). The period is from start_kernel() to smp_init().&lt;br /&gt;
&lt;br /&gt;
Platform was: SH7751R 240MHz (Memory Clock 80MHz)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;tt&amp;gt;&lt;br /&gt;
With KFI&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;: 922.419 msec&amp;lt;br/&amp;gt;&lt;br /&gt;
Without KFI&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;: 666.982 msec&amp;lt;br/&amp;gt;&lt;br /&gt;
Overhead&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;: 27.69%&lt;br /&gt;
&amp;lt;/tt&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Similar technologies ==&lt;br /&gt;
There are other technologies for doing call traces or kernel profiling that are similar to KFT.  Some of these are mentioned on the [[Kernel Instrumentation]] page.  One that is very similar is a kernel trace mechanism for use with KDB.  A patch was posted to LKML in January of 2002.&lt;br /&gt;
See the message: http://www.uwsg.iu.edu/hypermail/linux/kernel/0201.3/0888.html&lt;br /&gt;
&lt;br /&gt;
== Filter Q&amp;amp;A ==&lt;br /&gt;
Tim asked the question:&lt;br /&gt;
&lt;br /&gt;
Q. Is there a way to adjust the trigger or filters to reduce the memory usage?&lt;br /&gt;
&lt;br /&gt;
A. The memory usage is determined by the size of the log, which is specified by &amp;lt;code&amp;gt;logentries&amp;lt;/code&amp;gt; in the KFT configuration.  If &amp;lt;code&amp;gt;logentries&amp;lt;/code&amp;gt; is not specified, it defaults to a rather large number (20,000 in the current code).  To use a smaller trace log, specify a smaller number of logentries in the KFT configuration.&lt;br /&gt;
&lt;br /&gt;
The use of triggers and filters can help you fit more data (or more pertinent data) into the log, so you can more readily see the information you are interested in.&lt;br /&gt;
&lt;br /&gt;
By setting start and stop triggers with a narrower &amp;quot;range&amp;quot; of operation, then the amount of data put into the log will be more limited.  For example, the default configuration for a static trace uses&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;trigger start entry start_kernel&amp;lt;br/&amp;gt;&lt;br /&gt;
trigger stop entry to_userspace &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will trace EVERYTHING that the kernel does between those two routines.  However, you can limit tracing to a much smaller time area of kernel initialization using better triggers.  Here is an example showing a triggers for just watching mem_init():&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
trigger start entry mem_init&amp;lt;br/&amp;gt;&lt;br /&gt;
trigger stop exit mem_init&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Filters are also vital to reduce the number of entries the trace log.  With no time filters in place, KFT will log every single function executed by the kernel.  This will quickly overrun the log (no matter what size you have reserved with &amp;lt;code&amp;gt;logentries&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
When using KFT to find long-duration functions in the kernel, we usually are not interested in routines that execute quickly, and instead use something like &amp;quot;filter mintime 500&amp;quot; to filter out routines taking less than 500 microseconds.&lt;br /&gt;
&lt;br /&gt;
== Sample results ==&lt;br /&gt;
Here is an excerpt from a KFI log trace (processed with addr2sym). It shows all functions which lasted longer than 500 microseconds, from when the kernel entered start_kernel() to when it entered to_userspace().&lt;br /&gt;
&lt;br /&gt;
=== kft log output (excerpt) ===&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
Kernel Instrumentation Run ID 0&lt;br /&gt;
&lt;br /&gt;
Logging started at 6785045 usec by entry to function start_kernel&lt;br /&gt;
Logging stopped at 8423650 usec by entry to function to_userspace&lt;br /&gt;
&lt;br /&gt;
Filters:&lt;br /&gt;
	500 usecs minimum execution time&lt;br /&gt;
&lt;br /&gt;
Filter Counters:&lt;br /&gt;
&lt;br /&gt;
Execution time filter count = 896348&lt;br /&gt;
Total entries filtered = 896348&lt;br /&gt;
Entries not found = 24&lt;br /&gt;
&lt;br /&gt;
Number of entries after filters = 1757&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Entry      Delta      PID            Function                    Called At&lt;br /&gt;
       1          0       0                start_kernel   L6+0x0&lt;br /&gt;
      14       8687       0                  setup_arch   start_kernel+0x35&lt;br /&gt;
      39        891       0                setup_memory   setup_arch+0x2a8&lt;br /&gt;
      53        872       0   register_bootmem_low_pages   setup_memory+0x8f&lt;br /&gt;
      54        871       0                free_bootmem   register_bootmem_low_pages+0x95&lt;br /&gt;
      54        871       0           free_bootmem_core   free_bootmem+0x34&lt;br /&gt;
     930       7432       0                 paging_init   setup_arch+0x2af&lt;br /&gt;
     935       7427       0             zone_sizes_init   paging_init+0x4e&lt;br /&gt;
     935       7427       0              free_area_init   zone_sizes_init+0x83&lt;br /&gt;
     935       7427       0         free_area_init_node   free_area_init+0x4b&lt;br /&gt;
     935       3759       0        __alloc_bootmem_node   free_area_init_node+0xc5&lt;br /&gt;
     935       3759       0        __alloc_bootmem_core   __alloc_bootmem_node+0x43&lt;br /&gt;
    4694       3668       0         free_area_init_core   free_area_init_node+0x75&lt;br /&gt;
    4817       3535       0            memmap_init_zone   free_area_init_core+0x2bd&lt;br /&gt;
    8807     266911       0                   time_init   start_kernel+0xb6&lt;br /&gt;
    8807     261404       0               get_cmos_time   time_init+0x1c&lt;br /&gt;
  270211       5507       0                select_timer   time_init+0x41&lt;br /&gt;
  270211       5507       0                    init_tsc   select_timer+0x45&lt;br /&gt;
  270211       5507       0               calibrate_tsc   init_tsc+0x6c&lt;br /&gt;
  275718       1638       0                console_init   start_kernel+0xbb&lt;br /&gt;
  275718       1638       0                    con_init   console_init+0x59&lt;br /&gt;
  275954        733       0          vgacon_save_screen   con_init+0x288&lt;br /&gt;
  277376       6730       0                    mem_init   start_kernel+0xf8&lt;br /&gt;
  277376       1691       0            free_all_bootmem   mem_init+0x52&lt;br /&gt;
  277376       1691       0       free_all_bootmem_core   free_all_bootmem+0x24&lt;br /&gt;
  284118      25027       0             calibrate_delay   start_kernel+0x10f&lt;br /&gt;
  293860        770       0                     __delay   calibrate_delay+0x62&lt;br /&gt;
  293860        770       0                   delay_tsc   __delay+0x26&lt;br /&gt;
  294951       1534       0                     __delay   calibrate_delay+0x62&lt;br /&gt;
  294951       1534       0                   delay_tsc   __delay+0x26&lt;br /&gt;
  297134       1149       0                     __delay   calibrate_delay+0xbe&lt;br /&gt;
  297134       1149       0                   delay_tsc   __delay+0x26&lt;br /&gt;
  .&lt;br /&gt;
  .&lt;br /&gt;
  .&lt;br /&gt;
 1638605          0     145              filemap_nopage   do_no_page+0xef&lt;br /&gt;
 1638605          0     145                 __lock_page   filemap_nopage+0x286&lt;br /&gt;
 1638605          0     145                 io_schedule   __lock_page+0x95&lt;br /&gt;
 1638605          0     145                    schedule   io_schedule+0x24&lt;br /&gt;
 1638605          0       5                    schedule   worker_thread+0x217&lt;br /&gt;
 1638605          0       1                to_userspace   init+0xa6&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The log is attached here: kfiboot-9.lst&lt;br /&gt;
A Delta value of 0 usually means the exit from the routine was not seen.&lt;br /&gt;
&lt;br /&gt;
=== kft log analysis with 'kd' ===&lt;br /&gt;
Below is a &amp;lt;code&amp;gt;kd&amp;lt;/code&amp;gt; dump of the data from the above log.&lt;br /&gt;
&lt;br /&gt;
For the purpose of finding areas of big time in the kernel, the functions with high &amp;quot;Local&amp;quot; time are important.  For example, &amp;lt;code&amp;gt;delay_tsc()&amp;lt;/code&amp;gt; is called 156 times, resulting in 619 milliseconds of duration.  Other time-consuming routines were: &amp;lt;code&amp;gt;isapnp_isolate()&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;get_cmos_time()&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;default_idle()&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The top line showing schedule() called 192 times and lasting over 5 seconds, is accounted wrong due to the switch in execution control inside the schedule routine.  (The count of 192 calls is correct, but the duration is wrong.)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ ~/work/kft/kft/kd -n 30 kftboot-9.lst&lt;br /&gt;
Function                  Count Time     Average  Local&lt;br /&gt;
------------------------- ----- -------- -------- --------&lt;br /&gt;
schedule                    192  5173790    26946  5173790&lt;br /&gt;
do_basic_setup                1  1159270  1159270       14&lt;br /&gt;
do_initcalls                  1  1159256  1159256      627&lt;br /&gt;
__delay                     156   619322     3970        0&lt;br /&gt;
delay_tsc                   156   619322     3970   619322&lt;br /&gt;
__const_udelay              146   608427     4167        0&lt;br /&gt;
probe_hwif                    8   553972    69246      126&lt;br /&gt;
do_probe                     31   553025    17839       68&lt;br /&gt;
ide_delay_50ms              103   552588     5364        0&lt;br /&gt;
isapnp_init                   1   383138   383138       18&lt;br /&gt;
isapnp_isolate                1   383120   383120   311629&lt;br /&gt;
ide_init                      1   339778   339778       22&lt;br /&gt;
probe_for_hwifs               1   339756   339756      103&lt;br /&gt;
ide_scan_pcibus               1   339653   339653       13&lt;br /&gt;
init_setup_piix               2   339640   169820        0&lt;br /&gt;
ide_scan_pcidev               2   339640   169820        0&lt;br /&gt;
piix_init_one                 2   339640   169820        0&lt;br /&gt;
ide_setup_pci_device          2   339640   169820      242&lt;br /&gt;
probe_hwif_init               4   339398    84849       40&lt;br /&gt;
time_init                     1   266911   266911        0&lt;br /&gt;
get_cmos_time                 1   261404   261404   261404&lt;br /&gt;
ide_generic_init              1   214614   214614        0&lt;br /&gt;
ideprobe_init                 1   214614   214614        0&lt;br /&gt;
wait_for_completion           6   194573    32428        0&lt;br /&gt;
default_idle                183   192589     1052   192589&lt;br /&gt;
io_schedule                  18   171313     9517        0&lt;br /&gt;
__wait_on_buffer             14   150369    10740      141&lt;br /&gt;
i8042_init                    1   137210   137210      295&lt;br /&gt;
i8042_port_register           2   135318    67659      301&lt;br /&gt;
__serio_register_port         2   135017    67508        0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== kft nested call trace with 'kd -c' ===&lt;br /&gt;
Below is a &amp;lt;code&amp;gt;kd -c&amp;lt;/code&amp;gt; trace of the data from a log taken from a PPC440g platform, from a (dynamic) trace of the function do_fork().&lt;br /&gt;
&lt;br /&gt;
Here is the configuration file that was used:&lt;br /&gt;
&amp;lt;code&amp;gt;new&lt;br /&gt;
begin&lt;br /&gt;
trigger start entry do_fork&lt;br /&gt;
trigger stop exit do_fork&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here is the first part of the trace in nested call format:&lt;br /&gt;
Times (Entry, Duration and Local) are in micro-seconds. Note the timer interrupt during the routine.&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
      Entry      Duration   Local       Pid    Trace&lt;br /&gt;
         4      20428        209      33 do_fork&lt;br /&gt;
         7          6          6      33 |  alloc_pidmap&lt;br /&gt;
        18       2643         84      33 |  copy_process&lt;br /&gt;
        21        114         19      33 |  |  dup_task_struct&lt;br /&gt;
        24          8          6      33 |  |  |  prepare_to_copy&lt;br /&gt;
        27          2          2      33 |  |  |  |  sub_preempt_count&lt;br /&gt;
        35         22          9      33 |  |  |  kmem_cache_alloc&lt;br /&gt;
        38          2          2      33 |  |  |  |  __might_sleep&lt;br /&gt;
        43         11          9      33 |  |  |  |  cache_alloc_refill&lt;br /&gt;
        49          2          2      33 |  |  |  |  |  sub_preempt_count&lt;br /&gt;
        60         65          6      33 |  |  |  __get_free_pages&lt;br /&gt;
        63         59         14      33 |  |  |  |  __alloc_pages&lt;br /&gt;
        65          3          3      33 |  |  |  |  |  __might_sleep&lt;br /&gt;
        71          3          3      33 |  |  |  |  |  zone_watermark_ok&lt;br /&gt;
        77         37         17      33 |  |  |  |  |  buffered_rmqueue&lt;br /&gt;
        80          4          4      33 |  |  |  |  |  |  __rmqueue&lt;br /&gt;
        86          3          3      33 |  |  |  |  |  |  sub_preempt_count&lt;br /&gt;
        92          3          3      33 |  |  |  |  |  |  bad_range&lt;br /&gt;
        98          2          2      33 |  |  |  |  |  |  __mod_page_state&lt;br /&gt;
       103          8          5      33 |  |  |  |  |  |  prep_new_page&lt;br /&gt;
       106          3          3      33 |  |  |  |  |  |  |  set_page_refs&lt;br /&gt;
       117          2          2      33 |  |  |  |  |  zone_statistics&lt;br /&gt;
       141         25          4      33 |  |  do_posix_clock_monotonic_gettime&lt;br /&gt;
       143         21          6      33 |  |  |  do_posix_clock_monotonic_get&lt;br /&gt;
       146         15          6      33 |  |  |  |  do_posix_clock_monotonic_gettime_parts&lt;br /&gt;
       149          9          6      33 |  |  |  |  |  getnstimeofday&lt;br /&gt;
       152          3          3      33 |  |  |  |  |  |  do_gettimeofday&lt;br /&gt;
       169          3          3      33 |  |  copy_semundo&lt;br /&gt;
       174         41         17      33 |  |  copy_files&lt;br /&gt;
       177         19          9      33 |  |  |  kmem_cache_alloc&lt;br /&gt;
       180          2          2      33 |  |  |  |  __might_sleep&lt;br /&gt;
       185          8          5      33 |  |  |  |  cache_alloc_refill&lt;br /&gt;
       188          3          3      33 |  |  |  |  |  sub_preempt_count&lt;br /&gt;
       200          3          3      33 |  |  |  count_open_files&lt;br /&gt;
       209          2          2      33 |  |  |  sub_preempt_count&lt;br /&gt;
       218         19          8      33 |  |  kmem_cache_alloc&lt;br /&gt;
       220          2          2      33 |  |  |  __might_sleep&lt;br /&gt;
       225          9          6      33 |  |  |  cache_alloc_refill&lt;br /&gt;
       229          3          3      33 |  |  |  |  sub_preempt_count&lt;br /&gt;
       241          2          2      33 |  |  sub_preempt_count&lt;br /&gt;
       246        216          9      33 |  |  kmem_cache_alloc&lt;br /&gt;
       249        199        199      33 |  |  |  __might_sleep&lt;br /&gt;
             !!!! start &lt;br /&gt;
       253        151         63      33 timer_interrupt&lt;br /&gt;
       256          8          6      -1 !  profile_tick&lt;br /&gt;
       259          2          2      -1 !  !  profile_hit&lt;br /&gt;
       267         61         15      -1 !  update_process_times&lt;br /&gt;
       270          8          5      -1 !  !  account_system_time&lt;br /&gt;
       273          3          3      -1 !  !  !  update_mem_hiwater&lt;br /&gt;
       281          8          5      -1 !  !  run_local_timers&lt;br /&gt;
       284          3          3      -1 !  !  !  raise_softirq&lt;br /&gt;
       293         27         16      -1 !  !  scheduler_tick&lt;br /&gt;
.&lt;br /&gt;
.&lt;br /&gt;
.&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To see the full trace, go to the [[KftDoForkTrace]] page.&lt;br /&gt;
&lt;br /&gt;
[[Category:Boot Time]]&lt;br /&gt;
[[Category:Kernel Function Trace]]&lt;/div&gt;</summary>
		<author><name>TimBird</name></author>	</entry>

	<entry>
		<id>http://elinux.org/Events</id>
		<title>Events</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/Events"/>
				<updated>2008-06-11T23:53:55Z</updated>
		
		<summary type="html">&lt;p&gt;TimBird: /* Past events */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Upcoming events ==&lt;br /&gt;
* Regional conference in Japan - Tokyo, Japan, July 4, 2008 - [http://tree.celinuxforum.org/CelfPubWiki/JapanTechnicalJamboree21 Japan Technical Jamboree 21]&lt;br /&gt;
* Ottawa Linux Symposium 2008 - Ottawa, Canada, July 23-26&lt;br /&gt;
** Home page: http://www.linuxsymposium.org/2008/&lt;br /&gt;
* Embedded Linux Conference Europe - Ede, The Netherlands, November 6-7, 2008&lt;br /&gt;
** Home page - http://www.embeddedlinuxconference.com/elc_europe08/index.html&lt;br /&gt;
** Call for Presentations - http://tree.celinuxforum.org/CelfPubWiki/ELCE2008CallForPresentations&lt;br /&gt;
&lt;br /&gt;
== Past events ==&lt;br /&gt;
Some information is at: [[Embedded linux events]]&lt;br /&gt;
&lt;br /&gt;
Here is a list of past CELF events:&lt;br /&gt;
* Regional conference in Japan - Tokyo, Japan, April 25, 2008 - [http://tree.celinuxforum.org/CelfPubWiki/JapanTechnicalJamboree20 Japan Technical Jamboree 20]&lt;br /&gt;
* Embedded Linux Conference, 2008 - Mountain View, California, USA, April 15-17, 2008&lt;br /&gt;
** Home page: http://www.embeddedlinuxconference.com/&lt;br /&gt;
** [http://tree.celinuxforum.org/CelfPubWiki/ELC2008CallForPresentations Call for sessions]&lt;br /&gt;
* Regional conference in Japan - Tokyo, Japan, February 21, 2008 - [http://tree.celinuxforum.org/CelfPubWiki/JapanTechnicalJamboree19 Japan Technical Jamboree 19]&lt;br /&gt;
* Regional conference in Korea - Seoul, Japan, February 22, 2008 - [http://tree.celinuxforum.org/CelfPubWiki/KoreaTechJamboree2 Korean Technical Jamboree 2]&lt;br /&gt;
* Regional conference in Japan - Tokyo, Japan, December 21, 2007 - [http://tree.celinuxforum.org/CelfPubWiki/JapanTechnicalJamboree18 Japan Technical Jamboree 18]&lt;br /&gt;
*[http://www.celinux.org/elc2008/index.html Embedded Linux Conference - 2008] - Mountain View, California, USA, April 15-17, 2008&lt;br /&gt;
*[http://www.celinux.org/elc_europe07/elc_europe_index.html Embedded Linux Conference - Europe 2007] - Linz, Austria, November 2-4, 2007&lt;br /&gt;
** Presentations are being collected at: [http://tree.celinuxforum.org/CelfPubWiki/ELCEurope2007Presentations ELC Europe 2007 Presentations]&lt;br /&gt;
* Regional conference in Japan - Tokyo, Japan, October 25, 2007 - [http://tree.celinuxforum.org/CelfPubWiki/JapanTechnicalJamboree17 Japan Technical Jamboree 17]&lt;br /&gt;
*Regional conference in Japan - Tokyo, Japan, August 31, 2007 - [http://tree.celinuxforum.org/CelfPubWiki/JapanTechnicalJamboree16 Japan Technical Jamboree 16]&lt;br /&gt;
*Ottawa Linux Symposium 2007 - Ottawa, Canada, June 27-30, 2007&lt;br /&gt;
** [[Ottawa Linux Symposium 2007]]&lt;br /&gt;
** [[OLS 2007 Embedded Linux BOF]] - June 27&lt;br /&gt;
** [[OLS 2007 Embedded Linux Wiki BOF]] - June 27&lt;br /&gt;
** [[OLS 2007 CELF BOF]] - June 29, 7-9pm, Westin Hotel&lt;br /&gt;
*Regional conference in Japan - Tokyo, Japan, June 29, 2007 - [http://tree.celinuxforum.org/CelfPubWiki/JapanTechnicalJamboree15 Japan Technical Jamboree 15]&lt;br /&gt;
*Embedded System Expo &amp;amp; Conference in Japan - Tokyo, Japan, May 16-18&lt;br /&gt;
*Regional conference in Japan - Tokyo, Japan, April 27, 2007 [http://tree.celinuxforum.org/CelfPubWiki/JapanTechnicalJamboree14 Japan Technical Jamboree 14]&lt;br /&gt;
* Embedded Linux Conference, 2007 - San Jose, California, April 17-19, 2007 [http://www.celinux.org/elc2007/index.html ELC 2007]&lt;br /&gt;
** Presentations are available at http://tree.celinuxforum.org/CelfPubWiki/ELC2007Presentations&lt;br /&gt;
*Regional conference in Japan - Tokyo, Japan, February 22, 2007 - [http://tree.celinuxforum.org/CelfPubWiki/JapanTechnicalJamboree13 Japan Technical Jamboree 13]&lt;br /&gt;
*Regional conference in Japan - Tokyo, Japan, December 8, 2006 - [http://tree.celinuxforum.org/CelfPubWiki/JapanTechnicalJamboree12 Japan Technical Jamboree 12]&lt;br /&gt;
*Embedded Technology 2006 - Yokohama, Japan, November 15..17,&lt;br /&gt;
*Regional conference in Japan - Tokyo, Japan, October 27, 2006 - [http://tree.celinuxforum.org/CelfPubWiki/JapanTechnicalJamboree11 Japan Technical Jamboree 11]&lt;br /&gt;
*Regional conference in Japan - Tokyo, Japan, August 25, 2006 - [http://tree.celinuxforum.org/CelfPubWiki/JapanTechnicalJamboree10 Japan Technical Jamboree 10]&lt;br /&gt;
*GNOME Embedded and Mobile  (GMAE) forum first meetting at Guadec 2006 in Villanova, Spain. Have a look at the report: {{pdf|Gmae-report-for-celf-2006-08-10.pdf|GMAE Report}}&lt;br /&gt;
*Ottawa Linux Symposium 2006 - Ottawa, Canada, July 19-22, 2006&lt;br /&gt;
** We had a great time in Ottawa!  See the following pages for more information:&lt;br /&gt;
** [[Ottawa Linux Symposium 2006]]&lt;br /&gt;
** [http://tree.celinuxforum.org/CelfPubWiki/OLS2006Demos OLS 2006 CELF Demos]&lt;br /&gt;
*Regional conference in Japan - Tokyo, Japan, July 13, 2006 - [http://tree.celinuxforum.org/CelfPubWiki/JapanTechnicalJamboree9 Japan Technical Jamboree 9]&lt;br /&gt;
*Regional conference in Japan - Tokyo, Japan, May 26, 2006 - [http://tree.celinuxforum.org/CelfPubWiki/JapanTechnicalJamboree8 Japan Technical Jamboree 8]&lt;br /&gt;
*CELF Embedded Linux Conference - San Jose, California, April 11-12, 2006 - [http://www.celinux.org/elc2006/index.html elc2006]&lt;br /&gt;
**Presentations from the conference are being collected at: [[ELC 2006 Presentations]]&lt;br /&gt;
*Regional conference in Japan - Tokyo, Japan, March 24, 2006 [http://tree.celinuxforum.org/CelfPubWiki/JapanTechnicalJamboree7 Japan Technical Jamboree 7]&lt;br /&gt;
*Regional conference in Japan - Tokyo, Japan, January 20, 2006 [http://tree.celinuxforum.org/CelfPubWiki/JapanTechnicalJamboree6 Japan Technical Jamboree 6]&lt;br /&gt;
*Regional conference in Japan - Tokyo, Japan, November 25, 2005 [http://tree.celinuxforum.org/CelfPubWiki/JapanTechnicalJamboree5 Japan Technical Jamboree 5]&lt;br /&gt;
*Regional conference in Japan - Tokyo, Japan, September 30, 2005 [http://tree.celinuxforum.org/CelfPubWiki/JapanTechnicalJamboree4 Japan Technical Jamboree 4]&lt;br /&gt;
*Ottawa Linux Symposium - Ottawa, Canada, July 20-23 - [http://www.linuxsymposium.org/ OLS]&lt;br /&gt;
**CELF was a sponsor again this year for the Ottawa Linux Symposium.  We were permitted to show some demos at the event.  CELF held a Birds-of-a-Feather (BOF) session on embedded Linux. Also, CELF  handed out some prizes at the final address.&lt;br /&gt;
*Regional conference in Japan - Tokyo, Japan, July 15, 2005 [[Japan Technical Jamboree 3]]&lt;br /&gt;
*International technical conference - Yokohama, Japan, June 2005 [[International Technical Jamboree]]&lt;br /&gt;
*Regional conference in Korea - Seoul, Korea, May 14, 2005 - [[CELF Korea Tech Conference]]&lt;br /&gt;
*Linux Conf Australia - Canberra, Australia, April 18, 2005&lt;br /&gt;
**A few individuals attended, and Tim put up a poster of bootup-time results&lt;br /&gt;
*CELF Worldwide Technical Conference - San Jose, January 25, 26, 2005&lt;br /&gt;
**Conference program: [http://tree.celinuxforum.org/CelfPubWiki/TechnicalConference2005 CELF Technical Conference 2005]&lt;br /&gt;
**Presentations from various sessions: [http://tree.celinuxforum.org/CelfPubWiki/TechConference2005Docs Tech Conference 2005 Docs]&lt;br /&gt;
*Regional conference  in Japan - December, 2004 - [[Japan Technical Jamboree 2]]&lt;br /&gt;
*Regional conference in Japan - October, 2004 - [[Japan Technical Jamboree]]&lt;br /&gt;
*Ottawa Linux Symposium, July 2004 - Tim gave a talk, and CELF held a BOF and gave out prizes&lt;br /&gt;
**see [http://www.linuxsymposium.org/proceedings/reprints/Reprint-Bird-OLS2004.pdf OLS2004]&lt;br /&gt;
&lt;br /&gt;
== Links to Papers from other events ==&lt;br /&gt;
*Fosdem 2005 embedded kernel papers - [http://www.embedded-kernel-track.org/2005/papers.html FOSDEM]&lt;br /&gt;
*Ottawa Linux Symposium proceedings - [http://www.linuxsymposium.org/proceedings.php OLS]&lt;br /&gt;
** OLS 2007 - broken out paper links - https://ols2006.108.redhat.com/2007/Reprints/&lt;br /&gt;
*OLS proceedings collected on kernel.org - http://kernel.org/doc/ols/&lt;br /&gt;
[[Category:Events]]&lt;/div&gt;</summary>
		<author><name>TimBird</name></author>	</entry>

	<entry>
		<id>http://elinux.org/Events</id>
		<title>Events</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/Events"/>
				<updated>2008-06-11T23:53:35Z</updated>
		
		<summary type="html">&lt;p&gt;TimBird: /* Upcoming events */ add ELCE 2008&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Upcoming events ==&lt;br /&gt;
* Regional conference in Japan - Tokyo, Japan, July 4, 2008 - [http://tree.celinuxforum.org/CelfPubWiki/JapanTechnicalJamboree21 Japan Technical Jamboree 21]&lt;br /&gt;
* Ottawa Linux Symposium 2008 - Ottawa, Canada, July 23-26&lt;br /&gt;
** Home page: http://www.linuxsymposium.org/2008/&lt;br /&gt;
* Embedded Linux Conference Europe - Ede, The Netherlands, November 6-7, 2008&lt;br /&gt;
** Home page - http://www.embeddedlinuxconference.com/elc_europe08/index.html&lt;br /&gt;
** Call for Presentations - http://tree.celinuxforum.org/CelfPubWiki/ELCE2008CallForPresentations&lt;br /&gt;
&lt;br /&gt;
== Past events ==&lt;br /&gt;
Some information is at: [[Embedded linux events]]&lt;br /&gt;
&lt;br /&gt;
Here is a list of CELF events:&lt;br /&gt;
* Regional conference in Japan - Tokyo, Japan, April 25, 2008 - [http://tree.celinuxforum.org/CelfPubWiki/JapanTechnicalJamboree20 Japan Technical Jamboree 20]&lt;br /&gt;
* Embedded Linux Conference, 2008 - Mountain View, California, USA, April 15-17, 2008&lt;br /&gt;
** Home page: http://www.embeddedlinuxconference.com/&lt;br /&gt;
** [http://tree.celinuxforum.org/CelfPubWiki/ELC2008CallForPresentations Call for sessions]&lt;br /&gt;
* Regional conference in Japan - Tokyo, Japan, February 21, 2008 - [http://tree.celinuxforum.org/CelfPubWiki/JapanTechnicalJamboree19 Japan Technical Jamboree 19]&lt;br /&gt;
* Regional conference in Korea - Seoul, Japan, February 22, 2008 - [http://tree.celinuxforum.org/CelfPubWiki/KoreaTechJamboree2 Korean Technical Jamboree 2]&lt;br /&gt;
* Regional conference in Japan - Tokyo, Japan, December 21, 2007 - [http://tree.celinuxforum.org/CelfPubWiki/JapanTechnicalJamboree18 Japan Technical Jamboree 18]&lt;br /&gt;
*[http://www.celinux.org/elc2008/index.html Embedded Linux Conference - 2008] - Mountain View, California, USA, April 15-17, 2008&lt;br /&gt;
*[http://www.celinux.org/elc_europe07/elc_europe_index.html Embedded Linux Conference - Europe 2007] - Linz, Austria, November 2-4, 2007&lt;br /&gt;
** Presentations are being collected at: [http://tree.celinuxforum.org/CelfPubWiki/ELCEurope2007Presentations ELC Europe 2007 Presentations]&lt;br /&gt;
* Regional conference in Japan - Tokyo, Japan, October 25, 2007 - [http://tree.celinuxforum.org/CelfPubWiki/JapanTechnicalJamboree17 Japan Technical Jamboree 17]&lt;br /&gt;
*Regional conference in Japan - Tokyo, Japan, August 31, 2007 - [http://tree.celinuxforum.org/CelfPubWiki/JapanTechnicalJamboree16 Japan Technical Jamboree 16]&lt;br /&gt;
*Ottawa Linux Symposium 2007 - Ottawa, Canada, June 27-30, 2007&lt;br /&gt;
** [[Ottawa Linux Symposium 2007]]&lt;br /&gt;
** [[OLS 2007 Embedded Linux BOF]] - June 27&lt;br /&gt;
** [[OLS 2007 Embedded Linux Wiki BOF]] - June 27&lt;br /&gt;
** [[OLS 2007 CELF BOF]] - June 29, 7-9pm, Westin Hotel&lt;br /&gt;
*Regional conference in Japan - Tokyo, Japan, June 29, 2007 - [http://tree.celinuxforum.org/CelfPubWiki/JapanTechnicalJamboree15 Japan Technical Jamboree 15]&lt;br /&gt;
*Embedded System Expo &amp;amp; Conference in Japan - Tokyo, Japan, May 16-18&lt;br /&gt;
*Regional conference in Japan - Tokyo, Japan, April 27, 2007 [http://tree.celinuxforum.org/CelfPubWiki/JapanTechnicalJamboree14 Japan Technical Jamboree 14]&lt;br /&gt;
* Embedded Linux Conference, 2007 - San Jose, California, April 17-19, 2007 [http://www.celinux.org/elc2007/index.html ELC 2007]&lt;br /&gt;
** Presentations are available at http://tree.celinuxforum.org/CelfPubWiki/ELC2007Presentations&lt;br /&gt;
*Regional conference in Japan - Tokyo, Japan, February 22, 2007 - [http://tree.celinuxforum.org/CelfPubWiki/JapanTechnicalJamboree13 Japan Technical Jamboree 13]&lt;br /&gt;
*Regional conference in Japan - Tokyo, Japan, December 8, 2006 - [http://tree.celinuxforum.org/CelfPubWiki/JapanTechnicalJamboree12 Japan Technical Jamboree 12]&lt;br /&gt;
*Embedded Technology 2006 - Yokohama, Japan, November 15..17,&lt;br /&gt;
*Regional conference in Japan - Tokyo, Japan, October 27, 2006 - [http://tree.celinuxforum.org/CelfPubWiki/JapanTechnicalJamboree11 Japan Technical Jamboree 11]&lt;br /&gt;
*Regional conference in Japan - Tokyo, Japan, August 25, 2006 - [http://tree.celinuxforum.org/CelfPubWiki/JapanTechnicalJamboree10 Japan Technical Jamboree 10]&lt;br /&gt;
*GNOME Embedded and Mobile  (GMAE) forum first meetting at Guadec 2006 in Villanova, Spain. Have a look at the report: {{pdf|Gmae-report-for-celf-2006-08-10.pdf|GMAE Report}}&lt;br /&gt;
*Ottawa Linux Symposium 2006 - Ottawa, Canada, July 19-22, 2006&lt;br /&gt;
** We had a great time in Ottawa!  See the following pages for more information:&lt;br /&gt;
** [[Ottawa Linux Symposium 2006]]&lt;br /&gt;
** [http://tree.celinuxforum.org/CelfPubWiki/OLS2006Demos OLS 2006 CELF Demos]&lt;br /&gt;
*Regional conference in Japan - Tokyo, Japan, July 13, 2006 - [http://tree.celinuxforum.org/CelfPubWiki/JapanTechnicalJamboree9 Japan Technical Jamboree 9]&lt;br /&gt;
*Regional conference in Japan - Tokyo, Japan, May 26, 2006 - [http://tree.celinuxforum.org/CelfPubWiki/JapanTechnicalJamboree8 Japan Technical Jamboree 8]&lt;br /&gt;
*CELF Embedded Linux Conference - San Jose, California, April 11-12, 2006 - [http://www.celinux.org/elc2006/index.html elc2006]&lt;br /&gt;
**Presentations from the conference are being collected at: [[ELC 2006 Presentations]]&lt;br /&gt;
*Regional conference in Japan - Tokyo, Japan, March 24, 2006 [http://tree.celinuxforum.org/CelfPubWiki/JapanTechnicalJamboree7 Japan Technical Jamboree 7]&lt;br /&gt;
*Regional conference in Japan - Tokyo, Japan, January 20, 2006 [http://tree.celinuxforum.org/CelfPubWiki/JapanTechnicalJamboree6 Japan Technical Jamboree 6]&lt;br /&gt;
*Regional conference in Japan - Tokyo, Japan, November 25, 2005 [http://tree.celinuxforum.org/CelfPubWiki/JapanTechnicalJamboree5 Japan Technical Jamboree 5]&lt;br /&gt;
*Regional conference in Japan - Tokyo, Japan, September 30, 2005 [http://tree.celinuxforum.org/CelfPubWiki/JapanTechnicalJamboree4 Japan Technical Jamboree 4]&lt;br /&gt;
*Ottawa Linux Symposium - Ottawa, Canada, July 20-23 - [http://www.linuxsymposium.org/ OLS]&lt;br /&gt;
**CELF was a sponsor again this year for the Ottawa Linux Symposium.  We were permitted to show some demos at the event.  CELF held a Birds-of-a-Feather (BOF) session on embedded Linux. Also, CELF  handed out some prizes at the final address.&lt;br /&gt;
*Regional conference in Japan - Tokyo, Japan, July 15, 2005 [[Japan Technical Jamboree 3]]&lt;br /&gt;
*International technical conference - Yokohama, Japan, June 2005 [[International Technical Jamboree]]&lt;br /&gt;
*Regional conference in Korea - Seoul, Korea, May 14, 2005 - [[CELF Korea Tech Conference]]&lt;br /&gt;
*Linux Conf Australia - Canberra, Australia, April 18, 2005&lt;br /&gt;
**A few individuals attended, and Tim put up a poster of bootup-time results&lt;br /&gt;
*CELF Worldwide Technical Conference - San Jose, January 25, 26, 2005&lt;br /&gt;
**Conference program: [http://tree.celinuxforum.org/CelfPubWiki/TechnicalConference2005 CELF Technical Conference 2005]&lt;br /&gt;
**Presentations from various sessions: [http://tree.celinuxforum.org/CelfPubWiki/TechConference2005Docs Tech Conference 2005 Docs]&lt;br /&gt;
*Regional conference  in Japan - December, 2004 - [[Japan Technical Jamboree 2]]&lt;br /&gt;
*Regional conference in Japan - October, 2004 - [[Japan Technical Jamboree]]&lt;br /&gt;
*Ottawa Linux Symposium, July 2004 - Tim gave a talk, and CELF held a BOF and gave out prizes&lt;br /&gt;
**see [http://www.linuxsymposium.org/proceedings/reprints/Reprint-Bird-OLS2004.pdf OLS2004]&lt;br /&gt;
&lt;br /&gt;
== Links to Papers from other events ==&lt;br /&gt;
*Fosdem 2005 embedded kernel papers - [http://www.embedded-kernel-track.org/2005/papers.html FOSDEM]&lt;br /&gt;
*Ottawa Linux Symposium proceedings - [http://www.linuxsymposium.org/proceedings.php OLS]&lt;br /&gt;
** OLS 2007 - broken out paper links - https://ols2006.108.redhat.com/2007/Reprints/&lt;br /&gt;
*OLS proceedings collected on kernel.org - http://kernel.org/doc/ols/&lt;br /&gt;
[[Category:Events]]&lt;/div&gt;</summary>
		<author><name>TimBird</name></author>	</entry>

	<entry>
		<id>http://elinux.org/Embedded_linux_events</id>
		<title>Embedded linux events</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/Embedded_linux_events"/>
				<updated>2008-06-11T23:24:16Z</updated>
		
		<summary type="html">&lt;p&gt;TimBird: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Here is information about Embedded Linux-related events (conferences and symposiums)&lt;br /&gt;
&lt;br /&gt;
The main conferences each year are:&lt;br /&gt;
&lt;br /&gt;
* Ottawa Linux Symposium (OSL)&lt;br /&gt;
* LinuxConf Australia (LCA)&lt;br /&gt;
* Linux Kongress (now defunct?)&lt;br /&gt;
* FOSDEM&lt;br /&gt;
* Embedded Linux Conference (ELC)&lt;br /&gt;
* Real-time Linux Workshop (RTLWS)&lt;br /&gt;
&lt;br /&gt;
Miscellaneous other conferences:&lt;br /&gt;
* LinuxWorld?? - embedded track?&lt;br /&gt;
&lt;br /&gt;
== Links to conference proceedings ==&lt;br /&gt;
Here are some links to various conference proceedings:&lt;br /&gt;
&lt;br /&gt;
=== OLS ===&lt;br /&gt;
* All the OLS papers from 2002-2007 - http://kernel.org/doc/ols&lt;/div&gt;</summary>
		<author><name>TimBird</name></author>	</entry>

	<entry>
		<id>http://elinux.org/Events</id>
		<title>Events</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/Events"/>
				<updated>2008-06-11T23:17:34Z</updated>
		
		<summary type="html">&lt;p&gt;TimBird: /* Past events */ add events information page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Upcoming events ==&lt;br /&gt;
* Regional conference in Japan - Tokyo, Japan, July 4, 2008 - [http://tree.celinuxforum.org/CelfPubWiki/JapanTechnicalJamboree21 Japan Technical Jamboree 21]&lt;br /&gt;
* Ottawa Linux Symposium 2008 - Ottawa, Canada, July 23-26&lt;br /&gt;
** Home page: http://www.linuxsymposium.org/2008/&lt;br /&gt;
&lt;br /&gt;
== Past events ==&lt;br /&gt;
Some information is at: [[Embedded linux events]]&lt;br /&gt;
&lt;br /&gt;
Here is a list of CELF events:&lt;br /&gt;
* Regional conference in Japan - Tokyo, Japan, April 25, 2008 - [http://tree.celinuxforum.org/CelfPubWiki/JapanTechnicalJamboree20 Japan Technical Jamboree 20]&lt;br /&gt;
* Embedded Linux Conference, 2008 - Mountain View, California, USA, April 15-17, 2008&lt;br /&gt;
** Home page: http://www.embeddedlinuxconference.com/&lt;br /&gt;
** [http://tree.celinuxforum.org/CelfPubWiki/ELC2008CallForPresentations Call for sessions]&lt;br /&gt;
* Regional conference in Japan - Tokyo, Japan, February 21, 2008 - [http://tree.celinuxforum.org/CelfPubWiki/JapanTechnicalJamboree19 Japan Technical Jamboree 19]&lt;br /&gt;
* Regional conference in Korea - Seoul, Japan, February 22, 2008 - [http://tree.celinuxforum.org/CelfPubWiki/KoreaTechJamboree2 Korean Technical Jamboree 2]&lt;br /&gt;
* Regional conference in Japan - Tokyo, Japan, December 21, 2007 - [http://tree.celinuxforum.org/CelfPubWiki/JapanTechnicalJamboree18 Japan Technical Jamboree 18]&lt;br /&gt;
*[http://www.celinux.org/elc2008/index.html Embedded Linux Conference - 2008] - Mountain View, California, USA, April 15-17, 2008&lt;br /&gt;
*[http://www.celinux.org/elc_europe07/elc_europe_index.html Embedded Linux Conference - Europe 2007] - Linz, Austria, November 2-4, 2007&lt;br /&gt;
** Presentations are being collected at: [http://tree.celinuxforum.org/CelfPubWiki/ELCEurope2007Presentations ELC Europe 2007 Presentations]&lt;br /&gt;
* Regional conference in Japan - Tokyo, Japan, October 25, 2007 - [http://tree.celinuxforum.org/CelfPubWiki/JapanTechnicalJamboree17 Japan Technical Jamboree 17]&lt;br /&gt;
*Regional conference in Japan - Tokyo, Japan, August 31, 2007 - [http://tree.celinuxforum.org/CelfPubWiki/JapanTechnicalJamboree16 Japan Technical Jamboree 16]&lt;br /&gt;
*Ottawa Linux Symposium 2007 - Ottawa, Canada, June 27-30, 2007&lt;br /&gt;
** [[Ottawa Linux Symposium 2007]]&lt;br /&gt;
** [[OLS 2007 Embedded Linux BOF]] - June 27&lt;br /&gt;
** [[OLS 2007 Embedded Linux Wiki BOF]] - June 27&lt;br /&gt;
** [[OLS 2007 CELF BOF]] - June 29, 7-9pm, Westin Hotel&lt;br /&gt;
*Regional conference in Japan - Tokyo, Japan, June 29, 2007 - [http://tree.celinuxforum.org/CelfPubWiki/JapanTechnicalJamboree15 Japan Technical Jamboree 15]&lt;br /&gt;
*Embedded System Expo &amp;amp; Conference in Japan - Tokyo, Japan, May 16-18&lt;br /&gt;
*Regional conference in Japan - Tokyo, Japan, April 27, 2007 [http://tree.celinuxforum.org/CelfPubWiki/JapanTechnicalJamboree14 Japan Technical Jamboree 14]&lt;br /&gt;
* Embedded Linux Conference, 2007 - San Jose, California, April 17-19, 2007 [http://www.celinux.org/elc2007/index.html ELC 2007]&lt;br /&gt;
** Presentations are available at http://tree.celinuxforum.org/CelfPubWiki/ELC2007Presentations&lt;br /&gt;
*Regional conference in Japan - Tokyo, Japan, February 22, 2007 - [http://tree.celinuxforum.org/CelfPubWiki/JapanTechnicalJamboree13 Japan Technical Jamboree 13]&lt;br /&gt;
*Regional conference in Japan - Tokyo, Japan, December 8, 2006 - [http://tree.celinuxforum.org/CelfPubWiki/JapanTechnicalJamboree12 Japan Technical Jamboree 12]&lt;br /&gt;
*Embedded Technology 2006 - Yokohama, Japan, November 15..17,&lt;br /&gt;
*Regional conference in Japan - Tokyo, Japan, October 27, 2006 - [http://tree.celinuxforum.org/CelfPubWiki/JapanTechnicalJamboree11 Japan Technical Jamboree 11]&lt;br /&gt;
*Regional conference in Japan - Tokyo, Japan, August 25, 2006 - [http://tree.celinuxforum.org/CelfPubWiki/JapanTechnicalJamboree10 Japan Technical Jamboree 10]&lt;br /&gt;
*GNOME Embedded and Mobile  (GMAE) forum first meetting at Guadec 2006 in Villanova, Spain. Have a look at the report: {{pdf|Gmae-report-for-celf-2006-08-10.pdf|GMAE Report}}&lt;br /&gt;
*Ottawa Linux Symposium 2006 - Ottawa, Canada, July 19-22, 2006&lt;br /&gt;
** We had a great time in Ottawa!  See the following pages for more information:&lt;br /&gt;
** [[Ottawa Linux Symposium 2006]]&lt;br /&gt;
** [http://tree.celinuxforum.org/CelfPubWiki/OLS2006Demos OLS 2006 CELF Demos]&lt;br /&gt;
*Regional conference in Japan - Tokyo, Japan, July 13, 2006 - [http://tree.celinuxforum.org/CelfPubWiki/JapanTechnicalJamboree9 Japan Technical Jamboree 9]&lt;br /&gt;
*Regional conference in Japan - Tokyo, Japan, May 26, 2006 - [http://tree.celinuxforum.org/CelfPubWiki/JapanTechnicalJamboree8 Japan Technical Jamboree 8]&lt;br /&gt;
*CELF Embedded Linux Conference - San Jose, California, April 11-12, 2006 - [http://www.celinux.org/elc2006/index.html elc2006]&lt;br /&gt;
**Presentations from the conference are being collected at: [[ELC 2006 Presentations]]&lt;br /&gt;
*Regional conference in Japan - Tokyo, Japan, March 24, 2006 [http://tree.celinuxforum.org/CelfPubWiki/JapanTechnicalJamboree7 Japan Technical Jamboree 7]&lt;br /&gt;
*Regional conference in Japan - Tokyo, Japan, January 20, 2006 [http://tree.celinuxforum.org/CelfPubWiki/JapanTechnicalJamboree6 Japan Technical Jamboree 6]&lt;br /&gt;
*Regional conference in Japan - Tokyo, Japan, November 25, 2005 [http://tree.celinuxforum.org/CelfPubWiki/JapanTechnicalJamboree5 Japan Technical Jamboree 5]&lt;br /&gt;
*Regional conference in Japan - Tokyo, Japan, September 30, 2005 [http://tree.celinuxforum.org/CelfPubWiki/JapanTechnicalJamboree4 Japan Technical Jamboree 4]&lt;br /&gt;
*Ottawa Linux Symposium - Ottawa, Canada, July 20-23 - [http://www.linuxsymposium.org/ OLS]&lt;br /&gt;
**CELF was a sponsor again this year for the Ottawa Linux Symposium.  We were permitted to show some demos at the event.  CELF held a Birds-of-a-Feather (BOF) session on embedded Linux. Also, CELF  handed out some prizes at the final address.&lt;br /&gt;
*Regional conference in Japan - Tokyo, Japan, July 15, 2005 [[Japan Technical Jamboree 3]]&lt;br /&gt;
*International technical conference - Yokohama, Japan, June 2005 [[International Technical Jamboree]]&lt;br /&gt;
*Regional conference in Korea - Seoul, Korea, May 14, 2005 - [[CELF Korea Tech Conference]]&lt;br /&gt;
*Linux Conf Australia - Canberra, Australia, April 18, 2005&lt;br /&gt;
**A few individuals attended, and Tim put up a poster of bootup-time results&lt;br /&gt;
*CELF Worldwide Technical Conference - San Jose, January 25, 26, 2005&lt;br /&gt;
**Conference program: [http://tree.celinuxforum.org/CelfPubWiki/TechnicalConference2005 CELF Technical Conference 2005]&lt;br /&gt;
**Presentations from various sessions: [http://tree.celinuxforum.org/CelfPubWiki/TechConference2005Docs Tech Conference 2005 Docs]&lt;br /&gt;
*Regional conference  in Japan - December, 2004 - [[Japan Technical Jamboree 2]]&lt;br /&gt;
*Regional conference in Japan - October, 2004 - [[Japan Technical Jamboree]]&lt;br /&gt;
*Ottawa Linux Symposium, July 2004 - Tim gave a talk, and CELF held a BOF and gave out prizes&lt;br /&gt;
**see [http://www.linuxsymposium.org/proceedings/reprints/Reprint-Bird-OLS2004.pdf OLS2004]&lt;br /&gt;
&lt;br /&gt;
== Links to Papers from other events ==&lt;br /&gt;
*Fosdem 2005 embedded kernel papers - [http://www.embedded-kernel-track.org/2005/papers.html FOSDEM]&lt;br /&gt;
*Ottawa Linux Symposium proceedings - [http://www.linuxsymposium.org/proceedings.php OLS]&lt;br /&gt;
** OLS 2007 - broken out paper links - https://ols2006.108.redhat.com/2007/Reprints/&lt;br /&gt;
*OLS proceedings collected on kernel.org - http://kernel.org/doc/ols/&lt;br /&gt;
[[Category:Events]]&lt;/div&gt;</summary>
		<author><name>TimBird</name></author>	</entry>

	<entry>
		<id>http://elinux.org/System_Size</id>
		<title>System Size</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/System_Size"/>
				<updated>2008-06-11T23:10:40Z</updated>
		
		<summary type="html">&lt;p&gt;TimBird: add runtime size information&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Here are some links to information and projects related to Linux system size.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Technologies for decreasing system size ==&lt;br /&gt;
=== Kernel size reduction ===&lt;br /&gt;
==== Configuration Options ====&lt;br /&gt;
* [[Kernel Size Tuning Guide]] - document about measuring kernel size and configuring the kernel for smallest size&lt;br /&gt;
&lt;br /&gt;
==== The Linux-tiny patchset ====&lt;br /&gt;
* The [[Linux Tiny]] patch set is a collection of patches which can be used to make the Linux kernel consume less space.  The long-term goal of the Linux-tiny project is to mainline these patches.  Several patches have been mainlined over the last few years, and work continues in this area.&lt;br /&gt;
&lt;br /&gt;
==== Compiler options for reducing kernel size ====&lt;br /&gt;
An LWN article talks about three gcc options to shrink the kernel.&lt;br /&gt;
&lt;br /&gt;
[http://lwn.net/Articles/67175/ Shrinking the Kernel with GCC]&lt;br /&gt;
&lt;br /&gt;
The first option is -Os which is already in the tiny kernel patch.&lt;br /&gt;
&lt;br /&gt;
The second option is new in gcc 3.4, -funit-at-a-time. This apparently makes gcc&lt;br /&gt;
do a much better job of inlining and dead code removal.  It reduces the&lt;br /&gt;
size of both text and data.  It depends on another inlining patch that I&lt;br /&gt;
think is in the tiny kernel patch (maybe same idea but different details).&lt;br /&gt;
&lt;br /&gt;
The third option, -mregparm=3, seems to be x86 specific, it instructs the&lt;br /&gt;
compiler to use registers for the first three function arguments. by John Rigby&lt;br /&gt;
&lt;br /&gt;
==== Runtime size of kernel ====&lt;br /&gt;
Often, the focus of memory size reduction for the kernel is on the size of the&lt;br /&gt;
statically compiled image for the kernel.  However, the kernel also allocates&lt;br /&gt;
memory dynamically when it runs.  On loading, the kernel creates several tables&lt;br /&gt;
for things like network and file system structures.&lt;br /&gt;
&lt;br /&gt;
Here is a table showing different kernel hash tables, and their approximate&lt;br /&gt;
size for a 2.6 kernel.  (Table taken from page 25 of&lt;br /&gt;
http://logfs.org/~joern/data_structures.pdf )&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
!Hash Table         !!memory &amp;lt; 512MiB RAM !! memory &amp;gt;=512MiB RAM&lt;br /&gt;
|-&lt;br /&gt;
!                   !!32b/64b       !!32b/64b &lt;br /&gt;
|-&lt;br /&gt;
|TCP established    ||96k/192k      ||384k/768k&lt;br /&gt;
|-&lt;br /&gt;
|TCP bind           || 64k/128k     || 256k/512k&lt;br /&gt;
|-&lt;br /&gt;
|IP route cache     || 128k/256k    ||   512k/1M&lt;br /&gt;
|-&lt;br /&gt;
|Inode-cache        ||  64k/128k    ||   64k/128k&lt;br /&gt;
|-&lt;br /&gt;
|Dentry cache       ||   32k/64k    ||    32k/64k&lt;br /&gt;
|-&lt;br /&gt;
||Total             ||  384k/768k   || 1248k/2496k&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== File system compression ===&lt;br /&gt;
For read-only data, it is useful to utilize a compressed file system.&lt;br /&gt;
The following are used heavily in embedded systems:&lt;br /&gt;
* JFFS2&lt;br /&gt;
* Cramfs&lt;br /&gt;
* SquashFS&lt;br /&gt;
&lt;br /&gt;
See the [[File Systems]] page for more information.&lt;br /&gt;
&lt;br /&gt;
=== Library savings ===&lt;br /&gt;
==== Use of a smaller libc ====&lt;br /&gt;
Glibc is the default C library used for Linux systems.  Glibc is about 2 meg. in size.  Other C libraries&lt;br /&gt;
are also available for Linux, and they offer varying degrees of compatibility and size savings.&lt;br /&gt;
In general, uClibc is considered a very good alternative to glibc, for systems where size is an issue.&lt;br /&gt;
&lt;br /&gt;
* [http://uclibc.org/ uClibc] - small footprint but complete C library&lt;br /&gt;
* [http://www.fefe.de/dietlibc/ dietlibc] - another library to produce very small statically compiled executables.&lt;br /&gt;
* [http://www.kernel.org/pub/linux/libs/klibc/ klibc] - very small library for use in init ram filesystems&lt;br /&gt;
* Subset Libc Specification - CELF once considered the possibility of creating a subset libc specification.  Some companies have also examined the possibility of modularizing glibc, so that parts of it can be made configurable.  Preliminary research indicates that this could be a very difficult thing, since glibc has very messy function interdependencies.&lt;br /&gt;
&lt;br /&gt;
==== Static Linking ====&lt;br /&gt;
If your set of applications is small, sometimes it makes more sense to statically link&lt;br /&gt;
your applications than to use shared libraries.  Shared libraries by default include all&lt;br /&gt;
symbols (functions and data structures) for the features a library provides.  However, when&lt;br /&gt;
you static link a program to a library, only the symbols that are actually referenced&lt;br /&gt;
are linked in and included in the program.&lt;br /&gt;
&lt;br /&gt;
==== Library reduction ====&lt;br /&gt;
It is possible to reduce the size of shared libraries, by eliminating unused symbols.&lt;br /&gt;
&lt;br /&gt;
MontaVista released a tool for library optimization.  This tool scans the entire file system,&lt;br /&gt;
and can rebuild the shared libraries for the system, including only the symbols needed for&lt;br /&gt;
the set of applications in the indicated file system.&lt;br /&gt;
&lt;br /&gt;
Care needs to be taken with this approach, since it may make it difficult to use add-on&lt;br /&gt;
programs or or do in-field upgrades (since symbols required by the new software may not&lt;br /&gt;
be present in the optimized libraries).  But for some fixed-function devices, this can&lt;br /&gt;
reduce your library footprint dramatically.&lt;br /&gt;
&lt;br /&gt;
See http://libraryopt.sourceforge.net/&lt;br /&gt;
&lt;br /&gt;
==== Deferred Library Loading ====&lt;br /&gt;
It is possible to reduce the RAM runtime footprint for a product, by lazily loading shared&lt;br /&gt;
libraries, and by breaking up library dependencies.  Panasonic did some research into&lt;br /&gt;
a process called Deferred Library Loading, which they presented at ELC 2007.&lt;br /&gt;
&lt;br /&gt;
See the [http://tree.celinuxforum.org/CelfPubWiki/ELC2007Presentations?action=AttachFile&amp;amp;do=get&amp;amp;target=DefferdDynamicLoading_20070417.pdf Deferred Dynamic Loading] presentation.&lt;br /&gt;
&lt;br /&gt;
=== Execute-in-place ===&lt;br /&gt;
You can save RAM memory by using some text or data directly from flash.&lt;br /&gt;
&lt;br /&gt;
==== Kernel XIP ====&lt;br /&gt;
By executing the kernel in-place from flash, it is possible to save RAM space.&lt;br /&gt;
*see [[Kernel XIP]]&lt;br /&gt;
&lt;br /&gt;
==== Application XIP ====&lt;br /&gt;
By executing applications in-place from flash, it is possible to save RAM space.&lt;br /&gt;
*see [[Application XIP]]&lt;br /&gt;
&lt;br /&gt;
==== Data Read In Place (DRIP) ====&lt;br /&gt;
This is a technique for keeping data in flash, until it is written to, and then&lt;br /&gt;
making a RAM page for it.&lt;br /&gt;
*see [[Data Read In Place]]&lt;br /&gt;
&lt;br /&gt;
== Size measurement tools and techniques ==&lt;br /&gt;
=== Kernel size measurement data ===&lt;br /&gt;
* [http://testlab.celinuxforum.org/bloatwatch/index.cgi Bloatwatch] - a kernel size regression analysis tool.&lt;br /&gt;
** Bloatwatch provides a great amount of detail, and the ability to compare the size of kernel versions over time. The range of kernels covered is from 2.6.12-rc2 to 2.6.17-rc1. Unfortunately, the system to&lt;br /&gt;
collect kernels and test them broke about the time of 2.6.17, and the system stopped operating at that time.&lt;br /&gt;
** If you have interest in reviving this tool to make it operational again, please contact [[User:Tim Bird]].  [[CELF]] has some contract money earmarked for this project.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== How to measure the kernel image size ===&lt;br /&gt;
*to see the size of the major kernel sections (code and data):&lt;br /&gt;
:&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;size vmlinux */built-in.o&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
[tbird@crest ebony]$ size vmlinux */built-in.o&lt;br /&gt;
   text    data     bss     dec     hex filename&lt;br /&gt;
2921377  369712  132996 3424085  343f55 vmlinux&lt;br /&gt;
 764472   35692   22768  822932   c8e94 drivers/built-in.o&lt;br /&gt;
 918344   22364   36824  977532   eea7c fs/built-in.o&lt;br /&gt;
  18260    1868    1604   21732    54e4 init/built-in.o&lt;br /&gt;
  39960     864     224   41048    a058 ipc/built-in.o&lt;br /&gt;
 257292   14656   34516  306464   4ad20 kernel/built-in.o&lt;br /&gt;
  34728     156    2280   37164    912c lib/built-in.o&lt;br /&gt;
 182312    2704     736  185752   2d598 mm/built-in.o&lt;br /&gt;
 620864   20820   26676  668360   a32c8 net/built-in.o&lt;br /&gt;
   1912       0       0    1912     778 security/built-in.o&lt;br /&gt;
    133       0       0     133      85 usr/built-in.o&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
*to see the size of the largest kernel symbols:&lt;br /&gt;
** &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;nm --size -r vmlinux&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
[tbird@crest ebony]$ nm --size -r vmlinux | head -10&lt;br /&gt;
00008000 b read_buffers&lt;br /&gt;
00004000 b __log_buf&lt;br /&gt;
00003100 B ide_hwifs&lt;br /&gt;
000024f8 T jffs2_garbage_collect_pass&lt;br /&gt;
00002418 T journal_commit_transaction&lt;br /&gt;
00002400 b futex_queues&lt;br /&gt;
000021a8 t jedec_probe_chip&lt;br /&gt;
00002000 b write_buf&lt;br /&gt;
00002000 D init_thread_union&lt;br /&gt;
00001e6c t tcp_ack&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== How to measure the memory usage at runtime ===&lt;br /&gt;
See [[Runtime Memory Measurement]] for a description of ways to measure runtime memory usage in Linux.&lt;br /&gt;
&lt;br /&gt;
Also, see [[Accurate Memory Measurement]] for a description of techniques (and patches) which can be used to measure the runtime memory more accurately.&lt;br /&gt;
&lt;br /&gt;
=== Linux size increase from 2.4 to 2.6 ===&lt;br /&gt;
Linux increased in size by between 10% and 30% from version 2.4 to 2.6.  This incremental growth in kernel size has been a big concern by forum members.&lt;br /&gt;
&lt;br /&gt;
Please see the [[Szwg Linux 26Data]] page for supporting data.&lt;br /&gt;
&lt;br /&gt;
=== GCC Code-Size Benchmarking ===&lt;br /&gt;
CSiBE is a code size benchmark for the GCC compiler. The primary purpose of CSiBE is to monitor the size of the code generated by GCC. In addition, compilation time and code performance measurements are also provided.&lt;br /&gt;
&lt;br /&gt;
[http://www.inf.u-szeged.hu/csibe/ CSiBE]&lt;br /&gt;
&lt;br /&gt;
== Case Studies ==&lt;br /&gt;
* Motorola reduction of system size (presumably for cell phones) using 2.4 Linux:  MotSizeReduction.ppt - this is a placeholder for this Powerpoint as it was too big to upload to the wiki. Email btraynor at gmail.com if you need it immediately.&lt;br /&gt;
&lt;br /&gt;
== Other Tidbits on System Size ==&lt;br /&gt;
=== Memory leak detection for the kernel ===&lt;br /&gt;
Catalin Marinas of ARM has been recently (as of 2.6.17?) been posting a memory leak detector for the Linux kernel.  It may get mainlined in the future.  Here's a link to the LKML discussions around it: http://lkml.org/lkml/2006/6/11/39&lt;br /&gt;
&lt;br /&gt;
=== How System Size may affect performance ===&lt;br /&gt;
It has long been theorized that reducing system size could provide a performance benefit&lt;br /&gt;
because it could reduce cache misses.  There does not appear to be hard data to support&lt;br /&gt;
this theory on Linux, but this has been discussed on the kernel mailing list.&lt;br /&gt;
&lt;br /&gt;
See [http://groups.google.com/group/linux.kernel/msg/e1f9f579a946333e?hl=en&amp;amp; this post by Linus Torvalds]&lt;br /&gt;
&lt;br /&gt;
[[Category:System Size]]&lt;/div&gt;</summary>
		<author><name>TimBird</name></author>	</entry>

	<entry>
		<id>http://elinux.org/Power_Management</id>
		<title>Power Management</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/Power_Management"/>
				<updated>2008-06-04T23:19:52Z</updated>
		
		<summary type="html">&lt;p&gt;TimBird: add links to PM presentations from recent CELF conferences&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page has information about Power Management for Linux. Power Management exists because many products are handheld or mobile, and consumers are interested in using their products for as long as possible on a single battery charge.&lt;br /&gt;
&lt;br /&gt;
== Power Management Technology/Project pages ==&lt;br /&gt;
* http://www.lesswatts.org/index.php - LessWatts.org&lt;br /&gt;
** LessWatts.org is about how you can save real watts, however you use Linux on your computer or computers.&lt;br /&gt;
** LessWatts is about creating a community around saving power on Linux, bringing developers, users, and sysadmins together to share software, optimizations, and tips and tricks.&lt;br /&gt;
&lt;br /&gt;
== CELF Standards ==&lt;br /&gt;
See here [http://tree.celinuxforum.org/pubwiki/moin.cgi/CELFPmRequirements2006 CELF PM Requirements 2006]&lt;br /&gt;
&lt;br /&gt;
== Documents ==&lt;br /&gt;
*Mapping of ACPI states to omap power states: {{pdf|Acpi-to-omap2-mapping.pdf|ACPI to OMAP2 Mapping}}&lt;br /&gt;
&lt;br /&gt;
For some good overviews of different PM features relevant to embedded,&lt;br /&gt;
you may want to look at the following papers:&lt;br /&gt;
&lt;br /&gt;
Every Microamp is Sacred - A Dynamic Voltage and Current Control&lt;br /&gt;
Interface for the Linux Kernel - Liam Girdwood&lt;br /&gt;
http://www.celinux.org/elc08_presentations/regulator-api-celf.pdf&lt;br /&gt;
&lt;br /&gt;
Power Management Quality of Service and How You Could Use it in&lt;br /&gt;
Your Embedded Application - Mark Gross&lt;br /&gt;
http://www.celinux.org/elc08_presentations/elc2008_pm_qos_slides.pdf&lt;br /&gt;
&lt;br /&gt;
Building Blocks for Embedded Power Management - Kevin Hilman&lt;br /&gt;
http://www.celinux.org/elc08_presentations/PM_Building_Blocks1.pdf&lt;br /&gt;
&lt;br /&gt;
Linux Suspend-to-Disk Objectives for Consumer Electronic Devices -&lt;br /&gt;
Vitaly Wool&lt;br /&gt;
http://tree.celinuxforum.org/CelfPubWiki/ELCEurope2007Presentations?action=AttachFile&amp;amp;do=view&amp;amp;target=std.pdf&lt;br /&gt;
&lt;br /&gt;
Linux Clock Management Framework - Siarhei Yermalayeu&lt;br /&gt;
http://tree.celinuxforum.org/CelfPubWiki/ELCEurope2007Presentations?action=AttachFile&amp;amp;do=view&amp;amp;target=ELC_2007_Linux_clock_fmw.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Open Source Projects/Mailing Lists ==&lt;br /&gt;
*[https://lists.osdl.org/mailman/listinfo/linux-pm linux-pm] mailing list (and list [http://lists.osdl.org/pipermail/linux-pm/ archives]).&lt;br /&gt;
*[http://dynamicpower.sourceforge.net Dynamic Power] at sourceforge.&lt;br /&gt;
&lt;br /&gt;
[[Category:Power Management]]&lt;/div&gt;</summary>
		<author><name>TimBird</name></author>	</entry>

	<entry>
		<id>http://elinux.org/File:Linux-tiny-revival-jamboree16.pdf</id>
		<title>File:Linux-tiny-revival-jamboree16.pdf</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/File:Linux-tiny-revival-jamboree16.pdf"/>
				<updated>2007-09-19T17:56:19Z</updated>
		
		<summary type="html">&lt;p&gt;TimBird: Presentation by Tim Bird for CELF Japan Technical Jamboree #16, describing the revival of the Linux-tiny project.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Presentation by Tim Bird for CELF Japan Technical Jamboree #16, describing the revival of the Linux-tiny project.&lt;/div&gt;</summary>
		<author><name>TimBird</name></author>	</entry>

	<entry>
		<id>http://elinux.org/Linux_Tiny</id>
		<title>Linux Tiny</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/Linux_Tiny"/>
				<updated>2007-09-19T17:54:57Z</updated>
		
		<summary type="html">&lt;p&gt;TimBird: /* Resources */ add presentation from Jamboree 16&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
The linux-tiny patchset is a series of patches against the 2.6 mainline Linux kernel to reduce its memory&lt;br /&gt;
and disk footprint, as well as to add features to aid working on small systems. Target users are&lt;br /&gt;
developers of embedded system and users of small or legacy machines such as 386s and handhelds.&lt;br /&gt;
&lt;br /&gt;
To the degree possible, the patchset should serve as a staging ground for patches, until they can&lt;br /&gt;
be mainlined.  Therefore, over time the set of patches in the set will fluctuate as new patches&lt;br /&gt;
are submitted, and other patches are mainlined.&lt;br /&gt;
&lt;br /&gt;
== Resources ==&lt;br /&gt;
* Project home page: [http://www.selenic.com/tiny-about/ Linux Tiny]&lt;br /&gt;
* Project mailing list: [http://selenic.com/mailman/listinfo/linux-tiny Mailing List]&lt;br /&gt;
* A Linux Weekly News article about the project is at: [http://lwn.net/Articles/63516/ LWN Article (Dec 2003)]&lt;br /&gt;
* [[Image:Alert.gif]]  [http://tree.celinuxforum.org/CelfPubWiki/TechConference2005Docs?action=AttachFile&amp;amp;do=get&amp;amp;target=linux-tiny.pdf Linux-tiny Presentation] by Matt Mackall, delivered at CELF's Technical Conference in April 2005.&lt;br /&gt;
* {{pdf|Linux-tiny-revival-jamboree16.pdf|Linux-tiny revival}} presentation given by Tim Bird at the Japan Technical Jamboree #16 in August 2007&lt;br /&gt;
** This presentation describes the current status of the Linux-tiny patches, describes the improved memory accounting feature, gives some size number for various config options, and describes the project revival effort.&lt;br /&gt;
&lt;br /&gt;
== Original Announcements and e-mail ==&lt;br /&gt;
The original (Dec 11, 2003) announcement about the patchset, to the kernel mailing list, is available here:&lt;br /&gt;
* [http://lwn.net/Articles/62858/ Announcement]&lt;br /&gt;
&lt;br /&gt;
Here are some other announcements from Matt Mackall to LKML:&lt;br /&gt;
*[http://www.ussg.iu.edu/hypermail/linux/kernel/0312.3/0454.html 2.6.0-tiny1 Dec 27, 2003]&lt;br /&gt;
*[http://www.ussg.iu.edu/hypermail/linux/kernel/0401.0/0403.html 2.6.1-rc1-tin1 Jan 2, 2004]&lt;br /&gt;
*[http://www.ussg.iu.edu/hypermail/linux/kernel/0401.0/1256.html 2.6.1-rc1-tiny2 Jan 6, 2004]&lt;br /&gt;
&lt;br /&gt;
Recent discussion thread on lkml is summarized at: [http://kt.zork.net/kernel-traffic/latest.html#6 LKML Thread Summary]&lt;br /&gt;
The thread is available at [http://www.google.com/groups?hl=en&amp;amp;lr=&amp;amp;ie=UTF-8&amp;amp;threadm=19Kuz-872-3%40gated-at.bofh.it&amp;amp;rnum=1&amp;amp;prev=/groups%3Fhl%3Den%26lr%3D%26ie%3DUTF-8%26selm%3D19Kuz-872-3%2540gated-at.bofh.it here]&lt;br /&gt;
&lt;br /&gt;
Note that currently, the smallest kernel that is reported in this thread is 197K compressed.&lt;br /&gt;
&lt;br /&gt;
== Download ==&lt;br /&gt;
=== Last release (for 2.6.22.5)  ===&lt;br /&gt;
A recent Linux-tiny patchset release is available here: [[Media:Tiny-quilt-2.6.22.5-1.tar.gz]]&lt;br /&gt;
&lt;br /&gt;
=== Installation Instructions ===&lt;br /&gt;
These instructions were for the Linux-tiny release for 2.6.22.5.  Adjust accordingly&lt;br /&gt;
for a different kernel version.&lt;br /&gt;
&lt;br /&gt;
To apply the above patches, you need the referenced kernel (2.6.22) and quilt.&lt;br /&gt;
Follow these steps:&lt;br /&gt;
* wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.22.tar.bz2&lt;br /&gt;
* tar -xjf linux-2.6.22.tar.bz2&lt;br /&gt;
* wget http://www.kernel.org/pub/linux/kernel/v2.6/patch-2.6.22.5.bz2&lt;br /&gt;
* wget http://elinux.org/images/7/79/Tiny-quilt-2.6.22.5-1.tar.gz&lt;br /&gt;
* cd linux-2.6.22&lt;br /&gt;
* bzcat ../patch-2.6.22.5.bz2 | patch -p1&lt;br /&gt;
* tar -xzf ../Tiny-quilt-2.6.22-5-1.tar.gz&lt;br /&gt;
* quilt push -a&lt;br /&gt;
* cd ..&lt;br /&gt;
* mv linux-2.6.22 linux-2.6.22.5-tiny1&lt;br /&gt;
&lt;br /&gt;
=== Auxiliary tools ===&lt;br /&gt;
Here is a short shell script for making a tiny-quilt release: [[Media:release-tiny]]&lt;br /&gt;
&lt;br /&gt;
=== Older releases ===&lt;br /&gt;
&lt;br /&gt;
* Linux 2.6.22.1:&lt;br /&gt;
** [[Media:Tiny-quilt-2.6.22.1-1.tar.gz]]&lt;br /&gt;
* Linux 2.6.16.19&lt;br /&gt;
** broken-out patchset: [[Media:2.6.16.19-tiny1-broken-out.tar.bz2|2.6.16.19-tiny1-broken-out]]&lt;br /&gt;
** Porting notes: [[Media:linuxtinyNOTES.txt|notes]]&lt;br /&gt;
* Linux 2.6.0 to 2.6.14:&lt;br /&gt;
** Older Linux-tiny patchsets can be downloaded from: [http://selenic.com/tiny/ Linux Tiny Patchset]&lt;br /&gt;
&lt;br /&gt;
== Test Project and Results ==&lt;br /&gt;
The CELF System Size working group has worked extensively with the Linux-tiny patch set. There is a script to produce a report of size reductions for the individual patches&lt;br /&gt;
in the patchset, and results from various vendors about their use of Linux-tiny. See [[Linux Tiny Test Project]]&lt;br /&gt;
&lt;br /&gt;
There are some miscellaneous usage notes at: [[Linux Tiny Notes]]&lt;br /&gt;
&lt;br /&gt;
== License ==&lt;br /&gt;
The Linux-tiny patches apply against the Linux kernel, and are provided under the GNU General&lt;br /&gt;
Public License (GPL), version 2 only [http://www.fsf.org/licensing/licenses/info/GPLv2.html].  (This is the same license as the Linux kernel.)&lt;br /&gt;
&lt;br /&gt;
[[Category: Linux Tiny]]&lt;/div&gt;</summary>
		<author><name>TimBird</name></author>	</entry>

	<entry>
		<id>http://elinux.org/Vendors</id>
		<title>Vendors</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/Vendors"/>
				<updated>2007-09-11T15:28:06Z</updated>
		
		<summary type="html">&lt;p&gt;TimBird: /* Overview */ add japan as country for lineo solutions&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
&lt;br /&gt;
This page lists companies who offer services around embedded Linux, such as training, support, etc.  We also list companies who provide Linux distributions specifically targeting embedded uses.  If you are looking for companies who build and sell devices with Linux as their operating system, please see the [[Companies]] page.&lt;br /&gt;
&lt;br /&gt;
* [http://www.katdc.com KAT Digital Corp.]&lt;br /&gt;
* [http://www.sidebranch.com Sidebranch], The Netherlands.&lt;br /&gt;
* [http://www.mvista.com/ MontaVista]&lt;br /&gt;
* [http://www.timesys.com/ TimeSys]&lt;br /&gt;
* [http://www.windriver.com/ Wind River]&lt;br /&gt;
* [http://www.linutronix.de/ Linutronix], Germany&lt;br /&gt;
* [http://www.lineo.co.jp/eng/index.html Lineo Solutions], Japan&lt;br /&gt;
* [http://www.denx.de/ DENX Software Engineering]&lt;br /&gt;
* [http://www.drivingdevices.com/ Driving Devices Limited], United Kingdom&lt;/div&gt;</summary>
		<author><name>TimBird</name></author>	</entry>

	<entry>
		<id>http://elinux.org/Linux_Tiny</id>
		<title>Linux Tiny</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/Linux_Tiny"/>
				<updated>2007-09-06T11:58:14Z</updated>
		
		<summary type="html">&lt;p&gt;TimBird: add license note&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
The linux-tiny patchset is a series of patches against the 2.6 mainline Linux kernel to reduce its memory&lt;br /&gt;
and disk footprint, as well as to add features to aid working on small systems. Target users are&lt;br /&gt;
developers of embedded system and users of small or legacy machines such as 386s and handhelds.&lt;br /&gt;
&lt;br /&gt;
== Resources ==&lt;br /&gt;
* Project home page: [http://www.selenic.com/tiny-about/ Linux Tiny]&lt;br /&gt;
* Project mailing list: [http://selenic.com/mailman/listinfo/linux-tiny Mailing List]&lt;br /&gt;
* A Linux Weekly News article about the project is at: [http://lwn.net/Articles/63516/ LWN Article]&lt;br /&gt;
* [[Image:Alert.gif]] - [http://tree.celinuxforum.org/CelfPubWiki/TechConference2005Docs?action=AttachFile&amp;amp;do=get&amp;amp;target=linux-tiny.pdf Linux-tiny Presentation] by Matt Mackall, delivered at CELF's Technical Conference in 2005.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Original Announcements and e-mail ==&lt;br /&gt;
The original (Dec 11, 2003) announcement about the patchset, to the kernel mailing list, is available here:&lt;br /&gt;
* [http://lwn.net/Articles/62858/ Announcement]&lt;br /&gt;
&lt;br /&gt;
Here are some other announcements from Matt Mackall to LKML:&lt;br /&gt;
*[http://www.ussg.iu.edu/hypermail/linux/kernel/0312.3/0454.html 2.6.0-tiny1 Dec 27, 2003]&lt;br /&gt;
*[http://www.ussg.iu.edu/hypermail/linux/kernel/0401.0/0403.html 2.6.1-rc1-tin1 Jan 2, 2004]&lt;br /&gt;
*[http://www.ussg.iu.edu/hypermail/linux/kernel/0401.0/1256.html 2.6.1-rc1-tiny2 Jan 6, 2004]&lt;br /&gt;
&lt;br /&gt;
Recent discussion thread on lkml is summarized at: [http://kt.zork.net/kernel-traffic/latest.html#6 LKML Thread Summary]&lt;br /&gt;
The thread is available at [http://www.google.com/groups?hl=en&amp;amp;lr=&amp;amp;ie=UTF-8&amp;amp;threadm=19Kuz-872-3%40gated-at.bofh.it&amp;amp;rnum=1&amp;amp;prev=/groups%3Fhl%3Den%26lr%3D%26ie%3DUTF-8%26selm%3D19Kuz-872-3%2540gated-at.bofh.it here]&lt;br /&gt;
&lt;br /&gt;
Note that currently, the smallest kernel that is reported in this thread is 197K compressed.&lt;br /&gt;
&lt;br /&gt;
== Download ==&lt;br /&gt;
=== Last release (for 2.6.22.5)  ===&lt;br /&gt;
A recent Linux-tiny patchset release is available here: [[Media:Tiny-quilt-2.6.22.5-1.tar.gz]]&lt;br /&gt;
&lt;br /&gt;
=== Installation Instructions ===&lt;br /&gt;
These instructions were for the Linux-tiny release for 2.6.22.5.  Adjust accordingly&lt;br /&gt;
for a different kernel version.&lt;br /&gt;
&lt;br /&gt;
To apply the above patches, you need the referenced kernel (2.6.22) and quilt.&lt;br /&gt;
Follow these steps:&lt;br /&gt;
* wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.22.tar.bz2&lt;br /&gt;
* tar -xjf linux-2.6.22.tar.bz2&lt;br /&gt;
* wget http://www.kernel.org/pub/linux/kernel/v2.6/patch-2.6.22.5.bz2&lt;br /&gt;
* wget http://elinux.org/images/7/79/Tiny-quilt-2.6.22.5-1.tar.gz&lt;br /&gt;
* cd linux-2.6.22&lt;br /&gt;
* bzcat ../patch-2.6.22.5.bz2 | patch -p1&lt;br /&gt;
* tar -xzf ../Tiny-quilt-2.6.22-5-1.tar.gz&lt;br /&gt;
* quilt push -a&lt;br /&gt;
* cd ..&lt;br /&gt;
* mv linux-2.6.22 linux-2.6.22.5-tiny1&lt;br /&gt;
&lt;br /&gt;
=== Auxiliary tools ===&lt;br /&gt;
Here is a short shell script for making a tiny-quilt release: [[Media:release-tiny]]&lt;br /&gt;
&lt;br /&gt;
=== Older releases ===&lt;br /&gt;
&lt;br /&gt;
* Linux 2.6.22.1:&lt;br /&gt;
** [[Media:Tiny-quilt-2.6.22.1-1.tar.gz]]&lt;br /&gt;
* Linux 2.6.16.19&lt;br /&gt;
** broken-out patchset: [[Media:2.6.16.19-tiny1-broken-out.tar.bz2|2.6.16.19-tiny1-broken-out]]&lt;br /&gt;
** Porting notes: [[Media:linuxtinyNOTES.txt|notes]]&lt;br /&gt;
* Linux 2.6.0 to 2.6.14:&lt;br /&gt;
** Older Linux-tiny patchsets can be downloaded from: [http://selenic.com/tiny/ Linux Tiny Patchset]&lt;br /&gt;
&lt;br /&gt;
== Test Project and Results ==&lt;br /&gt;
The CELF System Size working group has worked extensively with the Linux-tiny patch set. There is a script to produce a report of size reductions for the individual patches&lt;br /&gt;
in the patchset, and results from various vendors about their use of Linux-tiny. See [[Linux Tiny Test Project]]&lt;br /&gt;
&lt;br /&gt;
There are some miscellaneous usage notes at: [[Linux Tiny Notes]]&lt;br /&gt;
&lt;br /&gt;
== License ==&lt;br /&gt;
The Linux-tiny patches apply against the Linux kernel, and are provided under the GNU General&lt;br /&gt;
Public License (GPL), version 2 only.  (This is the same license as the Linux kernel.)&lt;br /&gt;
&lt;br /&gt;
[[Category: Linux Tiny]]&lt;/div&gt;</summary>
		<author><name>TimBird</name></author>	</entry>

	<entry>
		<id>http://elinux.org/System_Size</id>
		<title>System Size</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/System_Size"/>
				<updated>2007-09-05T06:21:30Z</updated>
		
		<summary type="html">&lt;p&gt;TimBird: /* SquashFS file system */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Here are some links to information and projects related to Linux system size.&lt;br /&gt;
&lt;br /&gt;
== Documentation on reducing kernel size ==&lt;br /&gt;
[[Kernel Size Tuning Guide]] is a draft of a document on the subject of measuring and reducing the size of the Linux kernel&lt;br /&gt;
&lt;br /&gt;
* [[Kernel Size Tuning Guide]]&lt;br /&gt;
* http://www.halobates.de/memorywaste.pdf - Great paper by Andi Kleen, of SUSE Labs, about dynamic memory usage of Linux systems&lt;br /&gt;
&lt;br /&gt;
== Technologies for decreasing system size ==&lt;br /&gt;
=== The Linux-tiny patchset ===&lt;br /&gt;
* see the [[Linux Tiny]] page.  There is a project to characterize the sub-patches in the Linux-tiny patchset, in order to prioritize them for porting to non-x86 architectures.&lt;br /&gt;
* see [[Linux Tiny Test Project]]&lt;br /&gt;
&lt;br /&gt;
=== Compiler options for reducing kernel size ===&lt;br /&gt;
An LWN article talks about three gcc options to shrink the kernel.&lt;br /&gt;
&lt;br /&gt;
[http://lwn.net/Articles/67175/ Shrinking the Kernel with GCC]&lt;br /&gt;
&lt;br /&gt;
The first option is -Os which is already in the tiny kernel patch.&lt;br /&gt;
&lt;br /&gt;
The second option is new in gcc 3.4, -funit-at-a-time. This apparently makes gcc&lt;br /&gt;
do a much better job of inlining and dead code removal.  It reduces the&lt;br /&gt;
size of both text and data.  It depends on another inlining patch that I&lt;br /&gt;
think is in the tiny kernel patch (maybe same idea but different details).&lt;br /&gt;
&lt;br /&gt;
The third option, -mregparm=3, seems to be x86 specific, it instructs the&lt;br /&gt;
compiler to use registers for the first three function arguments. by John Rigby&lt;br /&gt;
&lt;br /&gt;
=== compressed file system ===&lt;br /&gt;
For read-only data, it is useful to utilize a compressed file system.  The following are used heavily in embedded systems:&lt;br /&gt;
*Cramfs - [should put some information or link here]&lt;br /&gt;
*SquashFS - see the [[Squash Fs]] page&lt;br /&gt;
&lt;br /&gt;
=== Use of a smaller libc ===&lt;br /&gt;
*[http://uclibc.org/ uClibc] - small footprint but complete C library&lt;br /&gt;
*[http://www.kernel.org/pub/linux/libs/klibc/ klibc] - very small library for use in init ram filesystems&lt;br /&gt;
*[http://www.fefe.de/dietlibc/ dietlibc] - another library to produce very small statically compiled executables.&lt;br /&gt;
*Subset Libc Specification - CELF is researching the possibility of creating a subset libc specification&lt;br /&gt;
&lt;br /&gt;
=== Kernel XIP ===&lt;br /&gt;
By executing the kernel in-place from flash, it is possible to save RAM space.&lt;br /&gt;
*see [[Kernel XIP]]&lt;br /&gt;
&lt;br /&gt;
=== Application XIP ===&lt;br /&gt;
By executing applications in-place from flash, it is possible to save RAM space.&lt;br /&gt;
*see ApplicationXIP&lt;br /&gt;
&lt;br /&gt;
=== Data Read In Place (DRIP) ===&lt;br /&gt;
This is a technique for keeping data in flash, until it is written to, and then&lt;br /&gt;
making a RAM page for it.&lt;br /&gt;
*see [[Data Read In Place]]&lt;br /&gt;
&lt;br /&gt;
== Size measurement tools and techniques ==&lt;br /&gt;
=== How to measure the kernel image size ===&lt;br /&gt;
*to see the size of the major kernel sections (code and data):&lt;br /&gt;
:&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;size vmlinux */built-in.o&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
[tbird@crest ebony]$ size vmlinux */built-in.o&lt;br /&gt;
   text    data     bss     dec     hex filename&lt;br /&gt;
2921377  369712  132996 3424085  343f55 vmlinux&lt;br /&gt;
 764472   35692   22768  822932   c8e94 drivers/built-in.o&lt;br /&gt;
 918344   22364   36824  977532   eea7c fs/built-in.o&lt;br /&gt;
  18260    1868    1604   21732    54e4 init/built-in.o&lt;br /&gt;
  39960     864     224   41048    a058 ipc/built-in.o&lt;br /&gt;
 257292   14656   34516  306464   4ad20 kernel/built-in.o&lt;br /&gt;
  34728     156    2280   37164    912c lib/built-in.o&lt;br /&gt;
 182312    2704     736  185752   2d598 mm/built-in.o&lt;br /&gt;
 620864   20820   26676  668360   a32c8 net/built-in.o&lt;br /&gt;
   1912       0       0    1912     778 security/built-in.o&lt;br /&gt;
    133       0       0     133      85 usr/built-in.o&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
*to see the size of the largest kernel symbols:&lt;br /&gt;
** &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;nm --size -r vmlinux&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
[tbird@crest ebony]$ nm --size -r vmlinux | head -10&lt;br /&gt;
00008000 b read_buffers&lt;br /&gt;
00004000 b __log_buf&lt;br /&gt;
00003100 B ide_hwifs&lt;br /&gt;
000024f8 T jffs2_garbage_collect_pass&lt;br /&gt;
00002418 T journal_commit_transaction&lt;br /&gt;
00002400 b futex_queues&lt;br /&gt;
000021a8 t jedec_probe_chip&lt;br /&gt;
00002000 b write_buf&lt;br /&gt;
00002000 D init_thread_union&lt;br /&gt;
00001e6c t tcp_ack&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== How to measure the memory usage at runtime ===&lt;br /&gt;
See [[Runtime Memory Measurement]] for a description of ways to measure runtime memory usage in Linux.&lt;br /&gt;
&lt;br /&gt;
Also, see [[Accurate Memory Measurement]] for a description of techniques (and patches) which can be used to measure the runtime memory more accurately.&lt;br /&gt;
&lt;br /&gt;
=== Linux size increase from 2.4 to 2.6 ===&lt;br /&gt;
Linux increased in size by between 10% and 30% from version 2.4 to 2.6.  This incremental growth in kernel size has been a big concern by forum members.&lt;br /&gt;
&lt;br /&gt;
Please see the [[Szwg Linux 26Data]] page for supporting data.&lt;br /&gt;
&lt;br /&gt;
=== GCC Code-Size Benchmarking ===&lt;br /&gt;
CSiBE is a code size benchmark for the GCC compiler. The primary purpose of CSiBE is to monitor the size of the code generated by GCC. In addition, compilation time and code performance measurements are also provided.&lt;br /&gt;
&lt;br /&gt;
[http://www.inf.u-szeged.hu/csibe/ CSiBE]&lt;br /&gt;
&lt;br /&gt;
== Case Studies ==&lt;br /&gt;
*Motorola reduction of system size (presumably for cell phones) using 2.4 Linux:  MotSizeReduction.ppt - this is a placeholder for this Powerpoint as it was too big to upload to the wiki. Email btraynor at gmail.com if you need it immediately.&lt;br /&gt;
&lt;br /&gt;
== Other Tidbits on System Size ==&lt;br /&gt;
=== Memory leak detection for the kernel ===&lt;br /&gt;
Catalin Marinas of ARM has been recently (as of 2.6.17?) been posting a memory leak detector for the Linux kernel.  It may get mainlined in the future.  Here's a link to the LKML discussions around it: http://lkml.org/lkml/2006/6/11/39&lt;br /&gt;
&lt;br /&gt;
=== How System Size may affect performance ===&lt;br /&gt;
It has long been theorized that reducing system size could provide a performance benefit&lt;br /&gt;
because it could reduce cache misses.  There does not appear to be hard data to support&lt;br /&gt;
this theory on Linux, but this has been discussed on the kernel mailing list.&lt;br /&gt;
&lt;br /&gt;
See [http://groups.google.com/group/linux.kernel/msg/e1f9f579a946333e?hl=en&amp;amp; this post by Linus Torvalds]&lt;br /&gt;
&lt;br /&gt;
[[Category:System Size]]&lt;/div&gt;</summary>
		<author><name>TimBird</name></author>	</entry>

	<entry>
		<id>http://elinux.org/RTWG-discussion-points</id>
		<title>RTWG-discussion-points</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/RTWG-discussion-points"/>
				<updated>2007-09-04T07:40:18Z</updated>
		
		<summary type="html">&lt;p&gt;TimBird: /* shared Test Bed ideas */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Review of test programs ==&lt;br /&gt;
=== lpptest ===&lt;br /&gt;
problems:&lt;br /&gt;
* requires 2 machines&lt;br /&gt;
* requires parallel port (not many embedded boards have this)&lt;br /&gt;
* uses TSC, which is i386-specific&lt;br /&gt;
&lt;br /&gt;
benefits:&lt;br /&gt;
* built into the rt-preempt patch&lt;br /&gt;
* 2-machine system gives unbiased timing results&lt;br /&gt;
** instrumentation does not interfere with the timings&lt;br /&gt;
&lt;br /&gt;
=== realfeel ===&lt;br /&gt;
benefits:&lt;br /&gt;
* is one-machine&lt;br /&gt;
* uses /dev/rtc, does not use timer interrupt&lt;br /&gt;
** this isolates the ISR handling from timer operations&lt;br /&gt;
* is a very simple test&lt;br /&gt;
&lt;br /&gt;
problems:&lt;br /&gt;
* uses TSC, which is i386-specific&lt;br /&gt;
* doesn't have an instrumentation point in the kernel&lt;br /&gt;
** no measurement of int latency, only process start latency&lt;br /&gt;
* process start latency is &amp;quot;guessed&amp;quot; from expected interrupt time&lt;br /&gt;
** that is, it is not actually measured&lt;br /&gt;
* not all boards have a working /dev/rtc driver&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== igel test ===&lt;br /&gt;
This tests scheduling latency on receipt of a character on an SM501 uart.&lt;br /&gt;
The UART driver gets a timestamp on ISR start, and can be asked for them&lt;br /&gt;
from user-space after a run.&lt;br /&gt;
The user-space driver measures the time from ISR start to task start.&lt;br /&gt;
Test is specific to SH architecture.&lt;br /&gt;
Uses SH hardware timer.&lt;br /&gt;
&lt;br /&gt;
SH4 running at 240 MHZ, 64 MB memory.&lt;br /&gt;
&lt;br /&gt;
See http://tree.celinuxforum.org/CelfPubWiki/UserLevelDeviceDriver&lt;br /&gt;
(page is in Japanese)&lt;br /&gt;
&lt;br /&gt;
See also:&lt;br /&gt;
[http://tree.celinuxforum.org/CelfPubWiki/JapanTechnicalJamboree14?action=AttachFile&amp;amp;do=get&amp;amp;target=preempt070427celfjambo14.odp CELF Jamboree 14 presentation]&lt;br /&gt;
&lt;br /&gt;
* Yung Joon will ask Takao Ikoma to translate this page.&lt;br /&gt;
* Matsubara-san will update the driver and some of the text on the page.&lt;br /&gt;
** will attach latest driver source&lt;br /&gt;
* Tim will provide Ikoma-san e-mail&lt;br /&gt;
&lt;br /&gt;
Test shows some important results:&lt;br /&gt;
* 2.6.16.4 has much better scheduling latency under load than 2.4.20&lt;br /&gt;
** test was with kernel preemption - withOUT RT-preempt patches loaded.&lt;br /&gt;
* signal delivery method of waking up tasks took a lot longer than unblocking an I/O operation&lt;br /&gt;
** signal delivery is a bad method to use for measuring RT performance&lt;br /&gt;
&lt;br /&gt;
=== Interbench ===&lt;br /&gt;
Need to investigate, but looks like a test of scheduling latency.&lt;br /&gt;
&lt;br /&gt;
See http://members.optusnet.com.au/ckolivas/interbench/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== celleb test ===&lt;br /&gt;
Runs test with Linux on hypervisor.  Hypervisor generates interrupt to Linux at periodic&lt;br /&gt;
intervals.  The kernel measures the ISR start time, and can query the hypervisor for the&lt;br /&gt;
intended interrupt initiation time.&lt;br /&gt;
&lt;br /&gt;
Results on page 7 are results from hdparm, normalized against a baseline configuration.&lt;br /&gt;
Note that page 7 shows results from a kernel with a bug (in the non-RT case).&lt;br /&gt;
&lt;br /&gt;
set PPC64_TLB_BATCH_NR to 1&lt;br /&gt;
why?&lt;br /&gt;
&lt;br /&gt;
In english translation lpar = &amp;quot;logical partition&amp;quot;.  This refers to a single environment under &lt;br /&gt;
the hypervisor.  The lpar interrupt was used because it was periodic.&lt;br /&gt;
&lt;br /&gt;
hdparm used for load, not for measurement.  The test provided 3 different measurements of performance.&lt;br /&gt;
&lt;br /&gt;
Each run is a shown as a separate path on the graph.  The paths are separated to be able&lt;br /&gt;
to distinguish the lines. (They have different 0-bases on the graph).&lt;br /&gt;
point on graph shows amount of latency for each interrupt.  Interrupt is on horizontal axis.&lt;br /&gt;
&lt;br /&gt;
page 14 shows interrupt latency, under load.&lt;br /&gt;
&lt;br /&gt;
All results are shown normalized, to avoid disclosing actual numbers for the CELL processor&lt;br /&gt;
and hypervisor.&lt;br /&gt;
&lt;br /&gt;
Stair-step results in the graph are from hdparm being run in a loop.  Sometimes hdparm was&lt;br /&gt;
putting load on the system, and sometimes it was not (at regular intervals).&lt;br /&gt;
&lt;br /&gt;
page 15 has previous results, with non-rt kernel with bug.&lt;br /&gt;
&lt;br /&gt;
page 16 shows corrected results&lt;br /&gt;
&lt;br /&gt;
page 18 - load is netperf&lt;br /&gt;
&lt;br /&gt;
page 26 - send performance of nonRT kernel is used as baseline for normalization.&lt;br /&gt;
Measurement is of network performance (with several different configurations).&lt;br /&gt;
Result of good performance for non-RT kernel, but with interupt threading is&lt;br /&gt;
not expected.&lt;br /&gt;
&lt;br /&gt;
Page 27 - shows throughput performance for hdparm for various configurations.&lt;br /&gt;
Different udma modes are configured via hdparm. (try man hdparm)&lt;br /&gt;
&lt;br /&gt;
Page 28 is Owa-san's hypothesis for why the network throughput is better in the&lt;br /&gt;
non-rt, with irq threading, case.  There are fewer hardware interrupts.&lt;br /&gt;
It may be because the interrupts are masked longer, so context switches are avoided.  Also, because&lt;br /&gt;
of longer duration interrupt-off times, the network card may buffer packets, and the&lt;br /&gt;
network stack may be able to process more data at a time.&lt;br /&gt;
&lt;br /&gt;
Tried to test:&lt;br /&gt;
* did RT-preempt patch for PPC64 work?&lt;br /&gt;
** result: yes, to some extent&lt;br /&gt;
* wanted to see if RT-preempt affected throughput performance&lt;br /&gt;
** result: it does affect performance some, but it is not a big effect.&lt;br /&gt;
&lt;br /&gt;
=== etri testing ===&lt;br /&gt;
* wanted to compare RT-preempt with regular kernel.&lt;br /&gt;
** worst case latency was good with RT-preempt patch&lt;br /&gt;
* Wanted to use modified realfeel code (realfeel-etri)&lt;br /&gt;
** it worked.&lt;br /&gt;
* wanted to know relationship between scheduling latency and throughput performance&lt;br /&gt;
** result: there were possible throughput problems with the RT-preempt kernel&lt;br /&gt;
&lt;br /&gt;
* haven't used realfeel-etri on ARM, yet.&lt;br /&gt;
&lt;br /&gt;
=== realfeel-etri ===&lt;br /&gt;
problems:&lt;br /&gt;
* uses TSC (but abstracts the get_ticks() interface&lt;br /&gt;
** have to use something else on ARM&lt;br /&gt;
* needs /dev/RTC (may not be available on other embedded platforms)&lt;br /&gt;
&lt;br /&gt;
benefits:&lt;br /&gt;
* is better than realfeel, because it measures time from ISR start&lt;br /&gt;
* uses read-unblock, which has good code path through kernel.&lt;br /&gt;
&lt;br /&gt;
=== cyclictest ===&lt;br /&gt;
User timestamps from timer system to measure performance of timer system.&lt;br /&gt;
&lt;br /&gt;
benefits:&lt;br /&gt;
* seems to be what other people are using.&lt;br /&gt;
* it should be architecture-independent&lt;br /&gt;
** (after HRT arch support is provided in kernel)&lt;br /&gt;
&lt;br /&gt;
problems:&lt;br /&gt;
* requires HRT support&lt;br /&gt;
* requires newer version of glibc and compiler&lt;br /&gt;
* requires newer structure or API for timer info (not on MIPS)&lt;br /&gt;
* it doesn't have kernel instrumentation point&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Notes:&lt;br /&gt;
* it works on SH, on 2.6.22 or later.&lt;br /&gt;
* it works on ppc64&lt;br /&gt;
* it didn't work on MIPS for Tim&lt;br /&gt;
&lt;br /&gt;
don't know how to interpret results (don't know what constitutes good values)&lt;br /&gt;
&lt;br /&gt;
== table of test attributes ==&lt;br /&gt;
{|border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#CCCCCC&amp;quot;&lt;br /&gt;
|attribute / test-&amp;gt;&lt;br /&gt;
|rf-etri&lt;br /&gt;
|igel&lt;br /&gt;
|celleb&lt;br /&gt;
|cyclictest&lt;br /&gt;
|-&lt;br /&gt;
|platform specific?&lt;br /&gt;
|yes - uses TSC, requires /dev/rtc&lt;br /&gt;
|yes - uses SH timestamp&lt;br /&gt;
|yes - uses lpar interrupt, uses cell timebase regs.&lt;br /&gt;
|no, but requires HRT support.  Uses linux time system for timestamps&lt;br /&gt;
|-&lt;br /&gt;
|data format/handling&lt;br /&gt;
|text-&amp;gt;csv-&amp;gt;excel&lt;br /&gt;
|csv text&lt;br /&gt;
|text-&amp;gt;csv-&amp;gt;excel&lt;br /&gt;
|none&lt;br /&gt;
|-&lt;br /&gt;
|presentation&lt;br /&gt;
|excel charts&lt;br /&gt;
|gnuplot&lt;br /&gt;
|excel charts&lt;br /&gt;
|none&lt;br /&gt;
|-&lt;br /&gt;
|interrupt source&lt;br /&gt;
|/dev/rtc - periodic interrupt&lt;br /&gt;
|serial port&lt;br /&gt;
|lpar interrupt (hypervisor)&lt;br /&gt;
|timer system (reprogrammed inter intterrupt)&lt;br /&gt;
|-&lt;br /&gt;
|# machines&lt;br /&gt;
|1&lt;br /&gt;
|1&lt;br /&gt;
|2&lt;br /&gt;
|1&lt;br /&gt;
|-&lt;br /&gt;
|What is measured?&lt;br /&gt;
|B-&amp;gt;C&lt;br /&gt;
|B-&amp;gt;C&lt;br /&gt;
|0-&amp;gt;B&lt;br /&gt;
|C-&amp;gt;C2&lt;br /&gt;
|-&lt;br /&gt;
|Load source&lt;br /&gt;
|find, ping, hackbench&lt;br /&gt;
|ping, lmbench&lt;br /&gt;
|hdparm, netperf&lt;br /&gt;
|none&lt;br /&gt;
|-&lt;br /&gt;
|performance measurment&lt;br /&gt;
|hackbench&lt;br /&gt;
|none, but host could measure serial throughput&lt;br /&gt;
|hdparm, netperf, ping&lt;br /&gt;
|none&lt;br /&gt;
|-&lt;br /&gt;
|has user space element?&lt;br /&gt;
|yes&lt;br /&gt;
|yes&lt;br /&gt;
|no&lt;br /&gt;
|yes&lt;br /&gt;
|-&lt;br /&gt;
|kernel patches needed&lt;br /&gt;
|yes - patches to /dev/rtc&lt;br /&gt;
|yes - needs UIO support (mainlined in 2.6.23)&lt;br /&gt;
needs kernel module&lt;br /&gt;
|yes - needs kernel module&lt;br /&gt;
instrumentation of lpar handling code&lt;br /&gt;
|no, but needs HRT support for arch.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== shared Test Bed ideas ===&lt;br /&gt;
See Darren Hart's tests at : http://www.dvhart.com/~dvhart/ols2007&lt;br /&gt;
&lt;br /&gt;
His paper is at: https://ols2006.108.redhat.com/2007/Reprints/rostedt-Reprint.pdf&lt;/div&gt;</summary>
		<author><name>TimBird</name></author>	</entry>

	</feed>