<?xml version="1.0" ?>

<kc>

<title>Kernel Traffic</title>

<author contact="mailto:zbrown@tumblerings.org">Zack Brown</author>

<issue num="247" date="31 Dec 2003 00:00:00 -0800" />

<section
  title="Status Of &quot;Linux Device Drivers&quot;"
  subject="Linux Device Drivers 3rd Edition"
  archive="http://www.google.com/groups?hl=en&amp;lr=&amp;ie=UTF-8&amp;selm=14bnT-8dz-13%40gated-at.bofh.it"
  posts="15"
  startdate="18 Dec 2003 10:42:30 -0800"
  enddate="21 Dec 2003 09:08:43 -0800"
>

<mention>Xavier Bestel</mention>
<mention>Jose Luis Domingo Lopez</mention>

<p>Kendrick Hamilton wanted to write a character device driver, and
wondered if there would be a 3rd edition of <i>Linux Device Drivers</i>
that would cover the 2.6 kernel. Alternatively, he wondered if the
2nd edition would be good enough to rely on for a character device
driver. Jose Luis Domingo Lopez and Xavier Bestel recommended some
<a href="http://lwn.net/Articles/driver-porting/">Articles at LWN</a>;
Jonathan Corbet, coauthor of <i>Linux Device Drivers</i>, also recommended
those articles. Of a potential 3rd edition, he added, <quote who="Jonathan
Corbet">There will, but don't hold your breath - it's proceeding more slowly
than we would like.</quote></p>

</section>

<section
  title="Patent-Encumbered Code Explicitly Rejected From Linux"
  subject="[OT] use of patented algorithms in the kernel ok or not?"
  archive="http://www.google.com/groups?hl=en&amp;lr=&amp;ie=UTF-8&amp;selm=14fBf-6x0-21%40gated-at.bofh.it"
  posts="27"
  startdate="18 Dec 2003 15:11:37 -0800"
  enddate="22 Dec 2003 07:34:15 -0800"
>
<topic>Networking</topic>
<topic>Patents</topic>

<p>Lennert Buytenhek said, <quote who="Lennert Buytenhek">There's a fast
algorithm for longest-prefix match (as used in IPv4 routing table lookups)
which I have implemented, and would like to submit for inclusion into the
kernel (when 2.7 opens.).  However, I am aware that there is a patent on
this algorithm, exclusively licensed to a major manufacturer of networking
equipment.</quote> He wanted to know if it was OK to send in the patch, or if
he should look for an unencumbered algorithm. Linus Torvalds replied, <quote
who="Linus Torvalds">Don't submit, and find an unencumbered algorithm.  Unless
you can get the patent holder to grant a license (it does happen).</quote></p>

<p>Elsewhere in the thread, Adrian Cox remarked:</p>

<quote who="Adrian Cox">

<p>For examples of source code distribution in a patented area, look at
MPEG4 projects, particularly MPEG4IP.</p>

<p><a
href="http://mpeg4ip.sourceforge.net/">http://mpeg4ip.sourceforge.net/</a>
has source code under a variety of licenses including GPL, and the front
page has the following disclaimer: "This code is not intended for end users,
and does not contain executables. Please read all the legal information to
determine if it is suitable for you."</p>

<p>The project was started by Cisco, who likely did some legal research
first. Cisco, however, have the resources to see off frivolous lawsuits,
while individual developers do not.</p>

</quote>

</section>

<section
  title="Real-Time Maintainership; Nanokernel Maintainership; Patent Policy"
  subject="[PATCH] Updating real-time and nanokernel maintainers"
  archive="http://www.google.com/groups?hl=en&amp;lr=&amp;ie=UTF-8&amp;selm=14fBg-6x0-23%40gated-at.bofh.it"
  posts="13"
  startdate="18 Dec 2003 15:14:44 -0800"
  enddate="21 Dec 2003 18:58:01 -0800"
>
<topic>MAINTAINERS File</topic>
<topic>Microkernels: Adeos</topic>
<topic>Patents</topic>
<topic>Real-Time: RTAI</topic>
<topic>Real-Time: RTLinux</topic>

<mention>Larry McVoy</mention>
<mention>Philippe Gerum</mention>
<mention>Joern Engel</mention>
<mention>Victor Yodaiken</mention>

<p>Karim Yaghmour posted a patch to add Philippe Gerum as the Adeos maintainer,
removed Victor Yodaiken as RTLinux maintainer, and added Paolo Mantegazza
as the RTAI (Real-Time Application Interface) maintainer. Zwane Mwaikambo
suggested leaving Paolo out of the maintainer list along with Victor,
because <quote who="Zwane Mwaikambo">neither have code in the kernel.</quote>
Karim replied, <quote who="Karim Yaghmour">RTLinux has never had code in the
kernel, but it still had a mention in the maintainers file for quite a number
of years.  I think that these entries are really pointers for those who are
interested in this area of Linux's use. As such, RTAI is the only real free
software real-time Linux extension and I think it deserves mention. Nowadays,
rtlinux.org is only an alias for fsmlabs.com, which I think pretty much sums up
the situation.</quote> Zwane replied, <quote who="Zwane Mwaikambo">But you're
forgetting what the MAINTAINERS file is for. I can't but help thinking that
this is linked with the email you sent earlier, but that's just me. Frankly i
reckon this particular case could be settled by removing both from MAINTAINERS
as neither has code in the 2.6 linux kernel. Anybody looking for realtime
Linux kernel capabilities can just do a Google.</quote> Karim replied that it
would be best to let the decision-makers decide on the merits of the patch;
but Nick Piggin said he also agreed with Zwane. He said, <quote who="Nick
Piggin">People have enough trouble using MAINTAINERS as it is. Using it to
pat each others backs makes it less useful.  As Zwane said, neither have
code in the kernel, so I don't see how you think it is justified...?</quote>
Karim replied, <quote who="Karim Yaghmour">It is justified in the same way
that the RTLinux entry was justified for those many years. But the bottom
line is as I said it before, I personally have no stake in this, and I
certainly don't want to start a debate on the use of the MAINTAINERS file,
others are much more apt than myself to make the proper judgement call on
the proper use of that file.</quote> Joern Engel also said RTLinux wasn't
justified in having a MAINTAINERS entry, and so RTAI should be taken out as
well. At this point Victor said he actually did have code in the kernel at
one point; and Karim said:</p>

<quote who="Karim Yaghmour">

<p>Are you saying that there's code in the kernel that is subject to your
patent?</p>

<p>If there is, then it should definitely be taken
out. First, as Linus has stated recently (and as has been the
policy for a while), the kernel should avoid having any patented code (<a
href="http://www.ussg.iu.edu/hypermail/linux/kernel/0312.2/0624.html">http://www.ussg.iu.edu/hypermail/linux/kernel/0312.2/0624.html</a>).
Second, "RTLinux Free" is being ported over to Adeos (<a
href="http://www2.fsmlabs.com/pipermail/rtl/2003-December/013178.html">http://www2.fsmlabs.com/pipermail/rtl/2003-December/013178.html</a>).</p>

</quote>

<p>Linus Torvalds replied:</p>

<quote who="Linus Torvalds">

<p>That's not true.</p>

<p>The kernel should have no patented code THAT DOESN'T HAVE A LICENSE.</p>

<p>There are several cases where this came up: RCU is one obvious one,
but there were also issues with Intel's initial submissions of some of the
networking drivers where they didn't want to originally release under the
GPL because of worrying about patents they owned.</p>

<p>The email you quote expressly says "unless you can get the patent holder to
grant a license". And the RTLinux patents were licensed to GPL'd projects. See
the RTLinux "open patent license".</p>

<p>I don't understand why people continually complain about the RTLinux
patents. I bet it's because Victor has all the easy charm of Larry McVoy,
but I don't see why people still continue to spread obvious mis-information
about the situation.</p>

<p>It's doubly discgusting with some of the people who were trying to spread
all the FUD and mis-information were doing so because they were themselves
doing a non-GPL microkernel, and they complained about how the patents were
somehow against the GPL and wanted to get community support by trying to
make out the situation to be somehow different from what it was.</p>

<p>I'm not a supporter of software patents, but while I dislike them,
I don't dislike them _nearly_ as much as I dislike dishonest people.</p>

</quote>

</section>

<section
  title="Using Distcc With 2.6"
  subject="Distcc &amp; 2.6.0"
  archive="http://www.google.com/groups?hl=en&amp;lr=&amp;ie=UTF-8&amp;selm=14xyg-8fO-23%40gated-at.bofh.it"
  posts="2"
  startdate="19 Dec 2003 10:25:49 -0800"
  enddate="20 Dec 2003 04:39:25 -0800"
>

<mention>Tomas Szepe</mention>

<p>Dan Brow asked, <quote who="Dan Brow">is any one using distcc with 2.6.0,
the kernel will not compile with distcc, it goes through the compile process
and then I have to recompile with just make.</quote> Tomas Szepe said he
himself had no problem using distcc version 2.9.</p>

</section>

<section
  title="Status Of Large Filesystem Support"
  subject="Is there still at 2TB limit?"
  archive="http://www.google.com/groups?hl=en&amp;lr=&amp;ie=UTF-8&amp;selm=150gI-2A6-5%40gated-at.bofh.it"
  posts="5"
  startdate="20 Dec 2003 17:01:12 -0800"
  enddate="22 Dec 2003 02:40:09 -0800"
>

<p>Dale Amon <quote who="Dale Amon">ran across old discussions on a patch for
the 2TB file system size problem.  Is this standard in 2.6.0 kernels? What
filesystem size and file size limits are there currently?</quote> Jose Luis
Domingo Lopez replied:</p>

<quote who="Jose Luis Domingo Lopez">

<p>In 2.6.x kernels you are also limited by the 2 TiB limit on block device
sizes, limit which you can extend compiling a 2.6.x kernel with "Large Block
Device" support (menu "Device Drivers" -&gt; "Block devices", at the end).</p>

<p>You will also need filesystems that support that big sizes and can hold
big files on them, have a look at the following URL for more information: <a
href="http://www.suse.de/~aj/linux_lfs.html">http://www.suse.de/~aj/linux_lfs.html</a></p>

</quote>

<p>Dale took a look at that site, and noticed it was a little old; he asked
if there were current libraries that would work with LFS; but later replied
to himself, <quote who="Dale Amon">I've got the answer. glibc 2.1.3 has full
api; glibc 2.2 has full support; I'm currently using glibc 2.3.2ds1 so if I
toggle on that LFS option, it should all just work merrily with many terries
of bytes.</quote> Peter Chubb also said:</p>

<quote who="Peter Chubb">

<p>Yes.  Most glibc are distributed compiled with _LARGEFILE64 support.</p>

<p>See also <a
href="http://www.gelato.unsw.edu.au/IA64wiki/LargeBlockDevices">http://www.gelato.unsw.edu.au/IA64wiki/LargeBlockDevices</a>
I haven't got around to updating for 2.6.0, but the 2.5 notes still apply.</p>

</quote>

</section>

<section
  title="perfctr-2.6.3 Released"
  subject="perfctr-2.6.3 released"
  archive="http://www.google.com/groups?hl=en&amp;lr=&amp;ie=UTF-8&amp;selm=15dxb-7nf-1%40gated-at.bofh.it"
  posts="1"
  startdate="21 Dec 2003 07:07:19 -0800"
>
<topic>Profiling</topic>

<mention>Pavel Machek</mention>

<p>Mikael Pettersson announced:</p>

<quote who="Mikael Pettersson">

<p>Version 2.6.3 of perfctr, the Linux/x86 performance
monitoring counters driver, is now available at the usual
place: <a href="http://www.csd.uu.se/~mikpe/linux/perfctr/">http://www.csd.uu.se/~mikpe/linux/perfctr/</a></p>

<p>Version 2.6.3, 2003-12-21</p>

<p>

<ul>

<li>Fixed a bug where a read of the global-mode counters could
  fail with EOVERFLOW due to an incorrect structure descriptor.
  The bug only existed in perfctr-2.6.2.
  (Thanks to Pavel Machek for reporting this problem.)</li>
<li>AMD64 IA32 emulation code cleaned up for kernel 2.4.23.</li>
<li>Updated kernel support: 2.6.0, 2.4.24-pre1, 2.4.23,
  2.4.22-1.2129.nptl (FC1 update), 2.4.21-1.1931.2.393.ent
  (RHEL Taroon beta), and 2.4.20-24 (RH 7.x/8/9 update).</li>
<li>

<p>User-space package rpm spec file fixes:</p>

<p>
<ul>
<li>Don't remove /dev/perfctr on package uninstall.</li>
<li>Don't add alias to /etc/modules.conf if it's already there.</li>
</ul>
</p>

</li>

</ul>

</p>

</quote>

</section>

<section
  title="Larry Unsubscribes From linux-kernel Mailing List"
  subject="Re: RFC - tarball/patch server in BitKeeper"
  archive="http://www.google.com/groups?q=g:thl50185200d&amp;dq=&amp;hl=en&amp;lr=&amp;ie=UTF-8&amp;selm=166tR-6Zp-21%40gated-at.bofh.it"
  posts="1"
  startdate="23 Dec 2003 17:49:19 -0800"
>
<topic>Version Control</topic>

<mention>Zack Brown</mention>

<p>Continuing from <kcref subject="RFC - tarball/patch server in BitKeeper"
startdate="14 Dec 2003 09:21:56 -0800"/>, Larry McVoy of BitMover said, <quote
who="Larry McVoy">I've unsubscribed from the Linux kernel list, this is a
good example of why.  No sense of humor on your part, and you are whining
about a license on a 200 line chunk of code.  Any decent programmer could
have reimplemented it in less time than it took you to complain.</quote></p>

<editorialize who="Zack Brown">If this impacts BitMover's
responsiveness to BitKeeper bug reports and feature requests from
kernel developers, it might inspire more kernel folks to check out <a
href="http://gnuarch.org/bin/view">arch</a> and other alternatives. But a
big push for arch or any other revision control system should probably not
be expected in the short term.</editorialize>

</section>

<section
  title="Linux 2.4.24-pre2 Released"
  subject="Linux 2.4.24-pre2"
  archive="http://www.google.com/groups?hl=en&amp;lr=&amp;ie=UTF-8&amp;selm=15EHj-1F5-29%40gated-at.bofh.it"
  posts="7"
  startdate="22 Dec 2003 11:55:28 -0800"
  enddate="23 Dec 2003 03:27:10 -0800"
>
<topic>Big Memory Support</topic>
<topic>FS: XFS</topic>
<topic>Power Management: ACPI</topic>
<topic>USB</topic>
<topic>Virtual Memory</topic>

<p>Marcelo Tosatti announced Linus 2.4.24-pre2, saying, <quote who="Marcelo
Tosatti">It contains MIPS/PPC64/SPARC updates, ACPI bugfixes, USB update, XFS
fixes, amongst others.</quote> Mike Fedyk asked, <quote who="Mike Fedyk">Do
you plan on merging any more of the VM from Andrea in this release (or
future releases)?</quote> Marcelo said, <quote who="Marcelo Tosatti">Yes,
I believe I will merge inode-highmem and a few others probably.</quote>
But Xose Vazquez Perez said, <quote who="Xose Vazquez Perez">Andrea <a
href="http://marc.theaimsgroup.com/?l=linux-kernel&amp;m=107048611507709&amp;w=2">said</a>
that there are two patches missing: inode-highmem and related_bhs But he
is not going to work on it for 2.4</quote>. Mike replied, <quote who="Mike
Fedyk">Yes, I read this one when it was posted, but forgot the details.
It seems that inode-highmem is relatively self contained though.</quote></p>

</section>

<section
  title="Linus Comments On Some Specifics Of The SCO Case"
  subject="hmm.."
  archive="http://www.google.com/groups?hl=en&amp;lr=&amp;ie=UTF-8&amp;selm=15EH7-1F5-5%40gated-at.bofh.it"
  posts="5"
  startdate="22 Dec 2003 12:10:59 -0800"
  enddate="22 Dec 2003 17:16:26 -0800"
>
<topic>BSD</topic>
<topic>Ioctls</topic>
<topic>Microkernels</topic>

<p>John Dee said, <quote who="John Dee">I know you
guys have already probably seen this.. figured I'd
share with the class, so the big kids can tear it apart.  <a
href="http://lwn.net/Articles/64052/">http://lwn.net/Articles/64052/</a></quote>.
Linus Torvalds replied:</p>

<quote who="Linus Torvalds">

<p>I spent half an hour tearing part of it apart for some journalists. No
guarantees for the full accuracy of this write-up, and in particular I
don't actually have "original UNIX" code to compare against, but the files
I checked (ctype.[ch]) definitely do not have any UNIX history to them.</p>

<p>The rest of the files are mostly errno.h/signal.h/ioctl.h (and they are
apparently the 2.4.x versions, before we moved some common constants into
"asm-generic/errno.h"), and while I haven't analyzed them, I know for a
fact that</p>

<p>

<ul>

<li>

<p>the original errno.h used different error numbers than "original UNIX"</p>

<p>   I know this because I cursed it later when it meant that doing things
   like binary emulation wasn't as trivial - you had to translate the
   error numbers.</p>

</li>

<li>same goes for "signal.h": while a lot of the standard signals are well
   documented (ie "SIGKILL is 9"), historically we had lots of confusion
   (ie I think "real UNIX" has SIGBUS at 10, while Linux didn't originally
   have any SIGBUS at all, and later put it at 7 which was originally
   SIGUNUSED.</li>

</ul>

</p>

<p>So to me it looks like</p>

<p>

<ul>

<li>yes, Linux obviously has the same signal names and error number names
   that UNIX has (so the files certainly have a lot of the same
   identifiers)</li>

<li>but equally clearly they weren't copied from any "real UNIX".</li>

</ul>

</p>

<p>(Later, non-x86 architectures have tried harder to be binary-compatible
with their "real UNIX" counter-parts, and as a result we have different
errno header files for different architectures - and on non-x86
architectures the numbers will usually match traditional UNIX).</p>

<p>For example, doing a "grep" for SIGBUS on the kernel shows that most
architectures still have SIGBUS at 7 (original Linux value), while alpha,
sparc, parisc and mips have it at 10 (to match "real UNIX").</p>

<p>What this tells me is that the original code never came from UNIX, but
some architectures later were made to use the same values as UNIX for
binary compatibility (I know this is true for alpha, for example: being
compatible with OSF/1 was one of my very early goals in that port).</p>

<p>In other words, I think we can totally _demolish_ the SCO claim that these
65 files were somehow "copied". They clearly are not.</p>

<p>Which should come as no surprise to people. But I think it's nice to see
just _how_ clearly we can show that SCO is - yet again - totally
incorrect.</p>

<blockquote>

<p>                Linus</p>

</blockquote>

<p>For example, SCO lists the files "include/linux/ctype.h" and
"lib/ctype.h", and some trivial digging shows that those files are
actually there in the original 0.01 distribution of Linux (ie September of
1991). And I can state</p>

<p>

<ul>

<li>I wrote them (and looking at the original ones, I'm a bit ashamed:
   the "toupper()" and "tolower()" macros are so horribly ugly that I
   wouldn't admit to writing them if it wasn't because somebody else
   claimed to have done so ;)</li>

<li>writing them is no more than five minutes of work (you can verify that
   with any C programmer, so you don't have to take my word for it)</li>

<li>the details in them aren't even the same as in the BSD/UNIX files (the
   approach is the same, but if you look at actual implementation details
   you will notice that it's not just that my original "tolower/toupper"
   were embarrassingly ugly, a number of other details differ too).</li>

</ul>

</p>

<p>In short: for the files where I personally checked the history, I can
definitely say that those files are trivially written by me personally,
with no copying from any UNIX code _ever_.</p>

<p>So it's definitely not a question of "all derivative branches". It's a
question of the fact that I can show (and SCO should have been able to
see) that the list they show clearly shows original work, not "copied".</p>

<p align="center">        Analysis of "lib/ctype.c" and "include/linux/ctype.h".</p>

<p>First, some background: the "ctype" name comes "character type", and the
whole point of "ctype.h" and "ctype.c" is to test what kind of character
we're dealing with. In other words, those files implement tests for doing
things like asking "is this character a digit" or "is this character an
uppercase letter" etc. So you can write thing like</p>

<pre>        if (isdigit(c)) {
                .. we do something with the digit ..</pre>

<p>and the ctype files implement that logic.</p>

<p>Those files exist (in very similar form) in the original Linux-0.01
release under the names "lib/ctype.c" and "include/ctype.h". That kernel
was released in September of 1991, and contains no code except for mine
(and Lars Wirzenius, who co-wrote "kernel/vsprintf.c").</p>

<p>In fact, you can look at the files today and 12 years ago, and you can see
clearly that they are largely the same: the modern files have been cleaned
up and fix a number of really ugly things (tolower/toupper works
properly), but they are clearly incremental improvement on the original
one.</p>

<p>And the original one does NOT look like the unix source one. It has
several similarities, but they are clearly due to:</p>

<p>

<ul>

<li>the "ctype" interfaces are defined by the C standard library.</li>

<li>the C standard also specifies what kinds of names a system library
   interface can use internally. In particular, the C standard specifies
   that names that start with an underscore and a capital letter are
   "internal" to the library. This is important, because it explains why
   both the Linux implementation _and_ the UNIX implementation used a
   particular naming scheme for the flags.</li>

<li>

<p>algorithmically, there aren't that many ways to test whether a
   character is a number or not. That's _especially_ true in
   C, where a macro must not use it's argument more than once. So for
   example, the "obvious" implementation of "isdigit()" (which tests for
   whether a character is a digit or not) would be</p>

<blockquote>

<p>        #define isdigit(x) ((x) &gt;= '0' &amp;&amp; (x) &lt;= '9')</p>

</blockquote>

<p>   but this is not actually allowed by the C standard (because 'x' is used
   twice).</p>

<p>   This explains why both Linux and traditional UNIX use the "other"
   obvious implementation: having an array that describes what each of the
   possible 256 characters are, and testing the contents of that array
   (indexed by the character) instead. That way the macro argument is only
   used once.</p>

</li>

</ul>

</p>

<p>The above things basically explain the similarities. There simply aren't
that many ways to do a standard C "ctype" implementation, in other words.</p>

<p>Now, let's look at the _differences_ in Linux and traditional UNIX:</p>

<p>

<ul>

<li>

<p>both Linux and traditional unix use a naming scheme of "underscore and
   a capital letter" for the flag names. There are flags for "is upper
   case" (_U) and "is lower case" (_L), and surprise surprise, both UNIX
   and Linux use the same name. But think about it - if you wanted to use
   a short flag name, and you were limited by the C standard naming, what
   names _would_ you use? Maybe you'd select "U" for "Upper case" and "L"
   for "Lower case"?</p>

<p>   Looking at the other flags, Linux uses "_D" for "Digit", while
   traditional UNIX instead uses "_N" for "Number". Both make sense, but
   they are different. I personally think that the Linux naming makes more
   sense (the function that tests for a digit is called "isdigit()", not
   "isnumber()"), but on the other hand I can certainly understand why
   UNIX uses "_N" - the function that checs for whether a character is
   "alphanumeric" is called "isalnum()", and that checks whether the
   character is a upper case letter, a lower-case letter _or_ a digit (aka
   "number").</p>

<p>   In short: there aren't that many ways you can choose the names, and
   there is lots of overlap, but it's clearly not 100%.</p>

</li>

<li>

<p>The original Linux ctype.h/ctype.c file has obvious deficiencies, which
   pretty much point to somebody new to C making mistakes (me) rather than
   any old and respected source. For example, the "toupper()/tolower()"
   macros are just totally broken, and nobody would write the "isascii()"
   and "toascii()" the way they were written in that original Linux. And
   you can see that they got fixed later on in Linux development, even
   though you can also see that the files otherwise didn't change.</p>

<p>   For example: remember how C macros must only use their argument once
   (never mind why - you really don't care, so just take it on faith, for
   now). So let's say that you wanted to change an upper case character
   into a lower case one, which is what "tolower()" does. Normal use is
   just a fairly obvious</p>

<pre>        newchar = tolower(oldchar);</pre>

<p>   and the original Linux code does</p>

<pre>        extern char _ctmp;
        #define tolower(c) (_ctmp=c,isupper(_ctmp)?_ctmp+('a'+'A'):_ctmp)</pre>

<p>   which is not very pretty, but notice how we have a "temporary
   character" _ctmp (remember that internal header names should start with
   an underscore and an upper case character - this is already slightly
   broken in itself). That's there so that we can use the argument "c"
   only once - to assign it to the new temporary - and then later on we
   use that temporary several times.</p>

<p>   Now, the reason this is broken is</p>

<p>

<ul>

<li>it's not thread-safe (if two different threads try to do this at
      once, they will stomp on each others temporary variable)</li>

<li>the argument (c) might be a complex expression, and as such it
      should really be parenthesized. The above gets several valid
      (but unusual) expressions wrong.</li>

</ul>

</p>

</li>

</ul>

</p>

<p>Basically, the above is _exactly_ the kinds of mistakes a young programmer
would make. It's classic.</p>

<p>And I bet it's _not_ what the UNIX code looked like, even in 1991. UNIX by
then was 20 years old, and I _think_ that it uses a simple table lookup
(which makes a lot more sense anyway and solves all problems). I'd be very
susprised if it had those kinds of "beginner mistakes" in it, but I don't
actually have access to the code, so what do I know? (I can look up some
BSD code on the web, it definitely does _not_ do anythign like the above).</p>

<p>The lack of proper parenthesis exists in other places of the original
Linux ctype.h file too: isascii() and toascii() are similarly broken.</p>

<p>In other words: there are _lots_ of indications that the code was not
copied, but was written from scratch. Bugs and all.</p>

<p>Oh, another detail: try searching the web (google is your friend) for
"_ctmp". It's unique enough that you'll notice that all the returned hits
are all Linux-related. No UNIX hits anywhere. Doing a google for</p>

<blockquote>

<p>        _ctmp -linux</p>

</blockquote>

<p>shows more Linux pages (that just don't happen to have "linux" in them),
except for one which is the L4 microkernel, and that one shows that they
used the Linux header file (it still says "_LINUX_CTYPE_H" in it).</p>

<p>So there is definitely a lot of proof that my ctype.h is original work.</p>

</quote>

</section>

<section
  title="Status Of OOM Killer In 2.4"
  subject="Finding a user space alternative to the (removed) OOM killer"
  archive="http://www.google.com/groups?hl=en&amp;lr=&amp;ie=UTF-8&amp;selm=15FWK-45f-27%40gated-at.bofh.it"
  posts="2"
  startdate="22 Dec 2003 13:35:42 -0800"
  enddate="28 Dec 2003 10:04:03 -0800"
>
<topic>OOM Killer</topic>

<p>Anders Torger noticed that the out-of-memory (OOM) killer had been removed
from the 2.4 kernel, and asked if there were a user-space alternative he could
use. Marcelo Tosatti replied, <quote who="Marcelo Tosatti">2.4.24-pre1 re-adds
the OOM killer as a configurable option.  2.4.24-pre1 with CONFIG_OOM_KILLER=y
will work for you.</quote></p>

</section>

<section
  title="Cryptoloop To Be Deprecated In Favor Of dm-crypt In 2.6"
  subject="loop driver, device-mapper and crypto"
  archive="http://www.google.com/groups?hl=en&amp;lr=&amp;ie=UTF-8&amp;selm=15G6g-4oz-17%40gated-at.bofh.it"
  posts="23"
  startdate="22 Dec 2003 13:42:59 -0800"
  enddate="23 Dec 2003 09:14:49 -0800"
>
<topic>Device Mapper</topic>

<p>Christophe Saout said:</p>

<quote who="Christophe Saout">

<p>there are problems with the loop driver in the kernel with block device
backing.</p>

<p>In 2.6 we have a device-mapper which does such things in a much more
generic way. I've already talked to a bunch of people working on loop and
cryptoloop (also with Clemens Fruhwirth, the cryptoloop maintainer) and
they all agreed that device-mapper is probably the most correct way to go,
and would be happier if the loop driver was used for files only.</p>

<p>I've written a device-mapper target "dm-crypt" some month ago which uses
cryptoapi and is compatible with cryptoloop. I never got much feedback, some
people tested it and found it to work just fine while cryptoloop didn't,
back then, when the test-series started or so.</p>

<p>Unfortunately I never got much public support on LKML itself and was
mostly ignored.</p>

</quote>

<p>Andrew Morton replied:</p>

<quote who="Andrew Morton">

<p>I'm not a crypto-loop user, so I am not in a position to judge whether
using dm for crypto-on-disk is feature-sufficient and adequate from an
operational point of view.</p>

<p>It is good that Joe-and-co are OK with it and are prepared to help
support it.  If the people who _do_ use crypto-loop like the look of the
feature set and the user interface then fine.  Certainly the loop driver
has a long history of not working very well.</p>

<p>So.  If those-in-the-know like it then go wild.  It would be useful to
get an opinion from the distro guys too.</p>

<p>However I suspect that there will be a migration issue, and that we should
continue to work to get crypto-loop functioning well, plan to remove it from
2.8, yes?</p>

</quote>

<p>And Fruhwirth Clemens said:</p>

<quote who="Fruhwirth Clemens">

<p>First of all, eventhou I'm the maintainer of cryptoloop, when Christophe
posted the first time I immediately recognized that dm-crypt is vastly
superior to cryptoloop for a number of reasons:</p>

<p>

<ul>

<li>It does not suffer from loop.c bugs (There are a lot, no maintainer)</li>
<li>dm-crypt does not depend on special user space tool (util-linux)</li>
<li>dm-crypt uses mempool, which makes it rock stable compared to
cryptoloop.</li>

</ul>

</p>

<p>From an operational point of view, patching util-linux has been the most
troublesome point. Lot's of incompatible inofficial patches floating around
in the net, while the last release of util-linux provides a broken and IMHO
insecure why of setting up cryptokeys. Further: To fix the design flaw of
unencrypted/unhashed IV vectors one has to add another setup parameter.
That's where I really do like the flexible interface dm has.</p>

</quote>

<p>He added, <quote who="Fruhwirth Clemens">We should support cryptoloop. No
new features, but working well. At the same time we should declare it
'deprecated' and provide dm-crypt as alternative. I'm happy to provide
documentation on how to migrate</quote>.</p>

</section>

<section
  title="Marcelo On Christmas Break"
  subject="Out for Christmas"
  archive="http://www.google.com/groups?hl=en&amp;lr=&amp;ie=UTF-8&amp;selm=15Hc3-6Cf-17%40gated-at.bofh.it"
  posts="1"
  startdate="22 Dec 2003 14:38:43 -0800"
>

<mention>Marcelo Tosatti</mention>

<p>Marcelo Tosatti said he'd be away for Christmas, and would be back
December 27.</p>

</section>

<section
  title="forcedeth Version 0.20 Released"
  subject="forcedeth: version 0.20 available"
  archive="http://www.google.com/groups?hl=en&amp;lr=&amp;ie=UTF-8&amp;selm=15IUv-1Gt-15%40gated-at.bofh.it"
  posts="1"
  startdate="22 Dec 2003 16:43:04 -0800"
>

<p>Carl-Daniel Hailfinger announced:</p>

<quote who="Carl-Daniel Hailfinger">

<p>version 0.20 of forcedeth (GPLed nvnet replacement
for nForce on-board nics) for Linux 2.4 and 2.6 is available at <a
href="http://www.hailfinger.org/carldani/linux/patches/forcedeth/">http://www.hailfinger.org/carldani/linux/patches/forcedeth/</a>.
It is also integrated in current -mm patchset and the 2.6 experimental net
driver queue.</p>

<p>I will make precompiled modules available at the above address as time
permits.</p>

<p>Fixes in this release over 0.18:</p>

<p>

<ul>

<li>Work around bogus MAC addresses. Please report your exact
  hardware version/manufacturer if you hit this issue since
  NVidia has stated this should never happen and they are
  interested in any cases where it happens.</li>

<li>Under extremely high network load on nForce3 systems, the
  nic won't lock up or slow down any more.</li>

</ul>

</p>

<p>Known issues:</p>

<p>

<ul>

<li>Some nForce versions will report every received packet as
  1500 bytes long and fool RX statistics. This is definitely
  a hardware bug and we intend to provide a workaround in v0.21</li>

<li>nForce3 systems are programmed to an incredibly high interrupt
  rate. We still need to find out what value to write to the
  timer register and we intend to fix this in v0.21</li>

<li>"eth0: received irq with unknown events 0x&lt;something&gt;.
  Please report" might show up in your logs. That means we
  didn't encounter such an event during development and can
  only guess about its meaning.
  Please tell us what you were doing when the message appeared,
  how often it appeared and if it affects behaviour of your
  machine negatively.</li>

</ul>

</p>

</quote>

</section>

<section
  title="udev Version 010 Released"
  subject="[ANNOUNCE] udev 010 release"
  archive="http://www.google.com/groups?hl=en&amp;lr=&amp;ie=UTF-8&amp;selm=15J4b-1Zn-19%40gated-at.bofh.it"
  posts="2"
  startdate="22 Dec 2003 16:58:09 -0800"
  enddate="22 Dec 2003 17:23:10 -0800"
>
<topic>Disks: IDE</topic>
<topic>FS: devfs</topic>
<topic>FS: sysfs</topic>
<topic>Hot-Plugging</topic>
<topic>Version Control</topic>

<p>Greg KH announced:</p>

<quote who="Greg KH">

<p>I've released the 010 version of udev.  It can be found at:<br />
        <a href="http://www.kernel.org/pub/linux/utils/kernel/hotplug/udev-010.tar.gz">kernel.org/pub/linux/utils/kernel/hotplug/udev-010.tar.gz</a></p>

<p>rpms built against Red Hat FC1 are available at:<br />
        <a href="http://www.kernel.org/pub/linux/utils/kernel/hotplug/udev-010-1.i386.rpm">kernel.org/pub/linux/utils/kernel/hotplug/udev-010-1.i386.rpm</a><br />
with the source rpm at:<br />
        <a href="kernel.org/pub/linux/utils/kernel/hotplug/udev-010-1.src.rpm">kernel.org/pub/linux/utils/kernel/hotplug/udev-010-1.src.rpm</a></p>

<p>udev is a implementation of devfs in userspace using sysfs and
/sbin/hotplug.  It requires a 2.6 kernel to run.  Please see the udev
FAQ for any questions about it:<br />
        <a href="http://www.kernel.org/pub/linux/utils/kernel/hotplug/udev-FAQ">kernel.org/pub/linux/utils/kernel/hotplug/udev-FAQ</a></p>

<p>Please read the FAQ if you have any questions about devfs and udev.
It's been updated a lot in response to all of the confusion about this
topic.</p>

<p>The major changes since the 008 release are:</p>

<p>

<ul>

<li>a number of bugs that were in the 009 release are now fixed.
          The extras/ subdir should now build properly (but I take no
          responsibility if it doesn't...)</li>

<li>we now don't blow away old config files if you install this
          version on top of an older version.  Sorry about that...</li>

<li>udev now supports looking at multiple sysfs files at once for
          a single rule.  This enables you to write such rules as:
          LABEL, BUS="usb", SYSFS_vendor="FUJIFILM", SYSFS_model="M100", NAME="camera%n"
          which helps in trying to identify a device in a unique way.
          Right now udev supports up to 5 different sysfs files.  If you
          want to have more, the code can be changed, just let me know.</li>

<li>new format modifier "%k" has been added to allow rules to use
          the kernel name of the device.</li>

<li>an example shell script that handles an IDE devfs mapping has
          been added to the tarball.  Thanks to Kay Sievers for this.</li>

</ul>

</p>

<p>Thanks again to everyone who has send me patches for this release, a
full list of everyone, and their changes is below.</p>

<p>udev development is done in a BitKeeper repository located at:<br />
        bk://linuxusb.bkbits.net/udev</p>

<p>Daily snapshots of this tree used to be found at:<br />
        <a href="http://www.codemonkey.org.uk/projects/bitkeeper/udev/">http://www.codemonkey.org.uk/projects/bitkeeper/udev/</a><br />
But that box seems to be down now.  Hopefully it will be restored
someday.  If anyone ever wants a tarball of the current bk tree, just
email me.</p>

</quote>

<p>He added in reply to himself:</p>

<quote who="Greg KH">

<p>Oh, forgot to mention that udev runs a _lot_ slower now, taking at least
1 second for every device addition.  This makes the initscript or the test
scripts take a long time.</p>

<p>This was done to try to fix the race condition where udev beats the
kernel before it has created all of the sysfs links and files.  I need some
libsysfs changes before this can be done properly, without the big speed hit
(the libsysfs people are working on it.)</p>

<p>If anyone's interested in it, take a look at the FIXMEs in namedev.c.
I tried messing around with just a simple stat() call, but still couldn't
reliably get stuff to work for partitions on usb-storage devices (which are
slow to enumerate.)  Any help here would be apprecated.</p>

</quote>

</section>

<section
  title="Support For Hot-Swapping RAM"
  subject="Memory Hot add prototye patch v0.1"
  archive="http://www.google.com/groups?hl=en&amp;lr=&amp;ie=UTF-8&amp;selm=15K9R-3BK-17%40gated-at.bofh.it"
  posts="1"
  startdate="22 Dec 2003 18:02:23 -0800"
>
<topic>Big Memory Support</topic>
<topic>Hot-Plugging</topic>
<topic>Power Management: ACPI</topic>

<p>Yasunori Goto said:</p>

<quote who="Yasunori Goto">

<p>This is a Memory hot-add prototype patch against linux-2.6.0.</p>

<p>My target is a machine which has multi-node like NUMA.  So, I assume a
situation that a node which has memory is hot-added.  I use the idea
of multi-node emulation from Iwamoto-san's hot-remove patch.  (<a
href="http://marc.theaimsgroup.com/?l=linux-kernel&amp;m=107025023221904&amp;w=2">http://marc.theaimsgroup.com/?l=linux-kernel&amp;m=107025023221904&amp;w=2</a>)</p>

<p>

<ul>

<li>Hot-added memory is used for highmem in this patch.</li>
<li>A node has only 1 contiguous memory block.</li>
<li>kswapd should be executed for added node, but not yet.</li>

</ul>

</p>

<p>To hot-add memory, please execute following command.<br />
$  echo "enable &lt;number of node&gt;" &gt; /proc/memhotplug</p>


<p>TODO list is followings.</p>

<p>

<ul>

<li>Port to IA64. (It is real target for me.
    But IA32 code is good for investigation of generic way, and
    many person can try to use it.)</li>
<li>Using SRAT table of ACPI to recognize multinode.</li>
<li>There might be some useful parts in memory hotadd project's patch.
    (<a href="http://sourceforge.net/projects/linux-memhotadd/">http://sourceforge.net/projects/linux-memhotadd/</a>)</li>
<li>The case that node has some discontiguous memory block.
    ( Should I use CONFIG_NONLINEAR? But, I don't have idea
     how to map the hole address of hot-removed memory
     by this configuration yet. If you have good idea,
     I'm glad.)</li>
<li>etc. (it's a lot. ;-) )</li>

</ul>

</p>

</quote>

</section>

<section
  title="2.6.0-mm1 Released"
  subject="2.6.0-mm1"
  archive="http://www.google.com/groups?hl=en&amp;lr=&amp;ie=UTF-8&amp;selm=15N7L-7y2-3%40gated-at.bofh.it&amp;prev=/groups%3Fas_ugroup%3Dlinux.kernel%26as_uauthors%3DAndrew%2520Morton%26as_usubject%3D2.6.0-mm1%26as_drbb%3Db%26as_mind%3D22%26as_minm%3DDec%26as_miny%3D2003%26as_maxd%3D22%26as_maxm%3DDec%26as_maxy%3D2003"
  posts="59"
  startdate="22 Dec 2003 21:11:31 -0800"
  enddate="28 Dec 2003 11:52:42 -0800"
>
<topic>Kernel Release Announcement</topic>

<p>Andrew Morton announced 2.6.0-mm1, saying, <quote who="Andrew Morton">Quite
a lot of new material here.  It would be appreciated if people who have
significant patches in -mm could retest please.</quote> There was quite a bit
of discussion, as folks pounded on the release; as part of the general attack,
Christoph Hellwig also asked, <quote who="Christoph Hellwig">BTW, could you
please drop Al's</quote> [Viro] <quote who="Christoph Hellwig"> RD* patches?
They change the entry points for block drivers and thus create some hassle
for people hacking on out of tree block drivers, and obviously can't go into
mainline as is.</quote> Andrew replied, <quote who="Andrew Morton">Have you
discussed this with him?  I was actually hoping to get those patches merged
up soon.</quote> Christoph replied, <quote who="Christoph Hellwig">A while
ago he said he's gonna redo those parts that don't change the API for 2.6
and will postpone the rest to 2.7.</quote></p>

</section>

<section
  title="Ian Kent New DevFS Maintainer"
  subject="Re:  DevFS vs. udev"
  archive="http://www.google.com/groups?hl=en&amp;lr=&amp;ie=UTF-8&amp;selm=15TmR-jA-7%40gated-at.bofh.it&amp;prev=/groups%3Fas_ugroup%3Dlinux.kernel%26as_uauthors%3DBradley%2520W.%2520Allen%26as_usubject%3DRe:%2520DevFS%2520vs.%2520udev%26as_drbb%3Db%26as_mind%3D23%26as_minm%3DDec%26as_miny%3D2003%26as_maxd%3D23%26as_maxm%3DDec%26as_maxy%3D2003"
  posts="34"
  startdate="23 Dec 2003 03:51:58 -0800"
  enddate="25 Dec 2003 04:11:00 -0800"
>
<topic>FS: devfs</topic>
<topic>FS: ramfs</topic>
<topic>FS: sysfs</topic>

<mention>Andrey Borzenkov</mention>
<mention>Robert Love</mention>
<mention>Greg KH</mention>

<p>Bradley W. Allen started a DevFS vs. udev flamewar by saying he thought
DevFS was fine and should be kept. Amid the general tumult, Greg KH asked if
Bradley was volunteering to maintain DevFS; and Ian Kent said he'd be willing
to do that. But he added, <quote who="Ian Kent">However, if Andrew wants it
gone from the kernel there is no point.</quote> Andrew Morton replied:</p>

<quote who="Andrew Morton">

<p>I do not. devfs shall remain in 2.6 and shall continue to be supported.</p>

<p>Richard has disappeared but Andrey Borzenkov understands devfs well and
performed valuable work on it during 2.5 development.</p>

<p>Nor would I recommend that devfs be removed early from 2.7.x.  We should
wait until the proposed udev/sysfs solutions have matured in 2.6 and have
proven themselves in the field.  Only then will we be in a position to
confirm that devfs can be removed without causing some people unacceptable
levels of grief. There is no rush.</p>

<p>And yes, there are architectural/cleanliness issues with devfs.  In 2.5
Adam Richter totally reinventing devfs's internals, basing it around the
ramfs infrastructure.  If we elect to retain devfs in 2.8 then that effort
should be resurrected.</p>

<p>Now would be a good time for someone to feed the whole thing through
indent though.</p>

</quote>

<p>Alexander Viro replied, <quote who="Alexander Viro">Switching internals
to ramfs won't be enough, though.  There are problems with devfs API that
can't be solved by work on internals - lifetime rules for devfs nodes make
no sense.  Take a look at the insertion/removal primitives and think of the
lifetime rules they create for directories and user-created nodes.  _That_
is independent from the way you implement the internals (and sanitized version
of the interface won't fit into use of ramfs, BTW).</quote> Elsewhere, Robert
Love tried to warn Ian that DevFS maintainership would be a living nightmare;
but Ian stood firm.</p>

</section>

<section
  title="Status Of laptop-mode Patch For 2.6"
  subject="Attempt at laptop-mode for 2.6.0"
  archive="http://www.google.com/groups?hl=en&amp;lr=&amp;ie=UTF-8&amp;selm=15WEs-6dO-57%40gated-at.bofh.it"
  posts="3"
  startdate="23 Dec 2003 07:24:01 -0800"
  enddate="23 Dec 2003 10:48:56 -0800"
>
<topic>FS: ext3</topic>
<topic>FS: sysfs</topic>
<topic>Spam</topic>
<topic>Virtual Memory</topic>

<p>Bart Samwel said:</p>

<quote who="Bart Samwel">

<p>Even though I don't own a laptop, I find it very irritating that my hard
drive is active so much. Wanting to fix this, I found the Jens Axboe's
"laptop-mode" patch. Unfortunately it hadn't been ported to Linux
2.6.0 yet, and I'm using that as my primary kernel now. I gave porting
it a shot, and here is the result. I'm running it right now, and my hard
drive has been spun down for the complete time I have been writing this
message. Still, I'm not sure whether it really works as advertised. :)
The reason is that my PC is also a mail server for my personal e-mail,
and I receive e-mails more than once every 10 minutes (fscking spam!).
Still, the tests that I've done seem to indicate that it works.</p>

<p>I've done some things differently than in Jens's patch (my port is based
on v4 of the patch BTW):</p>

<p>

<ul>

<li>

<p>The block dirtying reporting is not there. As an alternative,
you can write a number N higher than 1 into /proc/sys/vm/laptop_mode,
which will give you reports on N-1 actual read/write operations,
including the pid+command that caused them. This gives you a way
to put a reasonable bound on the number of messages you're going to get.
You're only interested in the first one (the one that spins up your
disk) anyway. The messages look like this:</p>

<p>ll_rw_block: (107 reports left) READ requested by imapd (pid 1137)</p>

</li>

<li>When laptop mode is on, wb_kupdate() also performs all of the other
actions mentioned in do_sync(). I don't know whether this is really
necessary because I don't know the full implications of all those
actions, but at least it REALLY makes sure that everything is synced.</li>

<li>The script writes to different values in /proc/sys/vm, because the
Linux 2.6 VM has different controls.</li>

<li>The patch does not modify the ext3 journal commit timeout; you have to
mount your filesystem with commit=600 (or whatever your preferred value
is) to get the correct effect. The 2.4 patch modified the expiration of
an ext3 transaction, I've removed this as I don't see the use if you're
going to have to mount the fs with "commit=" anyway. The default
expiration time of an ext3 transaction is equal to the commit interval,
which is very reasonable. Usually you'd set your commit interval to the
same as the dirty_writeback_centisecs value (in seconds, then), so it
would boil down to the same thing.</li>

</ul>

</p>

<p>Disclaimer: I'm not a very experienced kernel developer, and I may have
made mistakes. Don't kill me if it doesn't work. :) I'd appreciate some
feedback, so if it works or doesn't work for you, please let me know!</p>

</quote>

<p>Jens Axboe replied:</p>

<quote who="Jens Axboe">

<p>Thanks for getting this started. I'm not particularly fond of the
behaviourial changes you made, I guess most are due to it being incomplete?</p>

<p>The block dirtying is the most interesting aspect of the dump functionality,
reporting WRITEs don't give you the info you need to fix your setup.</p>

</quote>

<p>Bart said, <quote who="Bart Samwel">that depends on your point of view. At
this point it weren't the WRITEs that were interesting to me, it were the
READs. The WRITEs just came as a bonus. The reason: what bugged me during
development were the programs that read new data from disk, and I wanted
to find out what to turn off in order to keep the disk from spinning up
all the time. And when the disk DID spin up, I wanted to know if it was my
fault or if it was some daemon messing up my tests again. This is due to my
not actually working on a laptop but on a home server machine. :) I guess
that when you're going for disk-spindowns of longer than 10 minutes (which
is what the block dirtying dumps are for, presumably?) dirtyings start to
become interesting. I'll see if I can port that bit as well, shouldn't be
that much work.</quote></p>

</section>

<section
  title="Scheduler Documentation"
  subject="linux kernel scheduler"
  archive="http://groups.google.com/groups?hl=en&amp;lr=&amp;ie=UTF-8&amp;oe=UTF-8&amp;selm=3FE9B82E.9070502%40ifrance.com.lucky.linux.kernel"
  posts="6"
  startdate="24 Dec 2003 08:00:46 -0800"
  enddate="24 Dec 2003 17:18:12 -0800"
>

<mention>Robert Love</mention>

<p>Someone asked for documentation on the Linux kernel scheduler,
and Jason Pacheco replied, <quote who="Jason Pacheco">I recently purchased "<a
href="http://www.bookfinder.com/search/?author=Robert+Love&amp;title=Linux+Kernel&amp;st=xl&amp;ac=qr">Linux
Kernel Development</a>" by Robert Love. I haven't finished it yet, but so
far I would give it great reviews.  It has a very simple style and is easy
to understand. The book solely covers the 2.6 kernel and explains where it
differentiates from the earlier kernels. Chapter 3 is dedicated to Scheduling
and will give you all the information you need as far as how the 2.6 kernel
does scheduling. For the 2.4 kernel there is plenty of documentation available
on that already.</quote></p>

</section>

<section
  title="2.6.0-tiny1 Released"
  subject="[ANNOUNCE] 2.6.0-tiny1 tree for small systems"
  archive="http://www.google.com/groups?hl=en&amp;lr=&amp;ie=UTF-8&amp;selm=17uDU-52M-15%40gated-at.bofh.it"
  posts="4"
  startdate="27 Dec 2003 13:56:06 -0800"
  enddate="28 Dec 2003 16:31:50 -0800"
>
<topic>Networking</topic>
<topic>Small Systems</topic>

<mention>Jeff Garzik</mention>

<p>Matt Mackall announced:</p>

<quote who="Matt Mackall">

<p>This is the second release of the -tiny kernel tree. The aim of this
tree is to collect patches that reduce kernel disk and memory
footprint as well as tools for working on small systems. Target users
are things like embedded systems, small or legacy desktop folks, and
handhelds.</p>

<p>Latest release includes:</p>

<p>

<ul>

<li>sync against 2.6.0</li>
<li>fix for CONFIG_SYSCTL compilation</li>
<li>Jeff Garzik's netdrvr patchkit, along with latest netpoll/netconsole
code</li>
<li>kgdb and kgdb-over-ethernet debugging support</li>
<li>"make checkstack" to find largest stack users</li>
<li>script to estimate actual code size of inline functions (experimental)</li>
<li>some other minor new tweaks</li>

</ul>

</p>

<p>Thanks to Holger Shuring, Bill Irwin, and Zwane Mwaikamba for sending
me various tweaks.</p>

<p>The patch, currently against 2.6.0, can be found at:</p>

<p><a href="http://selenic.com/tiny/2.6.0-tiny1.patch.bz2">http://selenic.com/tiny/2.6.0-tiny1.patch.bz2</a><br />
 <a href="http://selenic.com/tiny/2.6.0-tiny1-broken-out.tar.bz2">http://selenic.com/tiny/2.6.0-tiny1-broken-out.tar.bz2</a></p>

</quote>

<p>Mike Fedyk suggested, <quote who="Mike Fedyk">Maybe wli will be interested
in this one since he has some stack shrinking patches in his tree...</quote>
And William Lee Irwin III replied, <quote who="William Lee Irwin III">I'm
already following this in general. I contributed a number of fixes I've done
for the 4K stack code over time at the time mpm originally put -tiny together,
though I think he's rearranged various things (e.g. re-split the thing into
3 pieces) I can't be arsed to deal with.</quote></p>

</section>

</kc>

