taskThe GNU Hurd - Tasks: task #1619, designing and writing libchannel,...

 
 

task #1619: designing and writing libchannel, a library for streams

Submitter:  Marcus Brinkmann <marcus>
Submitted:  -
   
 
Category:  The GNU Hurd Should Start On:  Sun 17 Nov 2002 11:00:00 PM UTC
Should be Finished on:  Sun 17 Nov 2002 11:00:00 PM UTC Priority:  * 7 - High
Status:  None Privacy:  Public
Assigned to:  hammy Percent Complete:  0%
Open/Closed:  Open Planned Release:  None
Effort:  0.00
Wiki-like text discussion box: 


* Mandatory Fields

Add a New Comment Rich Markup
   

  Spam posted by anonymous
  Spam posted by anonymous
Wed 19 Apr 2006 03:35:34 PM UTC, comment #2: 

It might be worth having a look at the ``XSI STREAMS Option Group'', see <URL:http://www.opengroup.org/onlinepubs/000095399/functions/xsh_chap02_06.html>.

Thomas Schwinge <tschwinge>
Group administrator
Wed 19 Apr 2006 03:34:43 PM UTC, comment #1: 

Attached is `libchannel.mbox': the few bits of libchannel related emails which I could gather from the mailing list archives I have access to.

Thomas Schwinge <tschwinge>
Group administrator
-, original submission:  

Everybody who runs the Hurd uses libstore, an abstraction library for data storage media.  All block related devices are provided through it, as well as a couple of other nifty features.

The same concepts can be applied to stream data objects.  libchannel is the name of a library yet-to-be-written that should offer the following features:

  • Dynamically loadable plugins provide access to raw stream data sources (character devices, etc).
  • Other channel classes provide means to interleave other streams, or perform filter operations on them.
  • An easy to use interface for applications to access arbitrarily typed channels in the same way.
  • A channelio translator to provide direct access via the filesystem (see trans/streamio.c).
  • An encoding/decoding mechanism like the store enc/dec mechanism used by libstore.  the purpose of this is to provide the information about the stream class to the application linked to libchannel via the filesystem (marshalling all channel accesses through the filesystem is too slow and unnecessary).


In short, this library would look very much like libstore, but it wouldn't be block oriented, but character oriented.  It is to be expected that some code can simply be cut & pasted from libstore, with little modifications.

One important difference is that character devices often require some additional features to control them.  For example, a kbd device could provide raw or encoded/translated access to the keys pressed.
It's not clear how much of this needs to be abstracted or provided by libstore.  The dynamic loadability of plugins makes this fuzziness of character devices bearable. though.

Marcus Brinkmann <marcus>
Group administrator

 

(Note: upload size limit is set to 16384 kB, after insertion of the required escape characters.)

Attach Files:
   
   
Comment:
   

Attached Files
file #9801:  libchannel.mbox added by tschwinge (36KiB - application/octet-stream - libchannel.mbox)

 

Depends on the following items: None found

Items that depend on this one: None found

 

Carbon-Copy List
  • -email is unavailable- added by tschwinge (Updated the item)
  •  

    There are 0 votes so far. Votes easily highlight which items people would like to see resolved in priority, independently of the priority of the item set by tracker managers.

    Only logged-in users can vote.

     

    Follow 3 latest changes.

    Date Changed by Updated Field Previous Value => Replaced by
    2007-06-21 tschwinge Assigned toNone hammy
    2006-04-19 tschwinge Percent CompleteNone 0%
        Attached File- Added libchannel.mbox, #9801

    Back to the top

    Powered by Savane 3.13-8ccc.
    Corresponding source code