<?xml version="1.0" ?>

<kc>

<title>Kernel Traffic</title>

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

<issue num="171" date="16 Jun 2002 23:00:00 -0800" />

<stats posts="1177" size="5497" contrib="376" multiples="179" lastweek="163">

<person posts="36" size="102" who="Thunder from the hill " />
<person posts="27" size="117" who="Keith Owens " />
<person posts="26" size="118" who="Patrick Mochel " />
<person posts="23" size="63" who="Alan Cox " />
<person posts="22" size="78" who="Daniel Phillips " />
<person posts="19" size="161" who="Martin Dalecki " />
<person posts="19" size="101" who="Andrew Morton " />
<person posts="19" size="58" who="Pavel Machek " />
<person posts="19" size="50" who="&quot;David S. Miller&quot; " />
<person posts="17" size="49" who="Jeff Garzik " />
<person posts="15" size="132" who="Hans Reiser " />
<person posts="15" size="62" who="Brad Hards " />
<person posts="14" size="52" who="Tom Rini " />
<person posts="14" size="47" who="Greg KH " />
<person posts="14" size="44" who="Dave Jones " />
<person posts="13" size="97" who="Rusty Russell " />
<person posts="13" size="49" who="Robert Love " />
<person posts="11" size="106" who="OGAWA Hirofumi " />
<person posts="11" size="66" who="Jean Tourrilhes " />
<person posts="11" size="60" who="Benjamin LaHaise " />
<person posts="11" size="49" who="Russell King " />
<person posts="11" size="41" who="Linus Torvalds " />
<person posts="10" size="135" who="Albert Cranford " />
<person posts="10" size="67" who="Lightweight patch manager " />
<person posts="10" size="37" who="Andreas Dilger " />
<person posts="10" size="32" who="William Thompson " />
<person posts="10" size="27" who="Roy Sigurd Karlsbakk " />
<person posts="9" size="124" who="Dawson Engler " />
<person posts="9" size="61" who="Karim Yaghmour " />
<person posts="9" size="57" who="&quot;Adam J. Richter&quot; " />
<person posts="9" size="39" who="Matthew Wilcox " />
<person posts="9" size="32" who="Hugh Dickins " />
<person posts="9" size="31" who="Pavel Machek " />
<person posts="9" size="31" who="Kasper Dupont " />
<person posts="9" size="30" who="Peter =?ISO-8859-1?Q?W=E4chtler?= " />
<person posts="8" size="33" who="Kai Germaschewski " />
<person posts="8" size="32" who="Miles Lane " />
<person posts="8" size="31" who="Mark Mielke " />
<person posts="8" size="22" who="" />
<person posts="8" size="21" who="David Woodhouse " />
<person posts="7" size="36" who="Andrea Arcangeli " />
<person posts="7" size="34" who="Martin Schwidefsky " />
<person posts="7" size="32" who="&quot;Albert D. Cahalan&quot; " />
<person posts="7" size="28" who="Tomas Szepe " />
<person posts="7" size="27" who="Oliver Xymoron " />
<person posts="7" size="23" who=" (Eric W. Biederman)" />
<person posts="7" size="22" who="Jens Axboe " />
<person posts="7" size="21" who="David Ford " />
<person posts="7" size="18" who="DervishD " />
<person posts="6" size="34" who="Andre Hedrick " />
<person posts="6" size="18" who="&quot;Thomas 'Dent' Mirlacher&quot; " />
<person posts="5" size="52" who="&quot;John L. Males&quot; " />
<person posts="5" size="24" who="&quot;J.A. Magallon&quot; " />
<person posts="5" size="24" who="&quot;Martin J. Bligh&quot; " />
<person posts="5" size="18" who="Vojtech Pavlik " />
<person posts="5" size="17" who="&quot;Grover, Andrew&quot; " />
<person posts="5" size="17" who="Peter Chubb " />
<person posts="5" size="16" who="Bill Davidsen " />
<person posts="5" size="16" who="Andi Kleen " />
<person posts="5" size="15" who="Chris Faherty " />
<person posts="5" size="15" who="Svetoslav Slavtchev " />
<person posts="5" size="15" who="Zwane Mwaikambo " />
<person posts="5" size="14" who="Kai Germaschewski " />
<person posts="5" size="14" who="Thomas Duffy " />
<person posts="5" size="14" who="Ruth Ivimey-Cook " />
<person posts="5" size="12" who="Felix Seeger " />
<person posts="4" size="42" who="" />
<person posts="4" size="37" who="Borsenkow Andrej " />
<person posts="4" size="18" who="Vladimir Zidar " />
<person posts="4" size="18" who="William Lee Irwin III " />
<person posts="4" size="17" who="Paul Menage " />
<person posts="4" size="16" who="Stephen Rothwell " />
<person posts="4" size="13" who="Sam Ravnborg " />
<person posts="4" size="13" who="Andi Kleen " />
<person posts="4" size="13" who="Austin Gonyou " />
<person posts="4" size="13" who="Ingo Oeser " />
<person posts="4" size="13" who="Skip Ford " />
<person posts="4" size="12" who="Ivan Kokshaysky " />
<person posts="4" size="12" who="Erik Andersen " />
<person posts="4" size="12" who="James Simmons " />
<person posts="3" size="83" who="" />
<person posts="3" size="22" who="&quot;Richard B. Johnson&quot; " />
<person posts="3" size="21" who="=?iso-8859-1?Q?Rasmus_B=F8g_Hansen?= " />
<person posts="3" size="14" who="george anzinger " />
<person posts="3" size="13" who="&quot;Ulrich Weigand&quot; " />
<person posts="3" size="13" who="Gerald Teschl " />
<person posts="3" size="12" who="Gerrit Huizenga " />
<person posts="3" size="12" who="Wang Hui " />
<person posts="3" size="11" who="Samuel Flory " />
<person posts="3" size="11" who="Arnaldo Carvalho de Melo " />
<person posts="3" size="11" who="Gilad Ben-Yossef " />
<person posts="3" size="10" who="&quot;Anjali Kulkarni&quot; " />
<person posts="3" size="10" who="Dag Nygren " />
<person posts="3" size="10" who="Derek Vadala " />
<person posts="3" size="10" who="Anton Altaparmakov " />
<person posts="3" size="10" who=" (Kai Henningsen)" />
<person posts="3" size="10" who="&quot;Martin.Knoblauch&quot; " />
<person posts="3" size="9" who="Eric Kristopher Sandall " />
<person posts="3" size="9" who="Arnd Bergmann " />
<person posts="3" size="9" who="dean gaudet " />
<person posts="3" size="9" who="Oliver Wegner " />
<person posts="3" size="9" who="Jan Hudec " />
<person posts="3" size="9" who="Douglas Gilbert " />
<person posts="3" size="9" who="Kristian Peters " />
<person posts="3" size="8" who="Oliver Neukum " />
<person posts="3" size="8" who="Pete Zaitcev " />
<person posts="3" size="8" who="&quot;Randy.Dunlap&quot; " />
<person posts="3" size="8" who="Michael Zhu " />
<person posts="3" size="7" who="Richard Gooch " />
<person posts="3" size="7" who="Mikael Pettersson " />
<person posts="3" size="7" who="" />
<person posts="3" size="7" who=" (Joe Korty)" />
<person posts="3" size="7" who="Diego Calleja " />
<person posts="3" size="6" who="" />
<person posts="2" size="100" who="James Bourne " />
<person posts="2" size="45" who="Alan Cox " />
<person posts="2" size="33" who="" />
<person posts="2" size="23" who="James Morris " />
<person posts="2" size="21" who="Arjan Filius " />
<person posts="2" size="17" who="&quot;Anna Riley&quot; " />
<person posts="2" size="17" who="Robinson Maureira Castillo " />
<person posts="2" size="13" who="William Jhun " />
<person posts="2" size="11" who="James Bottomley " />
<person posts="2" size="11" who="Jan-Benedict Glaw " />
<person posts="2" size="10" who="&quot;Mike Black&quot; " />
<person posts="2" size="8" who="Tomas Vanderka " />
<person posts="2" size="8" who="Alex Riesen " />
<person posts="2" size="8" who="&quot;BALBIR SINGH&quot; " />
<person posts="2" size="8" who="Gert Vervoort " />
<person posts="2" size="8" who="&quot;Hank Yang&quot; " />
<person posts="2" size="8" who="Neil Brown " />
<person posts="2" size="8" who="A Guy Called Tyketto " />
<person posts="2" size="7" who="Rick Bressler " />
<person posts="2" size="7" who="Samuel Maftoul " />
<person posts="2" size="7" who="Petr Vandrovec " />
<person posts="2" size="7" who="Brian Gerst " />
<person posts="2" size="7" who="Mark Hounschell " />
<person posts="2" size="7" who="Allan Sandfeld " />
<person posts="2" size="7" who="Corporal Pisang " />
<person posts="2" size="7" who="Patrick Mansfield " />
<person posts="2" size="6" who="David Mosberger " />
<person posts="2" size="6" who="Donald Becker " />
<person posts="2" size="6" who="John Levon " />
<person posts="2" size="6" who="&quot;Petr Vandrovec&quot; " />
<person posts="2" size="6" who="Andre Bonin " />
<person posts="2" size="6" who="Joel Jaeggli " />
<person posts="2" size="6" who="&quot;Stuart MacDonald&quot; " />
<person posts="2" size="6" who="&quot;Kevin P. Fleming&quot; " />
<person posts="2" size="6" who="&quot;tushar  korde&quot; " />
<person posts="2" size="6" who="Simon Matthews " />
<person posts="2" size="6" who="&quot;Hua Zhong&quot; " />
<person posts="2" size="6" who="Athanasius " />
<person posts="2" size="6" who="Clemens Schwaighofer " />
<person posts="2" size="6" who="Mark Hounschell " />
<person posts="2" size="6" who="Trond Myklebust " />
<person posts="2" size="6" who="Rob Landley " />
<person posts="2" size="6" who="john slee " />
<person posts="2" size="5" who="Matti Aarnio " />
<person posts="2" size="5" who="&quot;Philippe Veillette (LMC)&quot; " />
<person posts="2" size="5" who="Xavier Bestel " />
<person posts="2" size="5" who="&quot;Brian J. Conway&quot; " />
<person posts="2" size="5" who="Frank v Waveren " />
<person posts="2" size="5" who="cfowler " />
<person posts="2" size="5" who="Alessandro Rubini " />
<person posts="2" size="5" who="Dan Aloni " />
<person posts="2" size="5" who="tabris " />
<person posts="2" size="5" who="Bartlomiej Zolnierkiewicz " />
<person posts="2" size="5" who="&quot;Nix N. Nix&quot; " />
<person posts="2" size="5" who="Matt Bernstein " />
<person posts="2" size="4" who="Nicolas Pitre " />
<person posts="2" size="4" who="&quot;Maciej W. Rozycki&quot; " />
<person posts="2" size="4" who="Olivier Galibert " />
<person posts="2" size="4" who="Giuliano Pochini " />
<person posts="2" size="4" who="Paul P Komkoff Jr " />
<person posts="2" size="4" who="Shane Walton " />
<person posts="2" size="4" who="Mathias Gygax " />
<person posts="2" size="4" who="Robert PipCA " />
<person posts="2" size="4" who="&quot;Justin T. Gibbs&quot; " />
<person posts="2" size="4" who="=?iso-8859-1?q?F=20ker?= " />
<person posts="1" size="67" who="sean darcy " />
<person posts="1" size="45" who="&quot;Anthony J. Breeds-Taurima&quot; " />
<person posts="1" size="37" who="mgross " />
<person posts="1" size="35" who="Erlend Aasland " />
<person posts="1" size="22" who="&quot;R. Steve McKown&quot; " />
<person posts="1" size="16" who="Matthew Dobson " />
<person posts="1" size="16" who="Hans Streibel " />
<person posts="1" size="15" who="James Drabb " />
<person posts="1" size="14" who="Brian Gerst " />
<person posts="1" size="14" who="Denis Vlasenko " />
<person posts="1" size="12" who="&quot;Zbigniew&quot; " />
<person posts="1" size="12" who="Krzysztof Oledzki " />
<person posts="1" size="12" who="Robert Litwiniec " />
<person posts="1" size="11" who="&quot;Guillaume Boissiere&quot; " />
<person posts="1" size="11" who="&quot;Paolo Ciarrocchi&quot; " />
<person posts="1" size="11" who="" />
<person posts="1" size="9" who="=?ISO-8859-1?Q?" />
<person posts="1" size="9" who="Maciej Polewczynski " />
<person posts="1" size="8" who=" (Peter Bornemann)" />
<person posts="1" size="8" who="Frank Davis " />
<person posts="1" size="8" who="Peter =?iso-8859-1?Q?W=E4chtler?= " />
<person posts="1" size="7" who="Lyall Pearce " />
<person posts="1" size="7" who="Gregory Hosler " />
<person posts="1" size="7" who="Anders Gustafsson " />
<person posts="1" size="7" who="Cory Watson " />
<person posts="1" size="7" who="John covici " />
<person posts="1" size="6" who="Dean Townsley " />
<person posts="1" size="6" who="Jussi Laako " />
<person posts="1" size="6" who="Chris Rankin " />
<person posts="1" size="6" who="Denis Lunev " />
<person posts="1" size="6" who="Filip Van Raemdonck " />
<person posts="1" size="5" who="&quot;Randal, Phil&quot; " />
<person posts="1" size="5" who="David Weinehall " />
<person posts="1" size="5" who="Jurriaan on Alpha " />
<person posts="1" size="5" who="" />
<person posts="1" size="5" who="&quot;ALEXANDER DAVID&quot; " />
<person posts="1" size="5" who="Itai Nahshon " />
<person posts="1" size="5" who="Francois Gouget " />
<person posts="1" size="5" who="" />
<person posts="1" size="4" who="Manoj Iyer " />
<person posts="1" size="4" who="&quot;seawang&quot; " />
<person posts="1" size="4" who="&quot;Rui Sousa&quot; " />
<person posts="1" size="4" who="Adam Trilling " />
<person posts="1" size="4" who="Anders Eriksson " />
<person posts="1" size="4" who="Kevin Corry " />
<person posts="1" size="4" who="Heinz Diehl " />
<person posts="1" size="4" who="Athanasius " />
<person posts="1" size="4" who="Ulrich Pfeifer " />
<person posts="1" size="4" who="David Brownell " />
<person posts="1" size="4" who="Jesse Pollard " />
<person posts="1" size="4" who="Jan Kasprzak " />
<person posts="1" size="4" who="&quot;Dr. David Alan Gilbert&quot; " />
<person posts="1" size="4" who="" />
<person posts="1" size="4" who="george adams " />
<person posts="1" size="4" who="Benjamin Herrenschmidt " />
<person posts="1" size="4" who="&quot;John L. Males&quot; " />
<person posts="1" size="4" who="ET Sales " />
<person posts="1" size="4" who="Helge Hafting " />
<person posts="1" size="4" who="John Weber " />
<person posts="1" size="4" who="Gerd Knorr " />
<person posts="1" size="3" who="Roland Dreier " />
<person posts="1" size="3" who="&quot;James Stevenson&quot; " />
<person posts="1" size="3" who="Cengiz Akinli " />
<person posts="1" size="3" who="Neil Spring " />
<person posts="1" size="3" who="Saurabh Desai " />
<person posts="1" size="3" who="&quot;H. Peter Anvin&quot; " />
<person posts="1" size="3" who="=?ISO-8859-1?Q? &quot;Fran=E7ois?= Leblanc&quot; " />
<person posts="1" size="3" who="&quot;Nick Evgeniev&quot; " />
<person posts="1" size="3" who="" />
<person posts="1" size="3" who="" />
<person posts="1" size="3" who="&quot;Chris Fuller&quot; " />
<person posts="1" size="3" who="Stephen Lord " />
<person posts="1" size="3" who="Alessandro Suardi " />
<person posts="1" size="3" who="" />
<person posts="1" size="3" who="Brad Heilbrun " />
<person posts="1" size="3" who="Johannes Niediek " />
<person posts="1" size="3" who="Steve Lord " />
<person posts="1" size="3" who="&quot;seko  moshood&quot; " />
<person posts="1" size="3" who="Daniel Forrest " />
<person posts="1" size="3" who="Jacob Cohen " />
<person posts="1" size="3" who="Marcin Bajko " />
<person posts="1" size="3" who="&quot;Geoff Wood&quot; " />
<person posts="1" size="3" who="Hank Leininger " />
<person posts="1" size="3" who="Daniel Kobras " />
<person posts="1" size="3" who="Cort Dougan " />
<person posts="1" size="3" who="Larry McVoy " />
<person posts="1" size="3" who="Sean Hunter " />
<person posts="1" size="3" who=" (Linus Torvalds)" />
<person posts="1" size="3" who="jw schultz " />
<person posts="1" size="3" who="Marco Colombo " />
<person posts="1" size="3" who="Johannes Erdfelt " />
<person posts="1" size="3" who="&quot;Holzrichter, Bruce&quot; " />
<person posts="1" size="3" who="&quot;Dr. David Alan Gilbert&quot; " />
<person posts="1" size="3" who="Marcus Sundberg " />
<person posts="1" size="3" who="Steve Best " />
<person posts="1" size="3" who="" />
<person posts="1" size="3" who="Gerald Teschl " />
<person posts="1" size="3" who="&quot;Christopher E. Brown&quot; " />
<person posts="1" size="3" who="Jamie Lokier " />
<person posts="1" size="3" who="" />
<person posts="1" size="3" who="&quot;&quot; " />
<person posts="1" size="3" who="&quot;Raptorfan&quot; " />
<person posts="1" size="3" who="Don Krause " />
<person posts="1" size="3" who="Daniel Jacobowitz " />
<person posts="1" size="3" who="Andreas Schwab " />
<person posts="1" size="3" who="Greg Donald " />
<person posts="1" size="3" who="&quot;Roeland Th. Jansen&quot; " />
<person posts="1" size="3" who="Felix Seeger " />
<person posts="1" size="3" who="David Schwartz " />
<person posts="1" size="3" who="&quot;Bloch, Jack&quot; " />
<person posts="1" size="3" who="Mike Fedyk " />
<person posts="1" size="3" who="Michael De Nil " />
<person posts="1" size="3" who="Andrew Pimlott " />
<person posts="1" size="3" who="Richard Zidlicky " />
<person posts="1" size="3" who="Frank Schaefer " />
<person posts="1" size="3" who="Thomas Zimmerman " />
<person posts="1" size="3" who="Dave Hansen " />
<person posts="1" size="3" who="" />
<person posts="1" size="3" who="Zinx Verituse " />
<person posts="1" size="3" who="&quot;Michel Eyckmans (MCE)&quot; " />
<person posts="1" size="3" who="DP " />
<person posts="1" size="2" who="&quot;Jon Burgess&quot; " />
<person posts="1" size="2" who="Jan Harkes " />
<person posts="1" size="2" who="Andrew D Kirch " />
<person posts="1" size="2" who="John Cowan " />
<person posts="1" size="2" who="&quot;Stephane Charette&quot; " />
<person posts="1" size="2" who="Anton Blanchard " />
<person posts="1" size="2" who="Joseph Cheek " />
<person posts="1" size="2" who="Hans-Christian Armingeon " />
<person posts="1" size="2" who="Andrew Rodland " />
<person posts="1" size="2" who="Sebastian Droege " />
<person posts="1" size="2" who="Andrew Pam " />
<person posts="1" size="2" who="" />
<person posts="1" size="2" who="&quot;Kevin P. Fleming&quot; " />
<person posts="1" size="2" who="Brian J.Conway " />
<person posts="1" size="2" who="John Covici " />
<person posts="1" size="2" who="Rui Sousa " />
<person posts="1" size="2" who="Lance Larsh " />
<person posts="1" size="2" who="John Alvord " />
<person posts="1" size="2" who="Henrique Gobbi " />
<person posts="1" size="2" who="Adam Kropelin " />
<person posts="1" size="2" who="Simon Trimmer " />
<person posts="1" size="2" who="Adrian Bunk " />
<person posts="1" size="2" who="Anssi Saari " />
<person posts="1" size="2" who="Ben Greear " />
<person posts="1" size="2" who=" (=?iso-8859-1?q?M=E5ns_Rullg=E5rd?=)" />
<person posts="1" size="2" who="Ryan Cumming " />
<person posts="1" size="2" who="Go Taniguchi " />
<person posts="1" size="2" who="David Chow " />
<person posts="1" size="2" who="Ingo Molnar " />
<person posts="1" size="2" who="J Sloan " />
<person posts="1" size="2" who="Ivan Gyurdiev " />
<person posts="1" size="2" who="Padraig Brady " />
<person posts="1" size="2" who="Guest section DW " />
<person posts="1" size="2" who="" />
<person posts="1" size="2" who="Bernd Eckenfels " />
<person posts="1" size="2" who="Zlatko Calusic " />
<person posts="1" size="2" who="&quot;goggin, edward&quot; " />
<person posts="1" size="2" who="Nivedita Singhvi " />
<person posts="1" size="2" who="Jos Hulzink " />
<person posts="1" size="2" who="Stefan Schwandter " />
<person posts="1" size="2" who="David Lang " />
<person posts="1" size="2" who="&quot;Samium Gromoff&quot; " />
<person posts="1" size="2" who="Wakko Warner " />
<person posts="1" size="2" who="Matthias Andree " />
<person posts="1" size="2" who="&quot;Barry K. Nathan&quot; " />
<person posts="1" size="2" who="Adam Luchjenbroers " />
<person posts="1" size="2" who="Mukesh Rajan " />
<person posts="1" size="2" who="Marcelo Tosatti " />
<person posts="1" size="2" who="Rolf Fokkens " />
<person posts="1" size="2" who="Duncan Sands " />
<person posts="1" size="2" who="&quot;Barbara Caldwell&quot; " />
<person posts="1" size="2" who="=?iso-8859-1?q?R=FCdiger=20Sonderfeld?= " />
<person posts="1" size="2" who="" />
<person posts="1" size="2" who="" />
<person posts="1" size="2" who="" />
<person posts="1" size="2" who="Szabolcs Berecz " />
<person posts="1" size="2" who="Paul Zimmerman " />
<person posts="1" size="2" who="Ducrot Bruno " />
<person posts="1" size="2" who="&quot;Sean Hunter&quot; " />
<person posts="1" size="2" who="Oleg Drokin " />
<person posts="1" size="2" who="Ravikiran G Thirumalai " />
<person posts="1" size="2" who="&quot;Andrew Potter&quot; " />
<person posts="1" size="2" who="Francois Romieu " />
<person posts="1" size="2" who="Ion Badulescu " />
<person posts="1" size="2" who="&quot;jeff millar&quot; " />
<person posts="1" size="2" who="=?iso-8859-1?q?Mike=20Martin?= " />
<person posts="1" size="2" who="=?iso-8859-2?Q?Pawe=B3?= Krawczyk " />
<person posts="1" size="2" who="Gert Vervoort " />
<person posts="1" size="2" who="Ian Stirling " />
<person posts="1" size="2" who="jay " />
<person posts="1" size="2" who="John Tyner " />
<person posts="1" size="2" who="vt " />
<person posts="1" size="2" who="Bill Davidsen " />
<person posts="1" size="2" who="Amici Alessandro " />
<person posts="1" size="1" who="Hayden James " />

</stats>

<section
  title="Status Of kbuild And CML2"
  subject="Announce: Kernel Build for 2.5, release 3.0 is available"
  archive="http://www.uwsg.indiana.edu/hypermail/linux/kernel/0206.0/0234.html"
  posts="25"
  startdate="02 Jun 2002 18:35:05 -0800"
  enddate="12 Jun 2002 16:15:31 -0800"
>
<topic>Kernel Build System</topic>

<mention>Eric S. Raymond</mention>

<p>Keith Owens announced kbuild 3.0 for the unstable kernel series. One
of the changes in that version was the removal of CML2 support, and
Hayden A. James asked why this had been done. Someone gave a link into the <a
href="http://www.mail-archive.com/kbuild-devel%40lists.sourceforge.net/msg01469.html">email
archives</a>, and Keith explained that Eric S. Raymond <quote who="Keith
Owens">has dropped off the list.  CML2 and kbuild 2.5 are completely
independent and having the two in the same patch was getting messy.
The config rules in kbuild 2.5 are clean, support for other variants of CML
can be added at any time.</quote></p>

</section>

<section
  title="Adeos, A New Nanokernel Under Linux"
  subject="[ANNOUNCE] Adeos nanokernel for Linux kernel"
  archive="http://www.uwsg.indiana.edu/hypermail/linux/kernel/0206.0/0294.html"
  posts="59"
  startdate="03 Jun 2002 00:35:04 -0800"
  enddate="08 Jun 2002 05:59:16 -0800"
>
<topic>BSD</topic>
<topic>Microkernels: Adeos</topic>
<topic>Patents</topic>
<topic>Real-Time: RTAI</topic>
<topic>Real-Time: RTLinux</topic>
<topic>SMP</topic>
<topic>User-Mode Linux</topic>

<mention>Daniel Phillips</mention>

<p>Karim Yaghmour announced:</p>

<quote who="Karim Yaghmour">

<p>We have released the initial implementation of the Adeos nanokernel.
The following is a complete description of its background, its implementation,
its API, and its potential uses. Please also see the press release (<a
href="http://www.freesoftware.fsf.org/adeos/pr-2002-06-03.en.txt">http://www.freesoftware.fsf.org/adeos/pr-2002-06-03.en.txt</a>)
and the project's workspace (<a
href="http://freesoftware.fsf.org/projects/adeos/">http://freesoftware.fsf.org/projects/adeos/</a>).
The Adeos code is distributed under the GNU GPL.</p>

<p>The Adeos nanokernel is based on research and publications made in the
early '90s on the subject of nanokernels. Our basic method was to reverse the
approach described in most of the papers on the subject.  Instead of first
building the nanokernel and then building the client OSes, we started from a
live and known-to-be-functional OS, Linux, and inserted a nanokernel beneath
it. Starting from Adeos, other client OSes can now be put side-by-side with
the Linux kernel.</p>

<p>To this end, Adeos enables multiple domains to exist simultaneously on
the same hardware. None of these domains see each other, but all of them see
Adeos. A domain is most probably a complete OS, but there is no assumption
being made regarding the sophistication of what's in a domain.</p>

<p>To share the hardware among the different OSes, Adeos implements an
interrupt pipeline (ipipe). Every OS domain has an entry in the ipipe.
Each interrupt that comes in the ipipe is passed on to every domain in the
ipipe. Instead of disabling/enabling interrupts, each domain in the pipeline
only needs to stall/unstall his pipeline stage. If an ipipe stage is stalled,
then the interrupts do not progress in the ipipe until that stage has been
unstalled. Each stage of the ipipe can, of course, decide to do a number of
things with an interrupt.  Among other things, it can decide that it's the
last recipient of the interrupt. In that case, the ipipe does not propagate
the interrupt to the rest of the domains in the ipipe.</p>

<p>Regardless of the operations being done in the ipipe, the Adeos code does
__not__ play with the interrupt masks. The only case where the hardware masks
are altered is during the addition/removal of a domain from the ipipe. This
also means that no OS is allowed to use the real hardware cli/sti. But this
is OK, since the stall/unstall calls achieve the same functionality.</p>

<p>Our approach is based on the following papers (links to these
papers are provided at the bottom of this message):</p>

<p>

<ol>

<li>D. Probert, J. Bruno, and M. Karzaorman. "Space: a new approach
to operating system abstraction." In: International Workshop on Object
Orientation in Operating Systems, pages 133-137, October 1991.</li>

<li>D. Probert, J. Bruno. "Building fundamentally extensible application-
specific operating systems in Space", March 1995.</li>

<li>D. Cheriton, K. Duda. "A caching model of operating system kernel
functionality". In: Proc. Symp. on Operating Systems Design and Implementation,
pages 179-194, Monterey CA (USA), 1994.</li>

<li>D. Engler, M. Kaashoek, and J. O'Toole Jr. "Exokernel: an operating system
architecture for application-specific resource management", December 1995.</li>

</ol>

</p>

<p>If you don't want to go fetch the complete papers, here's a summary.
The first 2 discuss the Space nanokernel, the 3rd discussed the cache
nanokernel, and the last discusses exokernel.</p>

<p>The complete Adeos approach has been thoroughly documented in a whitepaper
published more than a year ago entitled "Adaptive Domain Environment for
Operating Systems" and available here: http://www.opersys.com/adeos The
current implementation is slightly different. Mainly, we do not implement
the functionality to move Linux out of ring 0. Although of interest, this
approach is not very portable.</p>

<p>Instead, our patch taps right into Linux's main source of control over the
hardware, the interrupt dispatching code, and inserts an interrupt pipeline
which can then serve all the nanokernel's clients, including Linux.</p>

<p>This is not a novelty in itself. Other OSes have been modified in such
a way for a wide range of purposes. One of the most interesting examples is
described by Stodolsky, Chen, and Bershad in a paper entitled "Fast Interrupt
Priority Management in Operating System Kernels" published in 1993 as part
of the Usenix Microkernels and Other Kernel Architectures Symposium. In that
case, cli/sti were replaced by virtual cli/sti which did not modify the real
interrupt mask in any way. Instead, interrupts were defered and delivered
to the OS upon a call to the virtualized sti.</p>

<p>Mainly, this resulted in increased performance for the OS. Although we
haven't done any measurements on Linux's interrupt handling performance
with Adeos, our nanokernel includes by definition the code implementing the
technique described in the abovementioned Stodolsky paper, which we use to
redirect the hardware interrupt flow to the pipeline.</p>

<p>In terms of implementation, the Adeos' code is rather short since we
focused on setting the foundations for sharing interrupts between
domains. Here are the files we added:<br />
kernel/adeos.c: Architecture-independent domain code.<br />
arch/i386/kernel/adeos.c: Architecture-dependent domain code.<br />
arch/i386/kernel/ipipe.c: Interrupt pipeline code.<br />
include/asm-i386/adeos.h: Arch-dependent Adeos header.<br />
include/linux/adeos.h: Main (arch-independent) Adeos header.</p>

<p>As you can see, only the i386 is currently supported. Nonetheless,
most of the architecture-dependent code is easily portable to other
architectures.</p>

<p>We also modified some files to tap into Linux interrupt dispatching
(all the modifications are encapsulated in #ifdef CONFIG_ADEOS/#endif):</p>

<p>
        kernel/ksyms.c<br />
        arch/i386/kernel/apic.c<br />
        arch/i386/kernel/entry.S<br />
        arch/i386/kernel/i386_ksyms.c<br />
        arch/i386/kernel/i8259.c<br />
        arch/i386/kernel/irq.c<br />
        arch/i386/kernel/smp.c<br />
        arch/i386/kernel/time.c<br />
        arch/i386/kernel/traps.c<br />
        arch/i386/mm/fault.c<br />
        include/asm-i386/keyboard.h<br />
        include/asm-i386/system.h
</p>

<p>We modified the idle task so it gives control back to Adeos in order for
the ipipe to continue propagation:<br />
arch/i386/kernel/process.c</p>

<p>We modified init/main.c to initialize Adeos very early in the startup.</p>

<p>Of course, we also added the appropriate makefile modifications and
config options so that you can choose to enable/disable Adeos as
part of the kernel build configuration.</p>

<p>Here is Adeos' public API:</p>

<blockquote>

<p>    int adeos_register_domain(adomain_t *adp, adattr_t *attr);<br />
    Register a new domain using the properties defined in the attribute.</p>

<p>    void adeos_unregister_domain(adomain_t *adp);<br />
    Remove "adp" domain.</p>

<p>    void adeos_renice_domain(adomain_t *adp, int newpri);<br />
    Change "adp"'s priority in the ipipe.</p>

<p>    void adeos_suspend_domain(void);<br />
    This domain is done dealing with the current interrupt. This signals
    the ipipe to provide the interrupt to the next ipipe stage.</p>

<p>    void adeos_virtualize_irq(unsigned irq, void (*handler)(void),
    int (*acknowledge)(unsigned));<br />
    Provide a handler and an acknowledgment function for "irq".</p>

<p>    void adeos_control_irq(unsigned irq, unsigned clrmask, unsigned
        setmask);<br />
    Change the current domain's handling mask for irq "irq". "clrmask"
    is applied first and then "setmask" is applied.</p>

<p>    void adeos_stall_ipipe(void);<br />
    Stall the current domain's ipipe stage. Alternative to cli.</p>

<p>    void adeos_unstall_ipipe(void);<br />
    Unstall the current domain's ipipe stage. Alternative to sti.</p>

<p>    void adeos_restore_ipipe(unsigned x);<br />
    Restore the ipipe from its saved state. Alternative to
    __restore_flags() and local_irq_restore(). This is used with the
    following defines:<br />
    #define adeos_test_ipipe() test_bit(IPIPE_STALL_FLAG,&amp;adp_current-&gt;status)<br />
    #define adeos_test_and_stall_ipipe() test_and_set_bit(IPIPE_STALL_FLAG,&amp;adp_current-&gt;status)<br />
    Which replace __save_flags and local_irq_save(), respectively.</p>

</blockquote>

<p>In Linux's case, adeos_register_domain() is called very early during
system startup. set_intr_gate() in arch/i386/kernel/traps.c is then
modified to call on adeos_virtualize_irq() so that Linux would tell
the ipipe that it needs the irq passed to set_intr_gate().</p>

<p>To add your domain to the ipipe, you need to:</p>

<p>

<ol>

<li>Register your domain with Adeos using adeos_register_domain()</li>

<li>Call adeos_virtualize_irq() for all the IRQs you wish to be
notified about in the ipipe.</li>

</ol>

</p>

<p>That's it. Provided you gave Adeos appropriate handlers in step
#2, your interrupts will be delivered via the ipipe.</p>

<p>During runtime, you may change your position in the ipipe using
adeos_renice_domain(). You may also stall/unstall the pipeline
and change the ipipe's handling of the interrupts according to your
needs.</p>

<p>We currently don't support SMP, but we do have APIC support on UP.</p>

<p>Here are some of the possible uses for Adeos (this list is far
from complete):</p>

<p>

<ol>

<li>Much like User-Mode Linux, it should now be possible to have 2
Linux kernels living side-by-side on the same hardware. In contrast
to UML, this would not be 2 kernels one ontop of the other, but
really side-by-side. Since Linux can be told at boot time to use
only one portion of the available RAM, on a 128MB machine this
would mean that the first could be made to use the 0-64MB space and
the second would use the 64-128MB space. We realize that many
modifications are required. Among other things, one of the 2 kernels
will not need to conduct hardware initialization. Nevertheless, this
possibility should be studied closer.</li>

<li>It follows from #1 that adding other kernels beside Linux should
be feasible. BSD is a prime candidate, but it would also be nice to
see what virtualizers such as VMWare and Plex86 could do with Adeos.
Proprietary operating systems could potentially also be accomodated.</li>

<li>All the previous work that has been done on nanokernels should now
be easily ported to Linux. Mainly, we would be very interested to
hear about extensions to Adeos. Primarily, we have no mechanisms
currently enabling multiple domains to share information. The papers
mentioned earlier provide such mechanisms, but we'd like to see
actual practical examples.</li>

<li>By incorporating Adeos into the main kernel tree (I know my inbox
is probably going to fill up because of this one), kernel debuggers'
main problem (tapping into the kernel's interrupts) is solved and it
should then be possible to provide patchless kernel debuggers. They
would then become loadable kernel modules.</li>

<li>Drivers who require absolute priority and dislike other kernel
portions who use cli/sti can now create a domain of their own
and place themselves before Linux in the ipipe. This provides a
mechanism for the implementation of systems that can provide guaranteed
realtime response.</li>

</ol>

</p>

<p>Of course, we are interested in hearing about comments and suggestions
you have about Adeos.</p>

<p>----------------------------------------------------------------------</p>

<p>Links to papers:</p>

<p>

<ol>

<li>
<a href="http://citeseer.nj.nec.com/probert91space.html">http://citeseer.nj.nec.com/probert91space.html</a><br />
<a href="ftp://ftp.cs.ucsb.edu/pub/papers/space/iwooos91.ps.gz">ftp://ftp.cs.ucsb.edu/pub/papers/space/iwooos91.ps.gz</a> (not working)<br />
<a href="http://www4.informatik.uni-erlangen.de/~tsthiel/Papers/Space-iwooos91.ps.gz">http://www4.informatik.uni-erlangen.de/~tsthiel/Papers/Space-iwooos91.ps.gz</a>
</li>

<li>
<a href="http://www.cs.ucsb.edu/research/trcs/abstracts/1995-06.shtml">http://www.cs.ucsb.edu/research/trcs/abstracts/1995-06.shtml</a><br />
<a href="http://www4.informatik.uni-erlangen.de/~tsthiel/Papers/Space-trcs95-06.ps.gz">http://www4.informatik.uni-erlangen.de/~tsthiel/Papers/Space-trcs95-06.ps.gz</a>
</li>

<li>
<a href="http://citeseer.nj.nec.com/kenneth94caching.html">http://citeseer.nj.nec.com/kenneth94caching.html</a><br />
<a href="http://guir.cs.berkeley.edu/projects/osprelims/papers/cachmodel-OSkernel.ps.gz">http://guir.cs.berkeley.edu/projects/osprelims/papers/cachmodel-OSkernel.ps.gz</a>
</li>

<li>
<a href="http://citeseer.nj.nec.com/engler95exokernel.html">http://citeseer.nj.nec.com/engler95exokernel.html</a><br />
<a href="ftp://ftp.cag.lcs.mit.edu/multiscale/exokernel.ps.Z">ftp://ftp.cag.lcs.mit.edu/multiscale/exokernel.ps.Z</a>
</li>

</ol>

</p>

</quote>

<p>There were two main prongs of discussion that emerged from the ensuing
discussion. Erik Andersen asked about performance. Traditionally, because
micro-kernels employ a formal wall of message-passing between the upper and
lower layers of the system, it has been thought that micro-kernels would incur
significant performance overhead that monolithic kernels like Linux wouldn't
suffer from. But Karim replied that according to some preliminary tests,
their implementation was less than 1% slower than the standard kernel.</p>

<p>Erik had also asked in his post, about the impact of existing software
patents. Would Adeos violate anyone's intellectual property or not? There was
some dispute about this. Alessandro Rubini felt that <quote who="Alessandro
Rubini">To me this looks definitely clear of the FMSLabs patent, since RT
and non-RT live side by side, not on a master-slave relationship.</quote>
Karim agreed, and added, <quote who="Karim Yaghmour">grab the papers, the
code and the patent and have a look for yourself, you will see that we're
clear. Apart from having the kernels side-by-side, Adeos is based on classic
early '90s nanokernel work. No secrets there.</quote> But Erik was unconvinced.
He asked, <quote who="Erik Andersen">will we soon be seeing a port of RTAI
to a linux kernel module which is implemented as a separate Adeos domain,
allowing RTAI apps to bypass US patent 5995745?  A quick glance over that
patent leaves me uncertain whether this indeed bypasses the fundamental
"invention" of a "process for running a general purpose computer operating
system using a real time operating system".   It still looks to me like a
real time operating system (Adeos) running real time and non-real time tasks
with a general purpose operating system as one of the non-real time tasks...
Could you summarize (for non-lawyers such as myself) how this bypasses the
claims in the patent?</quote> Alessandro replied</p>

<quote who="Alessandro Rubini">

<p>I'll quote the patent for you:</p>

<blockquote>

<p>   A process for [...]  providing a general purpose operating system as
   one of the non-real time tasks; preempting the general purpose
   operating system as needed for the real time tasks; and preventing the
   general purpose operating system from blocking preemption of the
   non-real time tasks.</p>

</blockquote>

<p>Nothing of this is in adeos. And nothing of this will be in the
adeosized RTAI.</p>

</quote>

<p>At one point, Daniel Phillips gave a link to <a
href="http://patft.uspto.gov/netacgi/nph-Parser?Sect1=PTO1&amp;Sect2=HITOFF&amp;d=PALL&amp;p=1&amp;u=/netahtml/srchnum.htm&amp;r=1&amp;f=G&amp;l=50&amp;s1=%275,995,745%27.WKU.&amp;OS=PN/5,995,745&amp;RS=PN/5,995,745">all
the RTLinux patent claims</a>.</p>

</section>

<section
  title="Status Of kbuild 2.5 Integration"
  subject="If you want kbuild 2.5, tell Linus"
  archive="http://www.uwsg.indiana.edu/hypermail/linux/kernel/0206.0/0371.html"
  posts="32"
  startdate="03 Jun 2002 05:58:51 -0800"
  enddate="10 Jun 2002 13:43:13 -0800"
>
<topic>Development Philosophy</topic>
<topic>Kernel Build System</topic>
<topic>Sound: ALSA</topic>

<mention>Jesse Pollard</mention>
<mention>Linus Torvalds</mention>

<p>In frustration at being ignored by Linus Torvalds, Keith Owens posted a
request for folks to pester Linus about getting kbuild into the mainstream
sources. He remarked, <quote who="Keith Owens">It is a sad day when a fully
tested and documented system that is faster and, above all, more accurate,
cannot get into the kernel.  Linus is judging kbuild 2.5 on its popularity
and on personalities, not on its technical merits.</quote> Nicolas Pitre
replied, <quote who="Nicolas Pitre">Linus became interested in kbuild-2.5
when someone else than you decided to feed him with small patches, exactly
what I told you a while ago and what you called a "stupid comment".</quote>
A couple posts later, he added, <quote who="Nicolas Pitre">Keith is certainly
doing excellent work, no doubt.  Unfortunately he just showed how inapt he
is to deal with Linus.</quote></p>

<p>Elsewhere, Daniel Phillips gave a pointer to <a
href="http://marc.theaimsgroup.com/?l=linux-kernel&amp;m=102304528224527&amp;w=2">a
post from Linus</a> several weeks before, asking Kai Germaschewski to handle
the kbuild integration. A few posts down the road in the current thread,
Kai also added, <quote who="Kai Germaschewski">I'm currently on it! Please
don't cry out so badly.</quote> But elsewhere, Kai Henningsen said:</p>

<quote who="Kai Henningsen">

<p>I fail to see how this is supposed to work, and I guess so does Keith.</p>

<p>Kai (a different Kai!) does not seem to want to integrate the core part
of kbuild2.5. He seems to want to only pick the low-hanging fruits and make
unsupported (and unbelievable) noises about the rest.</p>

<p>And Linus seems to want to ignore the fact that the core portion
of kbuild2.5 is, by its very nature, not something that can be merged
"gradually" - just like ALSA, or a new architecture, can't meaningfully
be merged "gradually". (And he *also* said that he wasn't interested in
pseudo-gradually, i.e. getting the stuff in parts but still making a big
exchange.)</p>

<p>Frankly, I see *absolutely no way* how the current Kai-Linus "merge"
can possibly end with something even remotely like Keith's kbuild2.5. Unless
Linus changes his approach radically.</p>

<p>If I were Keith, I'd be rather upset, too.</p>

</quote>

<p>But Kai G. replied, <quote who="Kai Germaschewski">Anyway, he shouldn't
be. There are lots of people appreciating his work, and many of us are
very grateful for it. So am I. It's going to be a long way, but finally
kbuild-2.4 can't stand while kbuild-2.5 (hopefully) goes on. So we'll get it
in by some time in the future.</quote> But Daniel said, <quote who="Daniel
Phillips">There's certainly been time enough for action, and I don't see any.
I'd say Kai</quote> [Germaschewski] <quote who="Daniel Phillips">is stalling
and not being cooperative at all.</quote></p>

<p>Jesse Pollard offered a proposal for how to merge kbuild effectively,
but Tomas Szepe complained, <quote who="Tomas Szepe">Please note that there
have already been innumerable proposals of how to merge kbuild 2.5, and
all of them have been silently rejected.</quote> And Bill Davidsen replied,
<quote who="Bill Davidsen">As I see the problem, the proposal has been either
rejected or postponed, and some people refuse to accept that. I would love to
see the best of O1 and preempt in 2.4, too, but I'm not going to ask anyone
to write Linus, or Marcel, or Sen. Hollings and tell them my idea is a good
idea. As long as patches are available and I'm able to apply them, I will
grumble under my breath and move on. That's my vote for a solution to the kb25
merge problem, accept that a decision has been made and move on.</quote></p>

</section>

<section
  title="Scheduler Hints"
  subject="[PATCH] scheduler hints"
  archive="http://www.uwsg.indiana.edu/hypermail/linux/kernel/0206.0/0693.html"
  posts="17"
  startdate="04 Jun 2002 07:53:54 -0800"
  enddate="12 Jun 2002 11:39:40 -0800"
>
<topic>Big O Notation</topic>
<topic>Real-Time</topic>
<topic>SMP</topic>
<topic>Scheduler</topic>

<p>Robert Love implemented scheduler 'hints' on top of the O(1) scheduler. He
explained, <quote who="Robert Love">scheduler hints are a way for a program
to give a "hint" to the scheduler about its present behavior in the hopes
of the scheduler subsequently making better scheduling decisions.</quote>
For example, he said, <quote who="Robert Love">consider a group of SCHED_RR
threads that share a semaphore.  Before one of the threads were to acquire
the semaphore, it could give a "hint" to the scheduler to increase its
remaining timeslice in order to ensure it could complete its work and drop
the semaphore before being preempted.  Since, if it were preempted, it would
just end up being rescheduled as the other real-time threads would eventually
block on the held semaphore.</quote> Rick Bressler replied:</p>

<quote who="Rick Bressler">

<p>Sequent had an interesting hint they cooked up with Oracle. (Or maybe it
was the other way around.)  As I recall they called it 'twotask.'  Essentially
Oracle clients processes spend a lot of time exchanging information with its
server process. It usually makes sense to bind them to the same CPU in an
SMP (and especially NUMA) machine.  (Probably obvious to most of the folks
on the group, but it is generally lots better to essentially communicate
through the cache and local memory than across the NUMA bus.)</p>

<p>As I recall it made a significant difference in Oracle performance,
and would probably also translate to similar performance in many situations
where you had a client and server process doing lots of interaction in an
SMP environment.</p>

</quote>

<p>But Robert said this wasn't necessary because Linux 2.5 implemented a command
to bind a process to a specific CPU already.</p>

<p>Elsewhere, Simon Trimmer mentioned:</p>

<quote who="Simon Trimmer">

<p>This isn't my thing but my flatmate had left a copy of solaris internals
on the table ;)</p>

<p>This is briefly mentioned around about page 384 and appears to be
targetted at userspace processes for exactly the cases you're suggesting
(holding global resources).</p>

<p>A good entry point into the sun online
documentation for this stuff is schedctl_init() - <a
href="http://docs.sun.com/db?q=schedctl_init&amp;p=/doc/816-0216/6m6ngupm0&amp;a=view">http://docs.sun.com/db?q=schedctl_init&amp;p=/doc/816-0216/6m6ngupm0&amp;a=view</a></p>

</quote>

<p>Robert said he'd <i>thought</i> Solaris Internals would have it in there,
but hadn't had his copy around to confirm. But he also said regarding the
online doc:</p>

<quote who="Robert Love">

<p>Hm, what they export is a bit different.  I wonder what the internal
kernel interface is like (i.e. how close to sched_hint it is)?</p>

<p>Since they have a start_hint and stop_hint, that is where they are able
to enforce their fairness.  When you call stop, I suspect they penalize
your timeslice by some amount similar to the duration from start to stop.
If you don't call stop before you reschedule, then you probably forfeit a
large chunk of your timeslice.</p>

<p>This would be doable with our scheduler - and perhaps even with minimal
impact (which is my goal).  However, since I wrote this more as an exercise
in fun than something to merge, I do not know if it is worth it to make a
whole infrastructure around this.  Those who really see benefit (scientific
computing or real-time or whatever) could just grab the patch, remove the
permission check, and code their applications to fit -- they trust their
application base.</p>

<p>Anyhow, to pique interest, here are some benchmark numbers.  I have 5
pthreads contesting over a single semaphore.  They loop, doing some busy
looping, down the semaphore, busy loop, and then up the semaphore.  Thus they
use a lot of their timeslice and spend the rest of the time blocking on
the semaphore.  I let them loop a fixed number of times before exiting.</p>

<p>(These are average of ~10 runs)</p>

<p>With a call to sched_hint(HINT_TIME) after successfully downing the
semaphore the avg total duration is 7233459 us.  Without the sched_hint,
the avg total duration is 7683220 us.</p>

<p>That is an improvement of 6% - with only 5 threads.</p>

<p>A quick glance shows a reduction in context switches, but what really
matters is if we are entering schedule and neither (a) rescheduling the same
task, or (b) running another thread that quickly blocks on the semaphore.</p>

<p>It is all academic anyhow...</p>

</quote>

</section>

<section
  title="Laptop Battery Conservation"
  subject="[rfc] &quot;laptop mode&quot;"
  archive="http://www.uwsg.indiana.edu/hypermail/linux/kernel/0206.0/0857.html"
  posts="31"
  startdate="04 Jun 2002 14:54:50 -0800"
  enddate="06 Jun 2002 10:40:19 -0800"
>
<topic>Disks: IDE</topic>
<topic>FS: sysfs</topic>
<topic>Laptop Support</topic>
<topic>Virtual Memory</topic>

<p>Andrew Morton announced:</p>

<quote who="Andrew Morton">

<p>Here's a patch which is designed to make the kernel play more nicely with
portable computers.  I've been using it for a couple of days and it seems to do
the right thing.  I'm wondering if anyone has any comments/suggestions/etc.</p>

<p>To test this code you'll also need <a
href="http://www.zip.com.au/~akpm/linux/patches/2.4.20/pdflush-sysctl.patch">http://www.zip.com.au/~akpm/linux/patches/2.4.20/pdflush-sysctl.patch</a>
(hmm.  Server seems to be dead.  So the patches are here, as attachments)</p>

<p>Here's the algorithm, from the Documentation/filesystems/proc.txt section
describing /proc/sys/vm/:</p>

<p>laptop_mode<br />
-----------</p>

<p>Setting this entry to '1' will put the kernel's dirty data writeout
algorithms into a mode which is better suited to laptop/notebook computers.
This mode is specifically designed to minimise the frequency of disk spinups.
Laptop mode works as follows:</p>

<p>- Dirty data remains in memory for longer periods of time (controlled
  by laptop_writeback_centisecs).</p>

<p>- If there is pending dirty data and the disk is spun up for any
  reason (even for a read) then all dirty data will be written back shortly
  afterwards.  ie: when the disk is spun up, make good use of it.</p>

<p>- When the decision is made to write back some dirty data, the kernel
  will write back all dirty data.</p>

<p>laptop_writeback_centisecs<br />
--------------------------</p>

<p>This tunable determines the maximum age of dirty data when the machine
is operating in Laptop mode.  The default value is 30000 - five minutes.
This means that if applications are generating a small amount of write traffic,
the disk will spin up once per five minutes.</p>

<p>If the disk is spun up for any other reason (such as for a read) then
all dirty data will be flushed anyway, and this timer is reset to zero.</p>

<p>laptop_writeback_centisecs has no effect when the machine is not operating
in Laptop mode.</p>

<p>This implementation doesn't try to be very smart - there's a direct call
out of do_ide_request() into the writeback code.  This couldn't be done
from within ll_rw_blk.c because then a write to the ramdisk would spin the
disk up.   Even as-is, a read from the IDE CDROM drive will cause the IDE hard
disk to spin up and flush data, so probably that call in do_ide_request()
should only be made if the device is writable.   Suggestions are sought,
but let's try not to get too fancy here...</p>

</quote>

<p>There was general praise for the idea, and some technical
discussion. Andreas Dilger made a small point regarding the five-minute
spin-up time for hard disks.  He said, <quote who="Andreas Dilger">FYI,
this is probably an optimally bad choice for the default disk spinup
interval, as many laptops spindown timers in the same ballpark.  I would
say 15-20 minutes or more, unless there is a huge amount of VM pressure or
something.  Otherwise, you will quickly have a dead laptop harddrive from
the overly-frequent spinup/down cycles.</quote> Andrew replied:</p>

<quote who="Andrew Morton">

<p>Twenty it is, thanks.</p>

<p>BTW, the "use a gigabyte of readahead" idea would cause VM hysteria if
you access a 600 megabyte file, so I've wound that back to twenty megs.</p>

<p>Also, it has been suggested that the feature become more fully-fleshed, to
support desktops with one disk spun down, etc.  It's not really rocket science
to do that - the `struct backing_dev_info' gives a specific communication
channel between the high-level VFS code and the request queue.  But that
would require significantly more surgery against the writeback code, so I'm
fishing for requirements here.  If the current (simple) patch is sufficient
then, well, it is sufficient.</p>

</quote>

<p>There were various feature requests and some implementation discussions.</p>

</section>

<section
  title="Kernel Versioning"
  subject="Question Regarding &quot;EXTRAVERSION&quot; Specification"
  archive="http://www.uwsg.indiana.edu/hypermail/linux/kernel/0206.0/1198.html"
  posts="6"
  startdate="05 Jun 2002 23:09:29 -0800"
  enddate="06 Jun 2002 09:12:20 -0800"
>
<topic>Kernel Build System</topic>
<topic>Source Tree</topic>

<mention>Marcelo Tosatti</mention>

<p>John L. Males asked:</p>

<quote who="John L. Males">

<p>I have had a recent experience in using the "EXTRAVERSION" in the Linux
2.2.x Kernel series.  The context of my question applies to both the 2.2.x
and 2.4.x Linux Kernels.</p>

<p>The questions are:</p>

<p>

<ol>

<li>Is there a specification that states the maximum length that the
"EXTRAVERSION" string may be?</li>

<li>Does the Kernel make/build process enforce any specified limit of
(1) above?</li>

</ol>

</p>

</quote>

<p>To question 1, Keith Owens replied, <quote who="Keith Owens">The total
length $(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION) must not exceed
64 characters.  Break that limit and you get garbage in uname -r.</quote>
While to question 2, he said, <quote who="Keith Owens">kbuild 2.5 enforces
the limit, the existing kernel build code does not.  I sent a patch to Linus
four times back in the 2.4.15 days, he completely ignored it.  Linus does not
care about kernel build problems.</quote> He added that he'd dig up the patch
and send it to Marcelo Tosatti for inclusion in 2.4, and Alan Cox replied,
<quote who="Alan Cox">Please CC me a copy and I'll merge it into -ac in case
Marcelo loses it or doesnt want it before 2.4.19 final.</quote> John asked
if there were any chance the patch would make it back into the 2.2 world,
but there was no reply.</p>

</section>

<section
  title="New EVMS Version Released"
  subject="[ANNOUNCE] EVMS Release 1.1.0-pre1"
  archive="http://www.uwsg.indiana.edu/hypermail/linux/kernel/0206.0/1513.html"
  posts="3"
  startdate="07 Jun 2002 13:11:23 -0800"
  enddate="08 Jun 2002 09:14:09 -0800"
>
<topic>Disk Arrays: EVMS</topic>
<topic>Disk Arrays: RAID</topic>
<topic>FS: JFS</topic>
<topic>FS: ReiserFS</topic>
<topic>FS: ext2</topic>
<topic>FS: ext3</topic>

<p>Kevin Corry announced:</p>

<quote who="Kevin Corry">

<p>The EVMS team is announcing the next development release of the Enterprise
Volume Management System, which will eventually become EVMS 2.0. Package
1.1.0-pre1 is now available for download at the project web site: <a
href="http://www.sf.net/projects/evms">http://www.sf.net/projects/evms</a></p>

<p>As this package is just a pre-releaes, only the source tarball is available
for download. RPM files will be available when 1.1.0 is released.</p>

<p>Also, please use the appropriate level of caution when using this version!
There are several very new features which have not yet undergone extensive
testing! In other words, you probably shouldn't run this version on any
critical systems.</p>

<p>Please report any problems or bugs to the EVMS mailing list:
evms-devel@lists.sf.net.</p>

<p>Highlights for version 1.1.0-pre1 include:</p>

<p>v1.1.0-pre1 - 6/7/02</p>

<p>

<ul>

<li>Engine Core
<ul>
  <li>Volume converting
    <ul>
    <li>Automatically changing a compatibility volume to an EVMS volume, and
      converting an EVMS volume to compatibility.</li>
    </ul>
  </li>
  <li>Add-A-Feature
    <ul>
    <li>Adding a new feature to an existing EVMS volume.</li>
    </ul>
  </li>
  <li>Plug-in-specific tasks
    <ul>
    <li>Currently used by RAID-1, RAID-5, and Snapshotting for certain actions.</li>
    </ul>
  </li>
  <li>Progress Indicators
    <ul>
    <li>Plug-ins can use this to indicate progress of long-running operations.</li>
    </ul>
  </li>
</ul>
</li>
<li>GUI
  <ul>
  <li>Support for plug-in-specific tasks.</li>
  <li>Support for converting compatibility volumes to EVMS volumes.</li>
  <li>Support for adding a new feature to an existing EVMS volume.</li>
  <li>Support for progress indicators (used by plug-ins).</li>
  </ul>
</li>
<li>Command Line
  <ul>
  <li>Improved query system with new filters.</li>
  <li>Support for converting compatibility volumes to EVMS volumes.</li>
  <li>Support for adding a new feature to an existing EVMS volume.</li>
  </ul>
</li>
<li>Filesystem Interface Modules (FSIMs)
  <ul>
  <li>Four new FSIM plug-ins
    <ul>
    <li>Ext2/Ext3</li>
    <li>JFS</li>
    <li>ReiserFS</li>
    <li>Swap</li>
    </ul>
  </li>
  </ul>
</li>
<li>Snapshotting
  <ul>
  <li>Rollback - can revert all changes saved to the snapshot back to the
    original volume.</li>
  <li>Asynchronous - choice of using asynchronous Copy-On-Writes for better
    performance, or synchronous COWs for better reliability.</li>
  </ul>
</li>
<li>Software RAID
  <ul>
  <li>Improved method for handling incomplete RAID objects.</li>
  <li>Improved I/O path.</li>
  </ul>
</li>
<li>S/390 Segment Manager
  <ul>
  <li>Added multi-path I/O support in kernel.</li>
  <li>Improved engine support.</li>
  </ul>
</li>
<li>GPT Segment Manager
  <ul>
  <li>New segment manager for IA-64, GUID-Partition-Table partitions.</li>
  </ul>
</li>

</ul>

</p>

</quote>

<p>Svetoslav Slavtchev asked, <quote who="Svetoslav Slavtchev">is there any
chance to run it with a 2.5 kernel?  tha latest cvs is synced with 2.5.11
and latest 2.5 is 2.5.20 [ 2.5.20-dj3]</quote> Someone replied to him privately,
saying that EVMS would likely be resynced with the latest 2.5 kernel in a week
or so, and Svetoslav thanked them for the info.</p>

</section>

</kc>

