Solaris (SmartOS) build needs alternative solutions to two termios
things, plus makefile support for additional link libraries. PNC
support is untested and is likely _very_ slow, since Solaris doesn't
have O_ASYNC. The usual suggestion is to rewrite such code to use
poll().
Incidental: utilities makefile needed tabs to make `make` happy
on FreeBSD. Which make? Don't remember now.
37.5 Prime MIPS on Linode VM to 42.5 MIPS. gvp-> was faster on the
PowerPC architecture when gvp was kept in a dedicated register, but
that does not apply to Intel.
Old:
Timing CPU, 20.0 ticks per second...
35.3 Prime MIPS for 16-bit ADD loop
40.0 Prime MIPS for 16-bit MPY loop
42.1 Prime MIPS for 16-bit DIV loop
21.4 Prime MIPS for 32-bit ADD loop
30.8 Prime MIPS for 32-bit MPY loop
28.6 Prime MIPS for 32-bit DIV loop
57.1 Prime MIPS for 16-bit X=0 loop
44.4 Prime MIPS for 32-bit X=0 loop
37.5 average Prime MIPS
New:
Timing CPU, 20.0 ticks per second...
42.9 Prime MIPS for 16-bit ADD loop
53.3 Prime MIPS for 16-bit MPY loop
47.1 Prime MIPS for 16-bit DIV loop
24.0 Prime MIPS for 32-bit ADD loop
38.1 Prime MIPS for 32-bit MPY loop
32.0 Prime MIPS for 32-bit DIV loop
57.1 Prime MIPS for 16-bit X=0 loop
44.4 Prime MIPS for 32-bit X=0 loop
42.4 average Prime MIPS
move loopback handling to pncxmit1 so it is used for broadcasts;
added reason to disconnects for better logging;
change some traces to prints for better logging;
my node is always authenticated
Linux holds onto connections until the uid is sent. Otherwise, the
delay between making a connection and sending the uid will be larger
than MAXACCCEPTTIME, causing large rings to fail
- Remove long integers so x86_64, where long is 8 bytes, is like i686
compile, where long is 4 bytes.
- Dont' handle xon/xoff on sys console in full duplex
- Add geom hash for DEMO emulator
- Add -mmacosx-version-min=10.4 option for DEMO emulator
- Add 1-line AMLC and 2-node PNC to DEMO emulator
This happens for example if a node is configured with a 1024-word
packet size and sends to a node with a 256-word packet size. In the
emulator PNC design, the packet has already been ACK'd at the sending
side, so there is no way to indicate a transmission error other than
taking down the connection. Since the error will just occur again,
the best course is to disable the node until the next reboot.
Primenet will disconnect the sending and receive nodes from each other
in about 30 seconds.
Also removed pnchexuid: useful in the beginning, not so much now.
1. Need 32-bit integer for dma address so newer Primos can use I/O
segments other than 0.
2. Ignore interrupted select()
3. Set fd to -1 after closing when not connected, to avoid bad
file descriptor error
work okay and not have the 30-second delay problem.
Over netlink, a prirun, l, displays a couple of medium-sized packets,
then '55' from PR0055 in a tiny packet, then one more reasonable-size
packet. The tiny packet seems odd, but I'm guessing it's a window
size or buffer size thing inside Primos / Primenet.
interrupts are enabled. This fixes the 30-second lag problem, but
also causes PNCDIM to get notified too many times. After an xmit,
devpnc causes an immediate interrupt. This is handled by the SEG4
phantom interrupt code by disabling PNC interrupts, then notifying
PNCDIM. (Remember, PNCDIM is still in the xmit OTA, or shortly
following). PNCDIM finishes its loop, enables interrupts, and does a
WAIT. When it enables interrupts before the WAIT, devpnc doesn't
remember that it has already interrupted, and interrupts again. I
think this is a bug - the other emulator controllers have a state
variable to remember whether they have already interrupted. But,
if I fix this "bug", we'll probably have 30-second delays again.
Hmmm...
problem with remote terminal sessions:
1. netlink to remote Prime
2. a prirun
3. l (list directory)
4. displays a little, then a longish pause up to 30 seconds, then the rest
Does a similar thing with stat us. Hitting Enter will cause it to
finish, while typing characters does not. I suspect this is a problem
with Prime's networking code, but not sure.
Also, if async I/O is used, the QUIT. OK, message doesn't appear after
ctrl-p. I think they are getting wiped out by Primenet's buffer
flushes.
All of this might be subtle timing problems because I changed the
default clock rate from 250/330/500/whatever times per sec to 20 times
per second in this rev 19 version of Primos.