summaryrefslogtreecommitdiff
path: root/hurd/libchannel.mdwn
diff options
context:
space:
mode:
authorThomas Schwinge <thomas@schwinge.name>2010-12-13 17:11:51 +0100
committerThomas Schwinge <thomas@schwinge.name>2010-12-13 17:11:51 +0100
commit2d75167da62e3486836e5f1773e5f1ab06e43fe8 (patch)
treee44fc83e0b1419836d1b21652ad1d38b8d0af2c4 /hurd/libchannel.mdwn
parent217998d56f5b6424a685f8c87f2c0e924d1c89da (diff)
parent5c5c16e265d8ef56b71f319885f32bf144bdea23 (diff)
Merge branch 'master' into external_pager_mechanism
Conflicts: microkernel/mach/external_pager_mechanism.mdwn
Diffstat (limited to 'hurd/libchannel.mdwn')
-rw-r--r--hurd/libchannel.mdwn68
1 files changed, 68 insertions, 0 deletions
diff --git a/hurd/libchannel.mdwn b/hurd/libchannel.mdwn
new file mode 100644
index 00000000..3e19fb18
--- /dev/null
+++ b/hurd/libchannel.mdwn
@@ -0,0 +1,68 @@
+[[!meta copyright="Copyright © 2008, 2010 Free Software Foundation, Inc."]]
+
+[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
+id="license" text="Permission is granted to copy, distribute and/or modify this
+document under the terms of the GNU Free Documentation License, Version 1.2 or
+any later version published by the Free Software Foundation; with no Invariant
+Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
+is included in the section entitled [[GNU Free Documentation
+License|/fdl]]."]]"""]]
+
+# libchannel
+
+*libchannel* was accepted as a project for [[Google_Summer_of_Code|community/gsoc]] (or
+just GSoC) in 2007. It was written by Carl Fredrik Hammar who was mentored by
+Richard Braun.
+
+
+## Outline
+
+*libchannel* was intended to be used to cleanly and efficiently
+implement *channel* translators that would correspond to character
+device files. In other words, translators for input devices, sound,
+network and the like.
+
+There are many cases where one wishes to stack translators over one
+another. Take networking as an example, you may wish to have a pseudo
+network device that balance traffic over two real devices.
+
+The problem with stacking translators this way is that it's
+inefficient, for every RPC to the balancer a RPC is made to each of
+the real devices. Now a RPC isn't really *that* expensive, but in a
+more complex example with more layers the overhead of these RPC's makes
+such a stacking infeasible.
+
+However, by using *libchannel* a translator can provide a description
+of what it does (i.e. the code and data it uses), which a translator
+layered untop can fetch and use directly. Now only strictly required
+RPC's needs to be sent.
+
+
+## Result
+
+By the end of GSoC 2007, *libchannel* had mostly reached the initial
+goals. There some code missing, most notably the code for
+transferring channels via RPC, but similar code was already present in
+*libstore* and can be trivially adapted for *libchannel*. It also
+needed more debugging.
+
+Despite these minor deficiencies, the project was considered a
+success, never the less.
+
+
+## Future directions
+
+However, while *libchannel* matched the original specifications. It's
+believed that it's too inflexible to make use of in many specific
+cases and that a more general solution is desired. While the
+discussion isn't over yet, it seems *libchannel* will become a support
+library to implement specialized channel libraries, e.g. *libaudio*
+and *libnetwork* or similar.
+
+So work on *libchannel* will continue, in one form or another.
+
+
+# Related
+
+ * [*Van Jacobson's network channels*](http://lwn.net/Articles/169961/)
+ (2006-01-31) by Jonathan Corbet.