<?xml version="1.0" ?>

<kc>

<title>Kernel Traffic</title>

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

<issue num="82" date="28 Aug 2000 00:00:00 -0800" />

<intro>

This is the first week of linux-kernel's new existence on kernel.org; it
seemed like a good cut-off point, so last week covered all the remaining
posts from rutgers, while this week covers only the redhat.com/kernel.org
posts.

</intro>

<stats posts="358" size="1382" contrib="167" multiples="51" lastweek="72">

<person posts="21" size="76" who="&quot;David S. Miller&quot; " />
<person posts="12" size="40" who="Alan Cox " />
<person posts="12" size="39" who="Julien Oster " />
<person posts="11" size="44" who="David Ford " />
<person posts="11" size="37" who="&quot;Mike A. Harris&quot; " />
<person posts="11" size="34" who="Mo McKinlay " />
<person posts="9" size="36" who="James Sutherland " />
<person posts="9" size="32" who="Michael Peddemors " />
<person posts="9" size="30" who="Arnaldo Carvalho de Melo " />
<person posts="7" size="21" who="Willy Tarreau " />
<person posts="7" size="20" who="Rik van Riel " />
<person posts="7" size="19" who="Matti Aarnio " />
<person posts="6" size="25" who="Clayton Weaver " />
<person posts="6" size="25" who="&quot;Albert D. Cahalan&quot; " />
<person posts="6" size="19" who="Keith Owens " />
<person posts="5" size="19" who="Daniel Phillips " />
<person posts="5" size="18" who="Jesse Pollard " />
<person posts="4" size="31" who="Adam " />
<person posts="4" size="17" who="&quot;Andi Kleen&quot; " />
<person posts="4" size="16" who="Mark Kettenis " />
<person posts="4" size="12" who="Jonathan Edwards " />
<person posts="4" size="12" who="Tigran Aivazian " />
<person posts="4" size="12" who="Kenneth Johansson " />
<person posts="3" size="18" who="Cesar Eduardo Barros " />
<person posts="3" size="15" who="Derek Wildstar " />
<person posts="3" size="12" who="Matthew Dharm " />
<person posts="3" size="9" who="Mike Galbraith " />
<person posts="3" size="9" who="Andrew Morton " />
<person posts="3" size="9" who="Mircea Damian " />
<person posts="3" size="8" who="" />
<person posts="3" size="7" who="Michael Rothwell " />
<person posts="2" size="79" who="Neil Brown " />
<person posts="2" size="20" who="Dennis K " />
<person posts="2" size="16" who="Jens Petersohn " />
<person posts="2" size="10" who="Riley Williams " />
<person posts="2" size="7" who="Stephen Williams " />
<person posts="2" size="7" who="George Anzinger " />
<person posts="2" size="7" who="Alexander Valys " />
<person posts="2" size="6" who="David Lombard " />
<person posts="2" size="6" who="Andrea Arcangeli " />
<person posts="2" size="6" who="&quot;Jon Morby&quot; " />
<person posts="2" size="6" who="Ralf Baechle " />
<person posts="2" size="5" who="Mads Martin Joergensen " />
<person posts="2" size="5" who="Jon Masters " />
<person posts="2" size="5" who="&quot;Johan Kullstam&quot; " />
<person posts="2" size="5" who="Stephen Rothwell " />
<person posts="2" size="5" who="Matthias Andree " />
<person posts="2" size="5" who="=?ISO-8859-1?Q?Pasi_K=E4rkk=E4inen?= " />
<person posts="2" size="4" who="Byron Stanoszek " />
<person posts="2" size="4" who="Mike Tibor " />
<person posts="2" size="4" who="Clemmitt Sigler " />
<person posts="1" size="26" who="FORT David " />
<person posts="1" size="12" who="Serguei Miridonov " />
<person posts="1" size="7" who="Yuri Pudgorodsky " />
<person posts="1" size="7" who="Nicolas Pitre " />
<person posts="1" size="7" who="Brian Bock &lt;&gt;" />
<person posts="1" size="6" who="Paul Gortmaker " />
<person posts="1" size="6" who="Eric Youngblut " />
<person posts="1" size="6" who="Joseph Carter " />
<person posts="1" size="6" who="Dmitry Brodsky " />
<person posts="1" size="5" who="Alistair Riddell " />
<person posts="1" size="5" who="Anne Milicia " />
<person posts="1" size="5" who="Michael Westermann " />
<person posts="1" size="5" who="Marcus Sundberg " />
<person posts="1" size="4" who="Douglas Gilbert " />
<person posts="1" size="4" who="&quot;Grover, Andrew&quot; " />
<person posts="1" size="4" who="Pete Clements " />
<person posts="1" size="4" who="=?ISO-8859-1?Q?G=E9rard_Roudier?= " />
<person posts="1" size="4" who="Mark Hemment " />
<person posts="1" size="4" who="Wakko Warner " />
<person posts="1" size="4" who="Adam Radford " />
<person posts="1" size="4" who="Bryan Mayland " />
<person posts="1" size="4" who="Decklin Foster " />
<person posts="1" size="4" who="Ben McCann " />
<person posts="1" size="4" who="Marc SCHAEFER " />
<person posts="1" size="4" who="Paul Mackerras " />
<person posts="1" size="4" who="" />
<person posts="1" size="4" who="&quot;H. Peter Anvin&quot; " />
<person posts="1" size="3" who="Jamie Lokier " />
<person posts="1" size="3" who="Erik Andersen " />
<person posts="1" size="3" who="&quot;jeff millar&quot; " />
<person posts="1" size="3" who="Greg KH " />
<person posts="1" size="3" who="&quot;Gregory T. Norris&quot; " />
<person posts="1" size="3" who=" (Ulf Jaenicke-Roessler)" />
<person posts="1" size="3" who="Karim Yaghmour " />
<person posts="1" size="3" who="Gerhard Mack " />
<person posts="1" size="3" who=" (Rogier Wolff)" />
<person posts="1" size="3" who="Chris Kloiber " />
<person posts="1" size="3" who="Drew Bertola " />
<person posts="1" size="3" who="Brendan Cully " />
<person posts="1" size="3" who="Marcelo Tosatti " />
<person posts="1" size="3" who="Toon van der Pas " />
<person posts="1" size="3" who="Jakub Jelinek " />
<person posts="1" size="3" who="David Benfell " />
<person posts="1" size="3" who="Russell King " />
<person posts="1" size="3" who="&quot;Dylan A. Loomis&quot; " />
<person posts="1" size="3" who="Dave Cecil " />
<person posts="1" size="3" who="ken moffat " />
<person posts="1" size="3" who="&quot;Alon Ziv&quot; " />
<person posts="1" size="3" who="" />
<person posts="1" size="3" who="Ivan Kokshaysky " />
<person posts="1" size="3" who="Pierre Brua " />
<person posts="1" size="3" who="Simon Richter " />
<person posts="1" size="3" who="Thomas Zehetbauer " />
<person posts="1" size="3" who="Matthew Wilcox " />
<person posts="1" size="3" who="Matthew Kirkwood " />
<person posts="1" size="3" who="Ryan Butler " />
<person posts="1" size="3" who="&quot;Leite, Zailo&quot; " />
<person posts="1" size="3" who="Nils Ohlmeier " />
<person posts="1" size="3" who="" />
<person posts="1" size="3" who="Martin MaD Douda " />
<person posts="1" size="3" who="Erik Mouw " />
<person posts="1" size="3" who="" />
<person posts="1" size="3" who="Dennis Bjorklund " />
<person posts="1" size="2" who="Juri Haberland " />
<person posts="1" size="2" who="&quot;Jowei Lee&quot; " />
<person posts="1" size="2" who="Karsten Hopp " />
<person posts="1" size="2" who="Ingo Molnar " />
<person posts="1" size="2" who="Artur Frysiak " />
<person posts="1" size="2" who="Thomas Graichen " />
<person posts="1" size="2" who="Alex Buell " />
<person posts="1" size="2" who="Andika Triwidada " />
<person posts="1" size="2" who="Florian Lohoff " />
<person posts="1" size="2" who="Andries Brouwer " />
<person posts="1" size="2" who="Andreas Jaeger " />
<person posts="1" size="2" who="" />
<person posts="1" size="2" who="khromy " />
<person posts="1" size="2" who="Norbert Tretkowski " />
<person posts="1" size="2" who="" />
<person posts="1" size="2" who="Eli Carter " />
<person posts="1" size="2" who="Robert Schweikert " />
<person posts="1" size="2" who="Sven Koch " />
<person posts="1" size="2" who="" />
<person posts="1" size="2" who="Mitchell Blank Jr " />
<person posts="1" size="2" who="Hideto Takahashi " />
<person posts="1" size="2" who="Lawrence Walton " />
<person posts="1" size="2" who="" />
<person posts="1" size="2" who="Keitaro Yosimura " />
<person posts="1" size="2" who="Richard Henderson " />
<person posts="1" size="2" who="Trond Myklebust " />
<person posts="1" size="2" who="=?iso-8859-1?Q?Jo=E3o_Miguel_Neves?= " />
<person posts="1" size="2" who="Timothy Ball " />
<person posts="1" size="2" who="Igmar Palsenberg " />
<person posts="1" size="2" who="Jeff Garzik " />
<person posts="1" size="2" who="dean gaudet " />
<person posts="1" size="2" who="Anton Petrusevich " />
<person posts="1" size="2" who="Rob Shugg " />
<person posts="1" size="2" who="Urban Widmark " />
<person posts="1" size="2" who="Andreas Tobler " />
<person posts="1" size="2" who="Markus Pfeiffer " />
<person posts="1" size="2" who="Andrew McNabb " />
<person posts="1" size="2" who="Chuck Mead " />
<person posts="1" size="2" who="Michael Shields " />
<person posts="1" size="2" who="Hartmut Prochaska " />
<person posts="1" size="2" who="Michael Meding " />
<person posts="1" size="2" who="Petko Manolov " />
<person posts="1" size="2" who="Ricky Beam " />
<person posts="1" size="2" who="Darren Nickerson " />
<person posts="1" size="2" who="Giampaolo Gallo " />
<person posts="1" size="2" who="Stephen Frost " />
<person posts="1" size="2" who="Jeffrey Hundstad " />
<person posts="1" size="2" who="Oliver Neukum " />
<person posts="1" size="2" who="Giuliano Pochini " />
<person posts="1" size="1" who="Manik Raina " />
<person posts="1" size="1" who="" />
<person posts="1" size="1" who="" />

</stats>

<section
  title="linux-kernel Moves To kernel.org"
  subject="test test"
  archive="http://www.lib.uaa.alaska.edu/linux-kernel/archive/2000-Week-33/0305.html"
  posts="71"
  startdate="18 Aug 2000 00:00:00 -0800"
  enddate="21 Aug 2000 00:00:00 -0800"
>
<topic>Disk Arrays: RAID</topic>
<topic>Disks: SCSI</topic>

<mention>Stephen Frost</mention>
<mention>Thomas Graichen</mention>
<mention>Andreas Jaeger</mention>
<mention>Mircea Damian</mention>
<mention>Mike A. Harris</mention>

<p>

Last week, the machine at Rutgers university that ran the linux-kernel
mailing list and a ton of other Linux-related lists, just up and died.
Apparently the hard disk crashed, and David S. Miller decided to move all
the lists over to machines at Red Hat. linux-kernel was the first list to
come back online, after several days of silence. Instead of just moving the
subscription list over to the new machine, David sent a message to all
former subscribers:

</p>

<quote who="David S. Miller">

<p>

The old vger ate it's primary disk the other evening, and I was scheduled to
move the lists to the new site soon anyways.

</p><p>

So everyone can now get their 200 email a day linux-kernel fix once more,
just join up using majordomo at vger.redhat.com No digests, no archiving,
just the plain lists. I'll turn on the features later when I get more time
on my hands.

</p><p>

I'll send out notifications similar to this as I move other lists over to
the new machine.

</p><p>

Thanks for your patience/understanding.

</p>

</quote>

<p>

Several days later, another email came from David to all subscribers of
other Linux lists:

</p>

<quote who="David S. Miller">

<p>

The old lists run at vger.rutgers.edu have been moved to vger.kernel.org due
to an irrecoverable hard-disk failure of the old machine, the lists were
planned to be moved anyways.

</p><p>

If you are receiving this email, it means you were subscribed to one of the
vger Linux mailing lists as of the crash of the old system last week.

</p><p>

You are not subscribed to the new lists at vger.kernel.org, you will have to
manually re-subscribe yourself.

</p><p>

The new site uses the same mailing list software, Majordomo.  So the
subscription mechanism is the same as on the old system.

</p><p>

Thanks for your patience and understanding.

</p>

</quote>

<p>

On the new list, David posted a test message to the new list, and several
people confirmed receiving it. Jon Morby reported:

</p>

<quote who="Jon Morby">

<p>

The return-path on these mails has changed ...

</p><p>

it's now majordomo@vger.redhat.com which is going to make filtering a bit
difficult.

</p><p>

Used to be linux-kernel-outgoing@vger.*

</p>

</quote>

<p>

Andreas Jaeger suggested filtering on the "Fake-Sender" header, but Alan Cox
replied, <quote who="Alan Cox">Actually the bigger problem is that if you
dont fix the sender line then Majordomo will get into mail bounce fights
with mailers and it gets very very ugly very fast.</quote>

</p><p>

Meanwhile, David pushed several posts onto the list that hadn't made it out
before the crash; but no discussion sprang up from them. Several other folks
posted queries to the list, pinging to see who else was around. David did
some work on the "Fake-Sender" problem and posted some more tests under the
Subject: <a
href="http://www.lib.uaa.alaska.edu/linux-kernel/archive/2000-Week-33/0305.html">test
test</a>. Stephen Frost acknowledged receipt, and asked if mail sent to
rutgers would make it onto the new list. David said it would not, and
Jeffrey Hundstad asked about the specs of the new machine. Several other
folks also asked for details (root password, etc), but David had no reply at
that time.

</p><p>

Karsten Hopp requested, <quote who="Karsten Hopp">Could you please add a
Follow-up header? Just replying to mails won't send them to the list but to
the original poster right now.</quote> But Mads Martin replied, <quote
who="Mads Martin">that is the way it should be - it is up to the sender to
make the replies go to the list.</quote> Matthew Dharm replied:

</p>

<quote who="Matthew Dharm">

<p>

This is the classic argument against reply-to, and I agree with it.

</p><p>

However, for those of us who use certain mailers, the Follow-up header is
used for a 'list-reply' function, so that replies are CC'ed to the list. And
it won't affect more brain-dead mailers (which will ignore the line).

</p><p>

In short, Follow-up still leaves it up to the sender, it just makes it
easier on our fingers.

</p>

</quote>

<p>

There was no reply to that, but elsewhere Jon Masters reported, <quote
who="Jon Masters">OK so the headers got changed about three times today.
You're going to have to excuse this surplus post but I now have no idea what
headers you are planning to use. I currently have about 6 procmail rules to
pick up LKML and filter, but no doubt someone will now find a way to change
the headers again to break my filtering...</quote> David replied, <quote
who="David S. Miller">can I politely ask people to take a really deep
breath, understand that the next day or two more will be a bit rocky, and
believe me when I say that the world isn't going to end becuase your
linux-kernel procmail rules periodically break for a few days? :-)</quote>

</p><p>

Elsewhere under the Subject: <a
href="http://www.lib.uaa.alaska.edu/linux-kernel/archive/2000-Week-33/0306.html">Header
to filter on?</a> Mike A. Harris also reported troubles filtering the list
mail, which was filling his inbox at an alarming rate. A lot of folks
replied with their own troubles getting procmail recipes that would work. At
one point Matti Aarnio (another of the list's administrators) said:

</p>

<quote who="Matti Aarnio">

<p>

I have sad news that aftershocks of vger.RUTGERS.EDU  disk death are not
over yet. We are tuning things, and some further changes are in the
pipeline.

</p><p>

We will change VGER's domain - likely to  vger.kernel.org,  but when it
becomes operational depends on when all necessary people have been poked to
do the changes, and DNS propagates new data.. (Intention is that at least
vger.redhat.com will be acceptable inbound address for a while. Perhaps we
get to point the Rutgers domain there too.)

</p><p>

Stay tuned.

</p>

</quote>

<p>

He also gave the specs of the new machine, a Pentium-II 450 MHz with 512 MB
RAM, and 2x8GB SCSI disks with RAID-1 setup. He added, <quote who="Matti
Aarnio">Roughly 20-50 times the power of the old SparcStation-50 at
Rutgers.</quote>

</p><p>

Elsewhere, under the Subject: <a
href="http://www.lib.uaa.alaska.edu/linux-kernel/archive/2000-Week-33/0349.html">[README]
linux-kernel has moved (fwd)</a> there some laughs to be had. A Polish
friend of Mike A. Harris pointed out to him privately that the temporary
email address David had used to send information to all the old subscribers,
linux-kernel-tmp@pizda.ninka.net, had some interesting Polish words in it.
Matti explained:

</p>

<quote who="Matti Aarnio">

<p>

Yes, DaveM has sometimes weird sense of humor.. His home machines are named
with Polish swear words, which at least pays no heed to any sort of
Political Correctness :)

</p><p>

DaveM's wife is Polish, which may give you some clue on how he knows such
words.

</p>

</quote>

<p>

Tigran Aivazian replied, <quote who="Tigran Aivazian">it's not polish but
russian - everytime I see email from DaveM I wonder if he knows what his
hostname actually means, but never ask. :)</quote> David replied that the
words actually were the same in Polish and Russian; and Mircea Damian added
Romanian to that list. Andries Brouwer came in with, <quote who="Andries
Brouwer">One sees the same in the baltoslavic languages (perhaps borrowed),
and related words in Albanian. Not quite sure of the etymology - due to the
taboo nature there is great variation in forms and also the semantics varies
in time. (For example, Polabian had paizda "ass".)</quote>

</p><p>

Elsewhere, under the Subject: <a
href="http://www.lib.uaa.alaska.edu/linux-kernel/archive/2000-Week-33/0355.html">[OT]
vger bandwidth statistics question?</a> Mike asked how many folks had been
subscribed to the list on the old machine, so he could estimate how much
email had actually been pushed out on a daily basis. David replied:

</p>

<quote who="David S. Miller">

<p>

linux-kernel, linux-kernel-digest, and about 4 or 5 other high-subscription
lists (linux-newbie, linux-net, linux-smp, and I forget which others), would
hover between the 3,200 and 7,000 subscriber mark.

</p><p>

At death, the old vger had:

</p><p>

$ wc -l linux-kernel linux-kernel-digest<br />
   3548 linux-kernel<br />
   1528 linux-kernel-digest<br />
   5076 total

</p><p>

The highest number of subscribers I ever saw for linux-kernel was 8,300

</p>

</quote>

<p>

Upon hearing this, Mike flew backwards across the room, hitting the rear
wall. Fortunately he was uninjured, and lay briefly lost in speculation of
the sheer quantity of outgoing data this entailed.

</p><p>

Elsewhere under the Subject: <a
href="http://www.lib.uaa.alaska.edu/linux-kernel/archive/2000-Week-33/0612.html">other
lists@vger</a>, Thomas Graichen asked when the other lists would migrate
over to the new box, and David replied on August 21, <quote who="David S.
Miller">They should be up by the end of tomorrow evening (PST timezone). I
wanted to defer that work until linux-kernel's final config final settled
down (so I wouldn't have to make the same damn change for every single list,
multiple times :-).</quote>

</p><p>

Finis!

</p>

</section>

<section
  title="&quot;Linux Kernel Internals&quot; For 2.4"
  subject="LKI - linux kernel internals."
  archive=""
  posts="1"
  startdate="18 Aug 2000 00:00:00 -0800"
  enddate="18 Aug 2000 00:00:00 -0800"
>

<mention>Tigran Aivazian</mention>

<p>

Tigran Aivazian announced a very interesting document he'd written, on Linux
2.4 kernel internals, for some lectures he'd given. He posted a link to the
<a href="http://www.moses.uklinux.net/patches/lki.sgml">SGML source</a>, but
it's also available as <a
href="http://www.moses.uklinux.net/patches/lki.html">HTML</a>. There was no
reply.

</p>

</section>

<section
  title="Nearing 2.2.17"
  subject="Linux 2.2.17pre19"
  archive="http://www.lib.uaa.alaska.edu/linux-kernel/archive/2000-Week-33/0379.html"
  posts="10"
  startdate="18 Aug 2000 00:00:00 -0800"
  enddate="20 Aug 2000 00:00:00 -0800"
>
<topic>Sound: i810</topic>

<mention>Marcelo Tosatti</mention>
<mention>Andrew Morton</mention>

<p>

Alan Cox gave the changelog for 2.2.17pre19:

</p>

<quote who="Alan Cox">

<p>

<ol>

<li>Add Marcelo Tosatti to the credits              (Marcelo Tosatti)</li>
<li>Fix a couple of kfree and follow the pointer
        bugs in the i810 audio driver                   (Bob Frey)</li>
<li>Vger is now vger.kernel.org everywhere          (Daniel Roesen)</li>
<li>Further 3c59x fixups                            (Andrew Morton)</li>
<li>Disable record on cs46xx for this release       (me)</li>

</ol>

</p>

</quote>

<p>

Norbert Tretkowski was surprised by item 3 because at that time, the list
traffic was going to linux-kernel@vger.redhat.com, and Alan replied, <quote
who="Alan Cox">vger.redhat.com is a temporary name. Various folks not
unreasonably want this list to be clearly not vendor tied.</quote>

</p><p>

There was not much discussion about the patch itself. Maybe not everyone had
resubscribed by this time...

</p>

</section>

<section
  title="Xircom PCMCIA Problems"
  subject="Xircom PCMCIA problems"
  archive="http://www.lib.uaa.alaska.edu/linux-kernel/archive/2000-Week-33/0404.html"
  posts="6"
  startdate="19 Aug 2000 00:00:00 -0800"
  enddate="21 Aug 2000 00:00:00 -0800"
>
<topic>Modems</topic>
<topic>Networking</topic>

<mention>Willy Tarreau</mention>
<mention>David Hinds</mention>

<p>

Derek Wildstar reported a problem on 2.2.16 and 2.4.0-test7-pre5, with his
Xircom 10/100 ethernet/modem Cardbus adapter. The modem worked fine, but the
ethernet had to be 'ifconfig'ed up, down, and (after a 2 second sleep) up
again before it would work. Otherwise, the connection light would go on, but
it just wouldn't see the data. He added, <quote who="Derek Wildstar">With
the interface brought up using DHCP I get the same thing....first time, the
DHCP server sees the request and assigns an address, but the machine doesn't
get it. Second time works without problems.</quote> He'd tried compiling the
driver both into the kernel and as a module, but neither method would work.
At the time he posted, he'd kludged up a workaround in the boot scripts,
that would do the up-down-up trick before the network init script was
called. Willy Tarreau and Keith Owens suggested flipping promiscuous mode on
and off periodically to fix the problem. Keith explained, <quote who="Keith
Owens">There is a timing problem when the driver sets the MAC filter for the
card. Under some circumstances that we could never track down, the MAC
filter would not get loaded into the Xircom. Without a valid MAC table, the
card does not respond to its own MAC address, only to broadcasts. We could
not find any method of querying the Xircom to see if the filter had loaded
correctly.</quote> He added that the problem came and went without any
discernable pattern, sometimes going days without breaking, then breaking
three times in one day.

</p><p>

Derek felt this was a different problem from the one he'd experienced. He
described, <quote who="Derek Wildstar">the card in this case is never
initialized on the first try, and always works properly after an
up/down.</quote> [...] <quote who="Derek Wildstar">(before I thought just
telling eth0 to come up worked, but it does actually need to be assigned
some ip address and the sequence doesn't work with anything less than a
"sleep 2" before eth0 is brought down)</quote>

</p><p>

Andrea Arcangeli gave a pointer to <a
href="ftp://ftp.us.kernel.org/pub/linux/kernel/people/andrea/patches/v2.3/2.3.99-pre9-pre1/xircom_tulip_cb-1">a
patch</a> and replied, <quote who="Andrea Arcangeli">The xircom_cb driver
had some bug. I fixed them to make it to work on my laptop and I don't have
problems anymore. I posted the fix to David Hinds for the 2.2.x pcmcia but
I've not checked if it's been merged.</quote>

</p><p>

Derek reported complete success, and added that the patch hadn't made it
into the official development tree as of 2.4.0test7-pre5. End Of Thread
(tm).

</p>

</section>

<section
  title="Eight Months Of linux-kernel Timezone Stats"
  subject="Timezones"
  archive="http://www.lib.uaa.alaska.edu/linux-kernel/archive/2000-Week-33/0413.html"
  posts="4"
  startdate="19 Aug 2000 00:00:00 -0800"
  enddate="20 Aug 2000 00:00:00 -0800"
>

<mention>Stephen Rothwell</mention>

<p>

In an effort to see Riley Williams announced:

</p>

<quote who="Riley Williams">

<p>

On going through the timezones used in 37,165 emails posted to the Linux
Kernel mailing list during the eight months I've been archiving them, I
found the following distribution.

</p><p>

Some of them appear to be mis-allocated by the various users, and I've
indicated these by ??? followed by what I believe the offset for the named
timezone to be. Many are ones I don't recognise anyway, but I've labelled
the ones I know. I've also made a guess at some of the others, the ones I've
marked with (*) in the list, but these could easily be wrong.

</p><p>

There are probably other zones that aren't in this list simply because
nobody in those zones posts in the Linux Kernel mailing list. I've added the
ones I would suspect to exist (for -1000 and for -0330), but would like
verification thereof if possible, as well as details of any other missing
timezones.

</p><p>

I've had a look through my systems, but can't find anything to indicate what
the other zones could be. Can anybody help me with these please?

</p><p>

Personal replies only, as this is most probably off-topic here.

</p><p>

<table border="0">

<tr><th>Occurs</th><th>Specification</th><th>Timezone</th></tr>
<tr><td>       </td><td> -1000 (HAST)</td><td>    Hawaii Standard Time            (*)</td></tr>
<tr><td>      2</td><td> -0900 (AKST)</td><td>    Alaska Standard Time            (*)</td></tr>
<tr><td>     18</td><td> -0900 (HADT)</td><td>    Hawaii Daylight Time            (*)</td></tr>
<tr><td>     22</td><td> -0800 (AKDT)</td><td>    Alaska Daylight Time            (*)</td></tr>
<tr><td>      9</td><td> -0800 (PDT)</td><td>     ??? -0700</td></tr>
<tr><td>   1310</td><td> -0800 (PST)</td><td>     Pacific Standard Time</td></tr>
<tr><td>      1</td><td> -0700 (EDT)</td><td>     ??? -0400</td></tr>
<tr><td>      2</td><td> -0700 (GMT)</td><td>     ??? +0000</td></tr>
<tr><td>      1</td><td> -0700 (MDT)</td><td>     ??? -0600</td></tr>
<tr><td>    176</td><td> -0700 (MST)</td><td>     Mountain Standard Time</td></tr>
<tr><td>   2659</td><td> -0700 (PDT)</td><td>     Pacific Daylight Time</td></tr>
<tr><td>      1</td><td> -0600 (CDT)</td><td>     ??? -0500</td></tr>
<tr><td>    544</td><td> -0600 (CST)</td><td>     Central Standard Time</td></tr>
<tr><td>      2</td><td> -0600 (EST)</td><td>     ??? -0500</td></tr>
<tr><td>    282</td><td> -0600 (MDT)</td><td>     Mountain Daylight Time</td></tr>
<tr><td>    623</td><td> -0500 (CDT)</td><td>     Central Daylight Time</td></tr>
<tr><td>      4</td><td> -0500 (COT)</td><td></td></tr>
<tr><td>   1440</td><td> -0500 (EST)</td><td>     Eastern Standard Time</td></tr>
<tr><td>      5</td><td> -0500 (GMT)</td><td>     ??? +0000</td></tr>
<tr><td>      1</td><td> -0400 (AST)</td><td></td></tr>
<tr><td>   2938</td><td> -0400 (EDT)</td><td>     Eastern Daylight Time</td></tr>
<tr><td>      2</td><td> -0400 (VET)</td><td></td></tr>
<tr><td>       </td><td> -0330 (NST)</td><td>     Newfoundland Standard Time      (*)</td></tr>
<tr><td>     10</td><td> -0300 (ADT)</td><td></td></tr>
<tr><td>      5</td><td> -0300 (ART)</td><td></td></tr>
<tr><td>    339</td><td> -0300 (BRST)</td><td></td></tr>
<tr><td>     62</td><td> -0300 (BRT)</td><td></td></tr>
<tr><td>     11</td><td> -0300 (EST)</td><td>     ??? -0500</td></tr>
<tr><td>      7</td><td> -0230 (NDT)</td><td>     Newfoundland Daylight Time      (*)</td></tr>
<tr><td>     14</td><td> -0000 (GMT)</td><td>     Greenwich Mean Time             (Unusual)</td></tr>
<tr><td>      1</td><td> -0000 (UTC)</td><td>     Universal Time Co-ordinated     (Unusual)</td></tr>
<tr><td>     12</td><td> +0000 (   )</td><td></td></tr>
<tr><td>   2432</td><td> +0000 (GMT)</td><td>     Greenwich Mean Time</td></tr>
<tr><td>      8</td><td> +0000 (IST)</td><td></td></tr>
<tr><td>     27</td><td> +0000 (UTC)</td><td>     Universal Time Co-ordinated</td></tr>
<tr><td>      3</td><td> +0000 (WET)</td><td>     Western European Time</td></tr>
<tr><td>   7152</td><td> +0100 (BST)</td><td>     British Summer Time</td></tr>
<tr><td>      2</td><td> +0100 (CEST)</td><td>    Central European Standard Time</td></tr>
<tr><td>   4621</td><td> +0100 (CET)</td><td>     Central European Time</td></tr>
<tr><td>     13</td><td> +0100 (GMT)</td><td>     ??? +0000</td></tr>
<tr><td>     20</td><td> +0100 (IST)</td><td></td></tr>
<tr><td>      1</td><td> +0100 (MDT)</td><td>     ??? -0600</td></tr>
<tr><td>    747</td><td> +0100 (MET)</td><td>     Middle European Time</td></tr>
<tr><td>     40</td><td> +0100 (MEZ)</td><td></td></tr>
<tr><td>      1</td><td> +0100 (PST)</td><td>     ??? -0800</td></tr>
<tr><td>     23</td><td> +0100 (WEST)</td><td>    Western European Summer Time</td></tr>
<tr><td>     12</td><td> +0100 (WET-DST)</td><td> Western European Time - Daylight Saving Time</td></tr>
<tr><td>   7374</td><td> +0200 (CEST)</td><td>    Central European Summer Time</td></tr>
<tr><td>      2</td><td> +0200 (CST)</td><td>     ??? -0600</td></tr>
<tr><td>     83</td><td> +0200 (EET)</td><td>     Eastern European Time</td></tr>
<tr><td>      6</td><td> +0200 (IST)</td><td>     Israel Standard Time            (*)</td></tr>
<tr><td>     19</td><td> +0200 (MDT)</td><td>     ??? -0600</td></tr>
<tr><td>    743</td><td> +0200 (MEST)</td><td>    Middle European Summer Time</td></tr>
<tr><td>     43</td><td> +0200 (MESZ)</td><td></td></tr>
<tr><td>      7</td><td> +0200 (MET)</td><td>     ??? +0100</td></tr>
<tr><td>   1624</td><td> +0200 (MET-DST)</td><td> Middle European Time - Daylight Saving Time</td></tr>
<tr><td>     68</td><td> +0200 (METDST)</td><td>  Middle European Time - Daylight Saving Time</td></tr>
<tr><td>      2</td><td> +0200 (MSZ)</td><td></td></tr>
<tr><td>      2</td><td> +0200 (SAST)</td><td>    South African Summer Time       (*)</td></tr>
<tr><td>      1</td><td> +0200 (UTC)</td><td>     ??? +0000</td></tr>
<tr><td>     69</td><td> +0300 (EEST)</td><td>    Eastern European Summer Time</td></tr>
<tr><td>     57</td><td> +0300 (EET-DST)</td><td> Eastern European Time - Daylight Saving Time</td></tr>
<tr><td>    120</td><td> +0300 (MSK)</td><td></td></tr>
<tr><td>     25</td><td> +0300 (IDT)</td><td>     Israel Daylight Time            (*)</td></tr>
<tr><td>    247</td><td> +0400 (MSD)</td><td></td></tr>
<tr><td>     72</td><td> +0400 (MSK-DST)</td><td></td></tr>
<tr><td>     40</td><td> +0500 (GMT)</td><td>     ??? +0000</td></tr>
<tr><td>      4</td><td> +0500 (PKT)</td><td></td></tr>
<tr><td>      3</td><td> +0500 (YEKT)</td><td></td></tr>
<tr><td>    125</td><td> +0530 (IST)</td><td></td></tr>
<tr><td>      4</td><td> +0600 (GMT)</td><td>     ??? +0000</td></tr>
<tr><td>      1</td><td> +0600 (IST)</td><td></td></tr>
<tr><td>      3</td><td> +0600 (LKT)</td><td></td></tr>
<tr><td>      5</td><td> +0700 (JAVT)</td><td></td></tr>
<tr><td>      1</td><td> +0700 (WIB)</td><td></td></tr>
<tr><td>     26</td><td> +0800 (CST)</td><td>     ??? -0600</td></tr>
<tr><td>      6</td><td> +0800 (HKT)</td><td>     Hong Kong Time (*)</td></tr>
<tr><td>      4</td><td> +0800 (PHT)</td><td></td></tr>
<tr><td>     20</td><td> +0800 (SGT)</td><td>     Singapore Time (*)</td></tr>
<tr><td>     10</td><td> +0800 (WST)</td><td></td></tr>
<tr><td>    221</td><td> +0900 (JST)</td><td>     Japan Standard Time             (*)</td></tr>
<tr><td>     28</td><td> +0900 (KST)</td><td>     Korean Standard Time            (*)</td></tr>
<tr><td>     25</td><td> +0930 (CST)</td><td>     ??? -0600</td></tr>
<tr><td>    242</td><td> +1000 (EST)</td><td>     ??? -0500</td></tr>
<tr><td>     18</td><td> +1030 (CST)</td><td>     ??? -0600</td></tr>
<tr><td>     39</td><td> +1100 (EST)</td><td>     ??? -0500</td></tr>
<tr><td>    117</td><td> +1200 (NZST)</td><td>    New Zealand Standard Time</td></tr>
<tr><td>      1</td><td> +1200 (PETT)</td><td></td></tr>
<tr><td>      1</td><td> +1200 (PS)</td><td></td></tr>
<tr><td>     52</td><td> +1300 (NZDT)</td><td>    New Zealand Daylight Time</td></tr>

</table>

</p><p>

The two I have maked (Unusual) are normally seen with an offset of +0000 but
an offset of -0000 can hardly be described as wrong.

</p>

</quote>

<p>

Matti Aarnio replied, <quote who="Matti Aarnio">The "-0000" is defined in
recent RFCs to carry information that the system creating the timestamp does
not have any clue regarding its timezone. The "+0000" without text comment
is propably similar weirdo.</quote>

</p><p>

Stephen Rothwell gave some information about timezones Riley hadn't known.
'+0800 (WST)' was Western Australia Standard Time; '+0930 (CST)' was Central
Australian Standard Time (South Australia and Northern Territory); '+1000
(EST)' was Eastern Australian Standard Time (New South Wales, Queensland,
Victoria, Tasmania and Australian Capital Territory); '+1030 (CST)' was
Central Australian Summer Time; and '+1100 (EST)' was Eastern Australian
Summer Time.

</p><p>

It's too bad Riley asked for replies in private; the list traffic was a bit
slow this week due to the vger death; it would have been interesting to see
the comments this generated. For the benefit of those interested, I've
reformatted the table (and added Stephen's corrections) to order by quantity
<correction date="29 Aug 2000 10:00:00 -0800">Tobias Diedrich, Jochen Striepe,
and Ulrich Mayer have also pointed out that MEZ is German for
"Mitteleurop&#228;ische Zeit" and corresponds to MET (and CET); and MESZ is
German for "Mitteleurop&#228;ische Somerzeit" and corresponds to MEST (and CEST).
I've incorporated that information in the table below as well. Thanks,
folks!</correction> <correction date="30 Aug 2000 10:00:00 -0800">Jamie Fifield
has also pointed out that '-0400 AST' is Atlantic Standard Time. Thanks,
Jamie!</correction>:

</p><p>

<table border="0">

<tr><th>Occurs</th><th>Specification</th><th>Timezone</th></tr>
<tr><td>   7374</td><td> +0200 (CEST)</td><td>    Central European Summer Time</td></tr>
<tr><td>   7152</td><td> +0100 (BST)</td><td>     British Summer Time</td></tr>
<tr><td>   4621</td><td> +0100 (CET)</td><td>     Central European Time</td></tr>
<tr><td>   2938</td><td> -0400 (EDT)</td><td>     Eastern Daylight Time</td></tr>
<tr><td>   2659</td><td> -0700 (PDT)</td><td>     Pacific Daylight Time</td></tr>
<tr><td>   2432</td><td> +0000 (GMT)</td><td>     Greenwich Mean Time</td></tr>
<tr><td>   1624</td><td> +0200 (MET-DST)</td><td> Middle European Time - Daylight Saving Time</td></tr>
<tr><td>   1440</td><td> -0500 (EST)</td><td>     Eastern Standard Time</td></tr>
<tr><td>   1310</td><td> -0800 (PST)</td><td>     Pacific Standard Time</td></tr>
<tr><td>    747</td><td> +0100 (MET)</td><td>     Middle European Time</td></tr>
<tr><td>    743</td><td> +0200 (MEST)</td><td>    Middle European Summer Time</td></tr>
<tr><td>    623</td><td> -0500 (CDT)</td><td>     Central Daylight Time</td></tr>
<tr><td>    544</td><td> -0600 (CST)</td><td>     Central Standard Time</td></tr>
<tr><td>    339</td><td> -0300 (BRST)</td><td></td></tr>
<tr><td>    282</td><td> -0600 (MDT)</td><td>     Mountain Daylight Time</td></tr>
<tr><td>    247</td><td> +0400 (MSD)</td><td></td></tr>
<tr><td>    242</td><td> +1000 (EST)</td><td>     Eastern Australian Standard Time (New South Wales, Queensland, Victoria, Tasmania and Australian Capital Territory)</td></tr>
<tr><td>    221</td><td> +0900 (JST)</td><td>     Japan Standard Time             (*)</td></tr>
<tr><td>    176</td><td> -0700 (MST)</td><td>     Mountain Standard Time</td></tr>
<tr><td>    125</td><td> +0530 (IST)</td><td></td></tr>
<tr><td>    120</td><td> +0300 (MSK)</td><td></td></tr>
<tr><td>    117</td><td> +1200 (NZST)</td><td>    New Zealand Standard Time</td></tr>
<tr><td>     83</td><td> +0200 (EET)</td><td>     Eastern European Time</td></tr>
<tr><td>     72</td><td> +0400 (MSK-DST)</td><td></td></tr>
<tr><td>     69</td><td> +0300 (EEST)</td><td>    Eastern European Summer Time</td></tr>
<tr><td>     68</td><td> +0200 (METDST)</td><td>  Middle European Time - Daylight Saving Time</td></tr>
<tr><td>     62</td><td> -0300 (BRT)</td><td></td></tr>
<tr><td>     57</td><td> +0300 (EET-DST)</td><td> Eastern European Time - Daylight Saving Time</td></tr>
<tr><td>     52</td><td> +1300 (NZDT)</td><td>    New Zealand Daylight Time</td></tr>
<tr><td>     43</td><td> +0200 (MESZ)</td><td>    Mitteleurop&#228;ische Somerzeit (Middle European Summer Time)</td></tr>
<tr><td>     40</td><td> +0500 (GMT)</td><td>     ??? +0000</td></tr>
<tr><td>     40</td><td> +0100 (MEZ)</td><td>     Mitteleurop&#228;ische Zeit (Middle European Time)</td></tr>
<tr><td>     39</td><td> +1100 (EST)</td><td>     Eastern Australian Summer Time</td></tr>
<tr><td>     28</td><td> +0900 (KST)</td><td>     Korean Standard Time            (*)</td></tr>
<tr><td>     27</td><td> +0000 (UTC)</td><td>     Universal Time Co-ordinated</td></tr>
<tr><td>     26</td><td> +0800 (CST)</td><td>     ??? -0600</td></tr>
<tr><td>     25</td><td> +0930 (CST)</td><td>     Central Australian Standard Time  (South Australia and Northern Territory)</td></tr>
<tr><td>     25</td><td> +0300 (IDT)</td><td>     Israel Daylight Time            (*)</td></tr>
<tr><td>     23</td><td> +0100 (WEST)</td><td>    Western European Summer Time</td></tr>
<tr><td>     22</td><td> -0800 (AKDT)</td><td>    Alaska Daylight Time            (*)</td></tr>
<tr><td>     20</td><td> +0800 (SGT)</td><td>     Singapore Time (*)</td></tr>
<tr><td>     20</td><td> +0100 (IST)</td><td></td></tr>
<tr><td>     19</td><td> +0200 (MDT)</td><td>     ??? -0600</td></tr>
<tr><td>     18</td><td> -0900 (HADT)</td><td>    Hawaii Daylight Time            (*)</td></tr>
<tr><td>     18</td><td> +1030 (CST)</td><td>     Central Australian Summer Time</td></tr>
<tr><td>     14</td><td> -0000 (GMT)</td><td>     Greenwich Mean Time             (Unusual)</td></tr>
<tr><td>     13</td><td> +0100 (GMT)</td><td>     ??? +0000</td></tr>
<tr><td>     12</td><td> +0100 (WET-DST)</td><td> Western European Time - Daylight Saving Time</td></tr>
<tr><td>     12</td><td> +0000 (   )</td><td></td></tr>
<tr><td>     11</td><td> -0300 (EST)</td><td>     ??? -0500</td></tr>
<tr><td>     10</td><td> -0300 (ADT)</td><td></td></tr>
<tr><td>     10</td><td> +0800 (WST)</td><td>Western Australia Standard Time</td></tr>
<tr><td>      9</td><td> -0800 (PDT)</td><td>     ??? -0700</td></tr>
<tr><td>      8</td><td> +0000 (IST)</td><td></td></tr>
<tr><td>      7</td><td> -0230 (NDT)</td><td>     Newfoundland Daylight Time      (*)</td></tr>
<tr><td>      7</td><td> +0200 (MET)</td><td>     ??? +0100</td></tr>
<tr><td>      6</td><td> +0800 (HKT)</td><td>     Hong Kong Time (*)</td></tr>
<tr><td>      6</td><td> +0200 (IST)</td><td>     Israel Standard Time            (*)</td></tr>
<tr><td>      5</td><td> -0500 (GMT)</td><td>     ??? +0000</td></tr>
<tr><td>      5</td><td> -0300 (ART)</td><td></td></tr>
<tr><td>      5</td><td> +0700 (JAVT)</td><td></td></tr>
<tr><td>      4</td><td> -0500 (COT)</td><td></td></tr>
<tr><td>      4</td><td> +0800 (PHT)</td><td></td></tr>
<tr><td>      4</td><td> +0600 (GMT)</td><td>     ??? +0000</td></tr>
<tr><td>      4</td><td> +0500 (PKT)</td><td></td></tr>
<tr><td>      3</td><td> +0600 (LKT)</td><td></td></tr>
<tr><td>      3</td><td> +0500 (YEKT)</td><td></td></tr>
<tr><td>      3</td><td> +0000 (WET)</td><td>     Western European Time</td></tr>
<tr><td>      2</td><td> -0900 (AKST)</td><td>    Alaska Standard Time            (*)</td></tr>
<tr><td>      2</td><td> -0700 (GMT)</td><td>     ??? +0000</td></tr>
<tr><td>      2</td><td> -0600 (EST)</td><td>     ??? -0500</td></tr>
<tr><td>      2</td><td> -0400 (VET)</td><td></td></tr>
<tr><td>      2</td><td> +0200 (SAST)</td><td>    South African Summer Time       (*)</td></tr>
<tr><td>      2</td><td> +0200 (MSZ)</td><td></td></tr>
<tr><td>      2</td><td> +0200 (CST)</td><td>     ??? -0600</td></tr>
<tr><td>      2</td><td> +0100 (CEST)</td><td>    Central European Standard Time</td></tr>
<tr><td>      1</td><td> -0700 (MDT)</td><td>     ??? -0600</td></tr>
<tr><td>      1</td><td> -0700 (EDT)</td><td>     ??? -0400</td></tr>
<tr><td>      1</td><td> -0600 (CDT)</td><td>     ??? -0500</td></tr>
<tr><td>      1</td><td> -0400 (AST)</td><td>     Atlantic Standard Time</td></tr>
<tr><td>      1</td><td> -0000 (UTC)</td><td>     Universal Time Co-ordinated     (Unusual)</td></tr>
<tr><td>      1</td><td> +1200 (PS)</td><td></td></tr>
<tr><td>      1</td><td> +1200 (PETT)</td><td></td></tr>
<tr><td>      1</td><td> +0700 (WIB)</td><td></td></tr>
<tr><td>      1</td><td> +0600 (IST)</td><td></td></tr>
<tr><td>      1</td><td> +0200 (UTC)</td><td>     ??? +0000</td></tr>
<tr><td>      1</td><td> +0100 (PST)</td><td>     ??? -0800</td></tr>
<tr><td>      1</td><td> +0100 (MDT)</td><td>     ??? -0600</td></tr>
<tr><td>       </td><td> -0330 (NST)</td><td>     Newfoundland Standard Time      (*)</td></tr>
<tr><td>       </td><td> -1000 (HAST)</td><td>    Hawaii Standard Time            (*)</td></tr>
</table>


</p>

</section>

<section
  title="Multi-Process Debugging"
  subject="CLONE_PTRACE"
  archive="http://www.lib.uaa.alaska.edu/linux-kernel/archive/2000-Week-33/0431.html"
  posts="9"
  startdate="19 Aug 2000 00:00:00 -0800"
  enddate="19 Aug 2000 00:00:00 -0800"
>
<topic>Virtual Memory</topic>

<p>

Mark Kettenis posted a very small patch and announced:

</p>

<quote who="Mark Kettenis">

<p>

I'm working on a threads layer for GDB that can debug any group of cloned
processes sharing the same VM space as if it were a multi-threaded
application, regardless of the actual threads library that's in use. It can
even be used to debug applications that invoke the clone system call
directly.

</p><p>

It would be *really* useful if processes cloned with the CLONE_PTRACE flag
set would behave a bit more as if they had been attached to by using ptrace
(PTRACE_ATTACH, ...) and send a SIGSTOP to the debugger when they're
started. That allows the debugger to keep track of all the active threads
(as long as the programmer specified the CLONE_PTRACE flag of course) right
from the start. The attached patch accomplishes this. Without it the
debugger won't notice a thread until the first "interesting" event occurs,
which might very well be the cloned process exiting.

</p>

</quote>

<p>

(He also asked to be Cced on any replied, since he wasn't on the list,
<quote who="Mark Kettenis">and I haven't yet been able to find a mailing
list archive that did s/rutgers.edu/redhat.com/.</quote>)

</p><p>

Andi Kleen replied:

</p>

<quote who="Andi Kleen">

<p>

I once did a simple hack to solve that problem by adding a "VM identifier"
to the /proc file system. The identifiers were just the in kernel addresses
of the mm_struct. You do a SIGSTOP and then just search /proc for other
processes with the same VM.

</p><p>

Disadvantages: not atomic for the gourp (but ptrace is never atomic), and
fails for other shared resources like signal handlers (probably not a
problem for you)

</p><p>

The problem with your patch is that it only works when gdb was attached
right from the start and sees all the clones -- the vmid approach works for
later attachments too.

</p><p>

BTW, the bigger problem is core dumps of multi threaded programs right now
(a kernel problem, gdb seems to be already able to handle multiple registers
sets in a single core file)

</p>

</quote>

<p>

Mark said he liked Andi's idea (though he felt 'gdb' needed some polishing
before it could really smoothly handle multiple threads), but he felt it was
orthogonal to what he'd been working on. He explained:

</p>

<quote who="Mark Kettenis">

<p>

My idea was simply to make GDB's "attach" command for the low-level threads
layer accept multiple process id's. That certainly isn't fool proof and not
viable if you have a lot of threads or if you're spawning threads at a high
rate. But it provides some flexibility I like.

</p><p>

The idea is that once I've shaken out the bugs in the basic threads layer
described above, I'll reimplement the current support for the LinuxThreads
library on top of it. The LinuxThreads library "knows" about the kernel
threads it uses. That solves the attach problems. When using the
LinuxThreads library there wouldn't really be any need for the CLONE_PTRACE
functionality, since GDB must support older Linux kernels too. But having it
might provide additional flexibility and stability.

</p>

</quote>

<p>

He concluded, <quote who="Mark Kettenis">Anyway, the bottomline is that I
think my (small) patch adds useful functionality to the kernel, and I don't
see any reasons for not including it. I almost consider it as a "bug fix"
:-).</quote>

</p><p>

They went back and forth for awhile. It seemed that Andi felt Mark's
approach was too loose and wouldn't catch all cases (it required the program
to be aware it was being debugged), and Mark felt that his approach would
catch many common occurrences, and was anyway small enough and useful enough
that including it wouldn't hurt anything.

</p><p>

There was no conclusion on the list.

</p>

</section>

<section
  title="Braille Devices"
  subject="Braille devices"
  archive="http://www.lib.uaa.alaska.edu/linux-kernel/archive/2000-Week-33/0462.html"
  posts="3"
  startdate="19 Aug 2000 00:00:00 -0800"
  enddate="20 Aug 2000 00:00:00 -0800"
>
<topic>Braille</topic>

<p>

Someone on the debian-devel mailing list asked if braille support could be
added to Debian, and Simon Richter replied, ccing linux-kernel because he
felt the proper place for this functionality would be the kernel itself. He
said, <quote who="Simon Richter">I've seen the request for braille device
support during installation here on debian-devel for many times, and IMO the
best approach would be to support these devices at kernel level. The reason
for this is that a daemon approach would compromise system security, as some
(luckily not too many) braille devices have special interface cards which
require hardware access. Also, a daemon has to be started in order to be
useful, so that you cannot see anything if the boot fails.</quote>

</p><p>

Joseph Carter replied (quoted in full):

</p>

<quote who="Joseph Carter">

<p>

Agreed.  I have been pleading with anyone I came across willing to listen
for quite some time now to consider the idea of alternate console device in
the kernel for quite some time. The same concept that applies to multihead
also applies here except that the alt console would allow for some secondary
I/O device to be used in addition to the primary one.

</p><p>

This would allow for custom alternate output devices such as braile
terminals or possibly speech synthesis drivers to be written as kernel
drivers and essentially always working. It'd also allow such things as use
of an input device similar to the DARCI hardware (but much less expensive)
right in the kernel and as far as the console driver of the kernel is
concerned, anything sent and processed by the driver came directly from the
local keyboard. Much more flexible than the serial console driver is today.

</p><p>

For those who don't know, devices like the DARCI boxes are insanely
expensive - they cost more than twice the average machine of a person
reading this message. What it does is simulate a keyboard. It's extremely
flexible in its hardware implementation and extremely complex in its
configuration. It can use all sorts of inputs from custom matrix keyboards
to a few switches to a surplus morse code key - use your imagination a bit.
It outputs a standard keyboard signal. In your choice of PC, Mac, and I
think also Sun formats. It's purpose is adaptive input for people who cannot
use a traditional keyboard. They may also have alternative ways to simulate
a mouse in newer models. Most of these special purpose devices can be
connected to parallel or serial ports with very little electronics no more
complex than wiring up a playstation controller for your favorite game
emulator.

</p><p>

The possibilities for output have I think already begun to register. Besides
the obvious things like braille displays and speech, there are a million
different embedded applications for this. Wearables anyone?

</p><p>

This is really the kind of thing that would not be very hard to do (I hope)
but it seems like it is also the kind of thing that must be agreed upon
because it will certainly affect a lot of things even if the effect on them
is not major. Nonetheless, I feel it is something that should be done
because it is important to make Linux as accessable as possible. It should
also be done because it'd be cool and open the door for a lot of cool stuff.

</p><p>

(Ye personal-stake-in-this disclaimer: I am myself legally blind, but do not
read Braille or use a speech synthesizer. I have enough vision that the fact
that my wterm has a font half an inch high on a 21" monitor I'm less than
10" away from is fairly comfortable reading. My vision is 20/310 and cannot
be reasonably corrected at this time. So yes I want to see this done for
other people with disabilities - but I'd never use such a kernel device for
that reason. Not necessary. I might use such a thing to write a kernel
driver for handling I/O for the wearable I've been planning to build at some
point, however.)

</p>

</quote>

<p>

Nicolas Pitre also replied to Simon (quoted in full):

</p>

<quote who="Nicolas Pitre">

<p>

First, let me say that I'm actually the maintainer of BRLTTY (<a
href="http://www.cam.org/~nico/brltty">http://www.cam.org/~nico/brltty</a>)
and used it most everyday on Linux for nearly six years now. I would like to
take this opportunity to answer some questions and kill some common myths
that I keep encountering over and over. All this rambling also applies to
other packages similar to BRLTTY...

</p><p align="center">

<b>Braille Display Support</b>

</p><p>

BRLTTY is quite modular and actually support over 10 different brands of
braille display families. Adding another is just a matter of having the
protocol specification from the manufacturer (you know the classic problem?)
and someone to implement it. So the user space vs kernel space argument is a
non-issue for "my display isn't supported" statements.

</p><p>

The scarce braille displays requireing a special interface card are mostly
using firmware on the card that emulates a VGA text display, or that
retrieve data directly from the video memory of your VGA card, in order to
send it directly to the braille display thus not relying on software support
at all. In the case where kernel support is absolutely required, only the
raw low-level communication support must be in the kernel, nothing more.

</p><p align="center">

<b>System Security</b>

</p><p>

BRLTTY only requires access to /dev/vcsa0, /dev/tty0 and /dev/ttyS0.  It is
intended to be used by the person at the console only and that person
usually has root access. If you don't want to run BRLTTY as root, you just
have to adjust permissions on the above devices.

</p><p align="center">

<b>Braille-Enabled Linux Installation</b>

</p><p>

The fastest and easiest way to have Linux installed for a blind person might
still consist of a sighted person assisting the instalation up to the
activation of BRLTTY. Has anyone been able to install NT or W2K with braille
support during the OS installation anyway?

</p><p>

But... since Linux is also about freedom...  Linux installation may even be
done with BRLTTY on bootdisks! I've installed many version of Red Hat in the
past without any sighted help and also got reports of success stories for
Slackware and Debian as well. The current development version of BRLTTY
contains a mini-howto on installation bootdisks hacking. I encourage every
interested distributors to have a look at it and maintain a special bootdisk
for braille-enabled Linux installation. I did it for me, the recipee is
available, but don't ask me to do it for you please.

</p><p>

Here again, the kernel solution isn't much of an advantage because you'll
typically have BRLTTY reside on an initial ramdisk (initrd) which contents
is executed before any kind of installation procedure. When the loading of
the initrd fails, it'll most probably be the case for the kernel as well,
and the blind person will remain clueless either ways. The "in the kernel
approach" doesn't bring an advantage worth its cost.

</p><p>

Since BRLTTY uses /dev/vcsa0, all kernel messages are available from the
console's scrollback function. Even the BIOS boot messages can be consulted
that way!

</p><p align="center">

<b>Conclusion</b>

</p><p>

BRLTTY is a daemon simply because its job can be done outside the kernel. It
has been like that since 1995 and you know what? the first old version from
1995 still can run unmodified on a 2.4.x kernel. So please always look at
what can be done in user space before advocating kernel solutions. Putting
this into the kernel would simply be a maintenance overhead.

</p><p>

My pay job consists of kernel hacking and I also maintain kernel support for
the StrongARM SA1100 in my free time. Therefore I'm quite familiar with it
and don't think adaptive applications belongs there. Some will argue that
Speakup is in kernel space but speech is a different matter than braille,
and I'm still not convinced anyway.

</p><p>

As a sidenote, people used to their good old DOS TSR for their
braille/speech hardware could have a look at DOSgate (<a
href="http://www.cs.unibo.it/~zinie/dosgate/">http://www.cs.unibo.it/~zinie/dosgate/</a>).
It lets you access the Linux console transparently through a dosemu session
using your DOS adaptation tools. This might be an alternative to the lack of
native Linux support for some hardware... or lack of good enough Linux
screen reader package for one's taste.

</p>

</quote>

</section>

<section
  title="More On OOM, Resource Accounting, And The New VM"
  subject="Out of memory?"
  archive="http://www.lib.uaa.alaska.edu/linux-kernel/archive/2000-Week-33/0476.html"
  posts="16"
  startdate="19 Aug 2000 00:00:00 -0800"
  enddate="21 Aug 2000 00:00:00 -0800"
>
<topic>OOM Killer</topic>
<topic>Virtual Memory</topic>

<mention>James Sutherland</mention>
<mention>Willy Tarreau</mention>

<p>

Alexander Valys hit an out of memory (OOM) condition during normal use (he
opened a 26M file in pico), which completely disabled his system. Only after
pico crashed of its own accord was Alexander able to do anything at all. He
said on linux-kernel, <quote who="Alexander Valys">Isn't the kernel supposed
to prevent this sort of this from happening?</quote> For a good discussion
on this issue, see <kcref subject="Kernel 2.2.14 OOM killer strikes."
startdate="06 Jul 2000 00:00:00 -0800"></kcref> and <kcref subject="can't mlockall() more
than 128MB, is this a kernel limitiation ?" startdate="05 Aug 2000 00:00:00 -0800"></kcref>.
This week, David Ford replied that there was only so much that could be done
when the system ran out of memory. He said, <quote who="David Ford">The
kernel does try to kill off programs when it runs out of memory but unless
it picks the memory pig, then that program will probably immediately grab
any memory the kernel just freed.</quote> Michael Rothwell didn't think much
of the kernel's choice of which memory hogs to kill. The week before, his
machine had responded to an OOM condition by killing 'kswapd', then the
window manager and a bunch of other programs. He said, <quote who="Michael
Rothwell">I know Linux overcommits memory and has no way of knowing who the
real overallocator culprit is, but wouldn't some resource accounting be
good? Or perhaps a tunable or compile-time option to turn off
overcommits?</quote> James Sutherland felt that resource accounting would be
the best solution, in conjunction with various patches that tried to be more
intelligent about which processes to kill on OOM. Rik van Riel said at one
point:

</p>

<quote who="Rik van Riel">

<p>

I have a patch which seems to select the 'right' process to kill almost all
of the time. In fact, I've had this patch for well over a year now and I've
submitted it to the list several times.

</p><p>

Every time a flamewar ensued and the patch didn't get merged. (and no, I'm
not going to submit it again, I have better things to do with my time than
getting into the next flamewar)

</p>

</quote>

<p>Willy Tarreau reported excellent success with Rik's patch, and at one point
Jesse Pollard remarked, <quote who="Jesse Pollard">This is not an easy
problem. I'm hoping that the redesigned memory structures that are a 2.5
development will include resource limits/controls.</quote> In a later post,
he asked if Rik planned to integrate the 'beancounter' resource limits with
the new VM design. Rik replied, <quote who="Rik van Riel">The new VM will be
integrated with beancounter, not the other way around. Beancounter is a
definite 2.5 issue and as such I make sure not to rely on it in any way at
the moment.</quote></p>

</section>

</kc>
