Avoid permanent network network hangs when a network transport starts to return errors for various reasons.
These hangs also result in at least one thread in a CPU bound loop attempting to read on a pcap connection which will never be useful again.
When transmit or receive errors occur, the invoking thread sleeps for 1 second and subsequent operations proceed. When the total of read + write errors reaches a multiple of ETH_ERROR_REOPEN_THRESHOLD the current transport connection (usually pcap) is closed and re-opened after a ETH_ERROR_REOPEN_PAUSE second delay. If the open succeeds, we're happy. If it fails, then the link behaves as if it were never attached until some subsequent operator intervention is performed.
Activities which are known to induce this problems include (but are not limited to) when a simulator is running in a Windows Virtual Machine on a Hyper-V host system and the Hyper-V host system performs a SAVE and a subsequent Restart of the Guest Windows Virtual Machine. This operation can occur due to specific operator requests or merely when the Hyper-V host system reboots.
Migrated the XQ help to the hierarchical help model. This is a work in progress which will eventually merge much from 0readme_ethernet.txt into the device help.
Some of this behavior was previously available in the pdp11_xq simulation for the DELQA device variants, but not the DEQNA. This adds the behavior for all ethernet devices.
The helps to avoid MAC address conflicts since the Ethernet physical address is completely user settable, and starts with a static value. Multiple simulators on the same LAN will have conflicting addresses if they don't specifically set unique values.
The goals here being to simplify calling code while getting consistent output delivered everywhere it may be useful.
Modified most places which explicitly used sim_log or merely called printf to now avoid doing that and merely call sim_printf().
- Avoid assignments of void * values. Cast all memory allocation return values to appropriate types.
- Add output to sim_log where missing in various places.
- Fixed issue with lost file positions after a restore for devices which leverage the UNIT_SEQ flag.
- Added event debug support to scp and the vax simulator
- Moved external declarations into include files related to modules which define them and removed random externs from modules which referenced them
- Fixed typos in sim_ether
- Fixed sim_disk and sim_tape to properly manage asynchronous threads on an i/o flush
pdp11_xq.c, pdp11_xq.h
- Added emulation and visibility to the LEDs which were on the physical DEQNA/DELQA network boards. "show xq: will now display the LED state in addition to the other useful things.
- Added debugging of loopback packet data
- Avoided padding on short loopback packets
- Added support for extended length loopback packets (up to 1600 bytes) which is described in the DEQNA manual and used by the MicroVAX I boot ROM. Recieve such packets with the LONG error indicator.
- Returned 'reserved' status bits as 1's in received packet status word 1.
- Added debug display of transmit and receive Buffer Descriptor List contents.
sim_ether.c, sim_ether.h
- Added support for extended/oversized packets.
Fixed Ethernet formatting of open device names
Fixed serial generic naming to accomodate for the fact that an OS list of serial devices might not include devices which are already opened.