lkml.org 
[lkml]   [1996]   [Nov]   [7]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
Subjectproc_generic - cool new stuff
OK... proc_generic version 2 is here.

This version offers cached and non-cached operation as well as
a new toy I have been working on... proc fifos. This little
gadget is great for logging kernel info and not filling up
the log files or causing klogd/syslogd undue strain. I have
implemented one in the sbpcd code for your wonderment.

I have also (for Alan's sake) implemented /proc/net/route using
the new non-cached model . When working for non-cached proc
routines, proc_write() writes directly into the user buffer, and
therefore must be OK to sleep in. It definitely cannot use cli/sti
to lock it's tables. Anything still relying on cli/sti will need
to be cached. (And hopefully some of these will be fixed by Keith
Owens soon.)

With the new non-caching code, a user routine can swallow the
whole proc output in one read, if it finds it necessary. This
will keep the proc data consistent (no missing or duplicate data),
as was the original intent of the caching model.

The included patch should apply cleanly to 2.1.7.

Comments?

Rob
(rriggs@tesser.com)

begin 644 proc_generic-2.1.7.diff.gz
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
AE,@&9#X#@@FW*;U-5&;2>".A@7ZP7'?COU^EE84>BP``
`
end

\
 
 \ /
  Last update: 2005-03-22 13:38    [W:0.059 / U:0.212 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site