This one doesn't appear to have come through, yesterday.
Weird ?  Perhaps the list doesn't like largeish attachments,
so I've uploaded it here in stead:
http://www.noterik.nl/ramon/fmw-19990821a.tar.gz

---

Hey everybody,

Here's a new tree.  This is from the changelog:

-------------------------------------------------------------
fmw-990821a:

  - (RvH) I cleaned up all of the code, giving it bigger indents
    and converting to C-style comments whenever things got really
    ugly.  It's still not the clearest code I've ever seen but it'll
    do for now.  I also moved the virtualised test code into a
    separate file, virtcode.c.

  - (RvH) I changed host-linux.c so that it takes the amount of
    quanta to run as an argument to ioctl().  Now it doesn't trap
    back to the user application on ever quantum.  Question:
    on 2.2 we use current->need_resched, but is this true for
    2.0 too, or does it have need_resched as a global variable ?

  - (RvH) I integrated Ulrich's mmap() code into the module, and
    fixed it so that it compiles on 2.2 kernels.

  - (RvH) I changed the way interrupts are allocated.  Now, the
    host code needs to call init_reflect() (in monitor.c) after
    init_monitor() for every interrupt that needs to be reflected
    back to the host OS.  The monitor.c code then dynamically
    generates and relocates a correct interrupt stub.  The host
    code is responsible for allocating/freeing memory for the
    stubs.

  - (RvH) I fixed up the interrupts so that the code works on my
    SMP machine.  I still have 2.0 code in there too, but I can't
    test that --- can anybody test this on a 2.0 SMP box ?
    2.2 SMP is rather annoying because it allocates lots of IPIs,
    and most of them aren't fixed (2.2 SMP does not use the 0x20-
    0x2f mapping for the PIC, but has everything go through the
    I/O APIC with rather weird interrupt mappings).  In order to
    allocate the correct interrupts I need access to a kernel
    array called irq_vector[], which unfortunately is not exported
    to modules.  Thus you need to patch the linux kernel if you
    want to run this code on a 2.2 SMP box.  The patch is simple:
    put the following code in linux/arch/i386/kernel/i386_ksyms.c:

        #ifdef __SMP__
        #include "irq.h"
        EXPORT_SYMBOL(irq_vector);
        #endif

    and everything will work just beautifully (or anyway, that's
    what it looks like.)
-------------------------------------------------------------

I also added the BeOS port to the tree, and put the BeOS
makefile in Makefile.be.  However, (1) it shouldn't compile
anymore because I changed the way monitor.c works.  I decided
not to touch the BeOS code because I don't have a BeOS box,
and I'd probably just mess it up :).  And (2), you'll probably
want to use host-beos.h in stead of host-linux.h.

What we really need is a GNU Autoconf script.  I happily decided
to write one, but after reading through the autoconf texinfo
documentation and getting utterly confused I figured that there
must be somebody on this list who has more experienced with this
than I am.  Could someone write an autoconf script ?  That'd
be nice.

Also, I noticed that the code runs extremely slowly on my
dual pentium-90.  When the freemware user program is running,
then the mouse moves only about once a second, and running
other programs takes *very* long.  On an AMD K6-350 I didn't
have any such problems.  Does anybody have any idea why it
is so slow on my pentium ?  I don't think it should do that...

Ramon

Reply via email to