directly sent to the optional keyboard (USB keypad). It is now independent
from the legacy keyboard and the check for supported keys is simplified. The
legacy keyboard still receives the unhandled key event, but now sent from the
common devices code.
bx_devmodel_c. The early version of the combined vga / svga_cirrus code
required the now obsolete implementation. Some related cleanups in the
devices code.
- Since the pci_read_handler() method is identical in most devices, move it
to the base class to reduce code duplication. Only the 'pcidev' device has
it's own implementation (NOTE: it is not maintained yet).
- Minor other fixes and cleanups in some PCI devices.
- In "non-plugin" mode loading and unloading network module is not necessary.
Now enabled loading for the plugin mode only and removed unloading function
for that case. The "pseudo plugin" entries of the dummy entry points are
necessary to make sure the self-registering network driver objects are not
optimized out.
- slirp / vnet: Since the plugin init function is not called in non-plugin
mode, revert the instance count init change.
- Fixed a makefile dependecy.
- TODO: Implement self-registering objects in the sound driver code.
- Removed "pseudo device plugin" containing common code and specific drivers.
- Moved network module base classes and module handling to the Bochs core.
Now loading network driver plugins in netmod.cc.
- Moved shared networking code used by the 'vnet' driver and 'bxhub' from
netmod.cc/.h to new files netutil.cc/.h.
- Created separate plugins for each network driver implementation.
- Modified Bochs plugin system to support new plugin type PLUGTYPE_NETWORK.
The format of the 'ethdev' string must be 'host:port' to use this feature.
Using the port number only for connecting 'bxhub' on the same machine is still
supported.
- Small changes to avoid crash after failure.
- Several cleanups in the socket mode.
- Fixed reporting active mode after init is done.
- Reporting sent/received byte with BX_DEBUG.
- The 'vnet' module now uses the 'script' parameter for an alternative log
file name.
- Renamed log file names in some networking modules (replaced 'ne2k' by a name
related to the module name).
- Documentation updates (networking stuff and cmosimage).
- Increase maximum number of Bochs client sessions to 6.
- Define bx_devmodel_c to 'void' for the bxhub case to simplify netmod code.
- Minor cleanups in bxhub and related vnet code.
- According to the specs masked edge-sensitive IRQs are not held pending.
- Print BX_DEBUG message in set_irq_level() only in case of level change to
avoid flooding log file.
- eth_socket.cc: Added missing winsock init.
- bxhub.cc: Added missing CDECL macro to the signal handler.
- Added some definitions for non-Windows platforms similar to the serial and
rfb code.
- bxhub.cc: Put all client data in a structure and added send_packet() function.
- bxhub.cc: Added SVN ID line.
- netmod.cc: Changed some DHCP messages to BX_DEBUG.
- eth_socket.cc: Minor cleanups.
external program 'bxhub' (simulating a two port ethernet hub). It is based on
an old SF patch and it has been updated and extended:
- Windows support (tested with MinGW/MSYS and MSVC nmake).
- Command line arguments for 'bxhub' (base port number, MAC address, TFTP).
- Added support for DHCP, TFTP, ARP and ICMP echo (ping). It uses parts of the
code for the 'vnet' module with some additions from the former "slirp backend".
- TODO: code cleanup to reduce duplication, rewrite of the networking plugins
stuff similar to the work done with the sound drivers.
- Builtin sound driver plugin support should depend on BX_SUPPORT_SOUNDLOW.
- Added some symbols required for the MSVC plugin of sound driver "file".
- Clean up threads and audio buffers only when shutting down the primary sound
driver (pcm_callback_id >= 0). Fixes crash on exit with wavemode 3.
- Renamed OSS sound driver files from soundlnx.cc/.h to soundoss.cc/.h.
- Removed "pseudo device plugin" containing common code and specific drivers.
- Moved common sound code, base classes of sound drivers and the dummy driver
to the Bochs core. Now loading sound driver plugins in soundmod.cc.
- Created separate plugins for the platform/library specific drivers and the
"file" driver.
- Modified Bochs plugin system to support now plugin type PLUGTYPE_SOUND.
Prepared "biosdetect" option in the harddrv code.
TODO #1: Add support for a comma-separated list of BIOS options.
TODO #2: Implement support for at least "biosdetect=none" in the Bochs BIOS.
either libsamplerate or the SoX resampler library installed. If not installed,
the data is only copied to the output buffer and sample rate of the output
driver is changed similar to legacy code. Related changes:
- Added check for libsamplerate or SoX resampler header files in configure
script.
- Added functions for converting source format to float (requied by resampler)
and float to output format.
- Added support for float type data in the audio buffer code. Buffer chain #0
receives float data from sendwavepacket() and buffer #1 receives data for
mixing and output in format "16-bit signed little endian stereo".
- ALSA: Disable builtin resampling feature if resampler is present to avoid
doing it twice.
- Create a file with image name plus extension ".lock" if an image is opened
in read/write mode. This file will be deleted after closing the image.
- Check for a lock file before opening an image and fail if it exists.
- Check for a lock file before creating a undoable/volatile redolog file and
fail if it exists.
"fatal". It can be used for all cases when there is no workaroud present to
avoid application crash or incorrect simulation behaviour. As a first step now
using BX_FATAL() for some data structure size and bit field errors.
- The retry timer now calls process_transfer_ring() for enabled slots only.
- On USB3-only ports ignore device speed setup and try to enable super-speed mode.
- Added support for HID devices in high-speed mode.
- Added separate descriptors for MSD devices in high-speed mode.
- NOTE: USB 2.0 values ported from Qemu / tested with USB EHCI.
async mode by default for all USB devices (used by disk, cdrom and floppy).
Whenever we implement a new HC model, it is still possible to set the async mode
to 0 until the async packet completion is working correctly.
- Extended USB callback definition to support different event types sent from
device to HC. Currently we only have the two events "async completion" and
"remote wakeup".
- Implemented event handlers in the UHCI, OHCI and EHCI. For the EHCI version
we currently have no test case.
- The external USB hub now uses this feature at device connect/disconnect.
Now the device change on the hub is correctly detected by the guest OS.
- TODO #1: remote wakeup and async completion for the xHCI.
- TODO #2: event handler for the external hub to make a USB device work on
a chain of hubs.
- TODO #3: the event handler possibly could be used for the packet copy code.
- use get_dwords() and put_dwords() from EHCI sources for reading / writing
xHCI data structures as dword array. This fixes some endianness issues.
- simplified copying data from / to data structures since we can now use the
dword array with the correct byte order directly.
- fixed all remaining "strict-aliasing" GCC warnings.
configuration, get/set status, get descriptor) to the base class to reduce code
duplication. The device calls the common handle_control() method and then it
processes unhandled requests in it's specific code. (similar to Qemu).
- USB xHCI NAK handling fix by Ben. Now openSUSE 13.2 boots without hang with
hub connected to an xHCI port.
- Updated Ben's email address and year in some copyright headers.
- Get rid of device_buffer and use packet init / cleanup functions.
- Read immediate data from memory location instead of possibly byte-swapped
TRB parameter.
- Moved UHCI async packet functions to usb_common.h for using then on both
UHCI and OHCI.
- Modified OHCI packet handling based on the UHCI implementation.
- Renamed EHCI helper function to avoid conflicts.
- TODO: async packet support on xHCI.
- Added missing queue handling code for init, reset and device disconnect.
- Added EHCI status access methods for async and periodic state.
- Added a lot of comments (mostly from the original EHCI core code).
- UFI/CBI floppy: bus-powered, no remote wakeup
- HID (mouse, tablet, keypad): bus-powered, remote wakeup
- MSD (disk, cdrom), printer: self-powered, no remote wakeup
TODO: Remote wakeup is not yet implemented. A device should be able to resume
it's upstream port if suspended.
- HcLSThreshold is writable, but it's usually not modified (same as Qemu).
- BX_ERROR should only occur on an attempt to change the number of ports.
- Don't register read-only items for save/restore.
- Changed some device descriptor fields (using values from Qemu).
- Ported device reset code from Qemu.
- Check device speed setting on connect (only low/full speed supported yet).
- TODO: External hub doesn't work properly in some test cases (device change
not detected by guest OS, openSUSE 13.2 hangs with hub on xHCI).
- USB mouse and keypad now return NAK response when idle and there is no change.
- Implemented HID commands for get/set idle duration.
- Fixed NAK behaviour in UHCI and OHCI.
TODO list: USB tablet should also return NAK (doesn't work yet), review xHCI for
the NAK behaviour, accurate implementation of the idle duration
is currently supported per hub at the same time (same as OHCI).
TODO #1: We should support at least one async operation per connected device.
TODO #2: Async packet support for EHCI and xHCI.
- added a hack to make EHCI work in Bochs, but without asynchronous packet
support (tested with "high-speed" USB disk).
- added missing list for connected USB device state.
- fixed some of the endianness issues
- fixed some of the GCC warnings
- changed some BX_INFO to BX_DEBUG
- FIXME: non-bulk devices not yet working on xHCI. Linux guest hangs during boot
when HID or hub device is connected.
instead of the hub's remove_device() method. The external hub removes connected
devices before clearing it's own list. This fixes crash on exit when devices
are present on external hub.
ignores connected high speed device (fixes panic with EHCI on guest OS init or
shutdown). The other HC's now panic and disconnect device if the user decides
to continue.
Asynchronous transfers are not yet working properly (tested with USB disk device
in high speed mode). That's why the support for "speed:high" is still disabled.
Since we have no test case for the isosynchronous mode, I have not yet ported
the main code for it.
- added Android case to the configure script.
- renamed file memory.h to memory-bochs.h to fix conflict with NDK.
- fixed Android issues in some files.