History: when the emulator was first developed on OSX 10.4 (PowerPC),
the inline keyword was added by profiling with Apple's pretty
fantastic Shark profiler. Apple's version of gcc had an -fobey-inline
switch that the makefile used to force gcc to obey the inline keyword.
This macro does the same thing
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
- decrement hoursleft on each boot to prevent running very short Prime
sessions that don't update the dongle; this allows removing of
dongle_dtime (the last time the dongle was updated)
- only uses 1 dongle location (for hoursleft)
- maintain a checksum on dongle values to detect tampering
- encrypt hoursleft and the dongle checksum
- write random values in all other dongle locations
- validate dongle by asking it to encrypt random values; this requires
that a copy of the dongle key is stored in the executable
- don't fail immediately: just set a status and keep going
- caller sets bad Prime keys and hands us the correct keys; we reset
Prime keys before returning. This makes it harder to bypass
security by not calling it at all.