Sounds good to me.  Since threads support on the LINUX kernel
still has some bugs in it, this is what I have been thinking about
for the HW emulation/virtualization structure:

1: Since LINUX doesn't quite yet completely support posix threads
yet, we will need a reverse thread spawning structure (a new
master is spawned, not a new slave thread).  This solves the
problem of not being able to forward requests & sockets to the new
thread.
2: These threads will be spawnd upon: (a) the death of the current
manager thread, (b) the death of a hardware thread, (c) the
addition of a device [possibly emulating/virtualizing plug & play,
and (d) the creation of a VM.
3: Threads will be killed upon: (a) an irrecoverable [software
emulation] error, (b) the destruction of a VM, (c) the removal of
a plug & play device from the VM.

A base set of threads would be:
1) vga/svga/xga-out with modules for
                          X,
                          Windows 9x/NT/2k(etc...),
                          BeOS (maybe handled by the X module?),
                          VNC (the plex-RFB thing that Donald
Becker started working on),
                          text-only mode output to the curses
interface,
                          (anything I missed?)
2) keyboard/mouse-in with modules for
                           NLS support (proper keyboards for
French, German, Italian, Russian, Chinese, etc.),
                           VNC,
                           (anything else?)
3) sound card emulation/virtualization-in-out with modules for
                            LINUX,
                            Windows 9x/NT/2k (etc..),
                            BeOS,
                            BSD
4) CPU-MMU virtualization thread (what Kevin is working on),
5) a BIOS services thread (setup, boot, runtime) with handlers for
LBA, APM, ACPI, RM BIOS calls, and maybe some sort of "CMOS"
setup,
6) a disk handler (FDD, HDD) thread with modules for
                             files as filesystems,
                             device support for LINUX,
                             device support for Windows 9x/NT/2k
and
7) a system management thread.

Any comments on this are welcome.

Kevin Lawton wrote:

> I've integrated the parts of the DT prototype excepting the
> branch translation / ring3 handlers.
>
> My plan is to have the DT module translate (pass through)
> all non-problem/non-branch instructions, into the tcode buffer.
> The rest I'll let trap to the monitor to be emulated for
> the 1st effort.
>
> The forward (guest instruction address -> tcode address) and
> reverse (tcode address -> guest instruction address) lookup
> tables and associated hash tables, and tcode buffer storage
> mechanisms seem to be working thus far.  Though I haven't
> tested anything much.
>
> This will let use test the new DT infrastructure well, without
> the extra branch logic.  Once I get some more stuff in place,
> I'm going to begin the process of booting an OS.  This should
> shake out some problems quite well.  Booting will be slow
> at this level.
>
> Once that stuff is all working, I'll then work on integrating
> branch translation and the ring3 handlers.
>
> -Kevin
>
> --
> =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
> Kevin Lawton                        [EMAIL PROTECTED]
> MandrakeSoft, Inc.                  Plex86 developer
> http://www.linux-mandrake.com/     http://www.plex86.org/

--
Drew Northup, N1XIM




Reply via email to