- some more hidden / system directory fixes
- parse_directory() / write_file(): continue only if next cluster is valid
- TODO: fix VVFAT with Windows XP guest (unmodified FAT ?)
- unknown module names now cause a panic
- added log function names to some more devices
- TODO: find a way to configure log actions by device in the config interface
start menu (most of the devices do not exist at this point)
invalid module names, save log actions to bochsrc)
- added new member 'name' to the logfunctions class for the case the prefix
is too short. Added to some devices with longer names.
to update the status text if there is really a change
- changed the counter resolution to 5 (auto-off still happens after 0.5 seconds)
- the element value -1 is only used to reset the LEDs, so we have to ignore the
status flags
bochsrc parser. When read it will be possible to define exceptions from the
default setting like this:
debug: action=ignore, pci=report
- TODO (almost everything)
- add a 'name' member to the logfunctions class, since the prefix might be
too short
- apply special log actions the log modules and panic on unknown modules
- support saving special log action to bochsrc
existing "iolight timer" code in the hard drive code. If an LED is registered
with the "auto-off" flag, the device only needs to turn on the LED to indicate
data transfer. The LED timer in the gui code turns it off after 0.5 seconds if
it is not actived by another transfer. Added this feature to all network
devices.
- TODO #1: implement this feature in the USB host controllers
- TODO #2: the unused timer in the hard drive code could be used for the
emulation of seek functions
- IO intercept is not implemented yet
- MSR intercept is not implemented yet
VMX:
Fixed Bochs PANIC crash when doing I/O access crossing VMX I/O permission bitmaps.
This can happen because access_physical_read and access_physical_write cannot access memory cross 4K boundary.
I am merging the code in order to start making shortcuts between VMX emulation and SVM emulation.
Of course SVM emulation is incomplete, completely untested and not expected to work.
But someone could already take a look one the code and give some suggestions.
Also looking for anybody with existing SVM kernels - as simple as possible - for testing.
Status:
- exceptions intercept is not implemented yet
- IO intercept is not implemented yet
- MSR intercept is not implemented yet
- virtual interrupts are not implemented yet
- CPUID is not implemented yet
No advanced SVM featurez planned - I am implementing the very basic 'Pacifica' document from 2005 using QEMU code as reference.
directly while parsing the bochsrc or command line. If plugin support is enabled,
the option could load all optional plugins, not only the ones supported before.
NOTE #1: The old option had all plugins enabled by default and gave the user
a chance to diable them. Now the plugins are only loaded if they
appear in the config line and they are set to "1".
NOTE #2: Loading a plugin that is controlled by a bochsrc option is possible,
but it currently leads to a panic, since the load command is still
present in devices.cc.
NOTE #3: The plugin init code creates the device object and registers the
optional plugin device. As an option, it can create config parameters
and register an option parser. The device init, register state and
reset is still handled in devices.cc, but in the order the devices
have been loaded with the plugin control.
NOTE #4: If plugin support is disabled, the plugin control only accepts the
devices listed in plugin.cc.
- plugin init of core plugins now fails if they are not loaded with the expected
type. For core plugins the load order is important and they cannot be handled
with the chained devices list (used for optional and user plugins).
- some additions for calling config.cc functions from a plugin device
- added plugin unload function and improved load function
- use new function in bx_unload_plugins()
- new macro BX_UNREGISTER_DEVICE_DEVMODEL for future enhancements
plugins is implemented in bochsrc, these functions can be used to install
additional options from the devices code. Then the whole init / parse / save
code for this device can be moved from config.cc to the device plugin.