RFC, General Blinux Module Interface

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Ok, that wasn't so hard.  My system is now a loadable module.
I don't ever want to hack the kernel again!  At least not directly.

A line near the top of my rc.sysinit script now invokes
modprobe blinux
And my /etc/conf.modules contains the lines:
alias blinux jupiter
options jupiter synth=votrax port=0 baud=9600 interrupt=n
#  Configure jupiter with your key bindings etc
post-install jupiter talkcfg /etc/blinux.cfg

To fix a bug or make a change I just recompile jupiter.o (the module),
rmmod jupiter, and modprobe blinux.

The interface between the ready-for-blinux kernel and the blinux module
is documented in blinux-attach.h.
This header file contains only four declarations, and lots of comments.
The comments tell you how to write and install a blinux module.
A skeleton (C code) is included,
so you have something to work with right away.
Please look at it and tell me if you think it is general enough to work
for everybody.  Is there some important functionality
that this interface will not support?
BTW, I thank you for all your comments over the past week;
they have helped me design this interface.
Somebody (don't recall who) suggested there might be more functionality
that should be in the kernel -- capabilities that almost every blinux
module needs -- software that we don't want to all reinvent.
Accessing screen memory is a good example,
or setting up a periodic timer for continuous reading.
I take this suggestion very seriously.
I may, at some point, move some of my Jupiter code into the kernel proper,
so your blinux module can just call a function and get the
screen image with cursor xy.
But sometimes you need to crawl before you can walk.
I just wanted to get an interface up and working.
So take a look, and tell me if it is inadequate (won't support a feature),
or if it would benefit from some additional in-built functionality
(such as grabbing a copy of screen memory).

Along with the aforementioned header file,
I am making two patch files available.
The first "prepares" the kernel for blinux modules.
In other words, it puts in the hooks.
The second is my jupiter speech module.
Warning, if you download the documentation, from the same directory,
you will find it is somewhat out of date.
It still talks about Jupiter inside the kernel,
and boot parameters, and lilo, and all that.
I'll update the documentation as soon as I get round to it.
You know how it is -- docs are always last.
Patches should be applied from /usr/src/linux via
patch -b -p0 <patchfile

http://eklhad.hispeed.com/linux/jupiter/blinux_attach.h
http://eklhad.hispeed.com/linux/jupiter/blinux-hook.patch
http://eklhad.hispeed.com/linux/jupiter/jupiter.patch

Karl Dahlke



[Index of Archives]     [Linux for the Blind]     [Fedora]     [Kernel List]     [Red Hat Install]     [Red Hat Watch List]     [Red Hat Development]     [Gimp]     [Yosemite News]     [Big List of Linux Books]