Changelog

version 1.3.12:

- Fix macro bug that causes Send and Sendmx to report failure even if they succeed. (AST)

version 1.3.11:

- Added the missing sendmx.h file to the Manifest. (AST)

version 1.3.10:

- Changed all the fundamental function names to SrrSomething to remove QNX-specific names from the basic API. QNX calls are now macros mapping to the Srr calls. (AST)

version 1.3.9:

- Sigh. Changed timer_t to srr_timer_t and clockid_t to srr_clockid_t to deal with the ever-expanding ring of confusion around the POSIX timer and clock support in the Linux kernel. You are now unable to use both the linux kernel versions and the srr versions in the same program. (AST)

version 1.3.8:

- Added ifdefs around timer_t and clockid_t to resolve a conflict with time.h. (AST)
- Fix a bug in qnx_name_locate causing it to fail if it is the first SRR call after a fork(). (AST)
- Moved the _mxfer_entry information into the main exported header file instead of having them it in a separate file. (AST)

version 1.3.7:

- Added Sendmx, Replymx, Receivemx calls by John Green. It is possible to implement Send, Receive and Reply in terms of these, but they turn out to be about 10% slower. That doesn't make sense, but there you have it. (JG)
- Modified the srr_lib.c to remove the slightly confusing recursive calls. They didn't actually recurse more than once, but now it is a little bit easier to read. (JG)

=item - Added code to return the actual number of bytes copied in Send
        and Receive (well, Send anyway), and then commented it out
        again because this could break existing applications.  It
        would be nice to know this information at some point. (AST)

version 1.3.6:

- Fix incompatibility with the 2.2.16 kernel that is shipped with Redhat 7.0. People keep messing with the signal representation in the task structure. (AST)
- Fix incompatibility with the RedHat 7.0 header organization where you cannot compile without the kernel source installed. You may have to modify the INCLUDEDIR line of mod/Makefile to compile on your installation. (AST)

=item - Selectively remove the ability to use versioned kernel
        symbols.  There is a header dependency cycle that I have not
        been able to solve.  Removing the versioned kernel symbols
        means that depmod will complain about undefined symbols, but
        everything will work just fine. (AST)

version 1.3.5:

- Fix incompatibility with the 2.4.0 release kernel. There was a change to how signal sets were stored in the task structure that stopped srripc from compiling. (AST)
- We have a patch that I apologize is not yet included in this release. Would anybody care to try to incorporate it? Please let me know: andrew@cogent.ca. - Direct process-to-process copy, removing the need to cache in the kernel. This improves overall throughput, and is probably the Right Thing To Do. By Frederic Rossi.

version 1.3.4:

- Fix race in proxy timers. The timer function was assumed to run in the bottom half handler of the timer interrupt, but is in fact run in the interrupt context. Triggering a proxy needs access to the task table and receive queues, so there were some windows of opportunity for corruption of receive queues, leading to lost events. Changed the timer code to run in an immediate bottom half handler, which has the side effect of damaging determinism in timers. There appears to be no choice. Signals are still delivered during the ISR, which may not be safe. Perhaps this code should also be moved to the bottom half handler. (AST)

version 1.3.3:

- Added Readmsg and Writemsg. New test program, rwmtest.c. (AS)
- Added UTIME (microsecond timer) timer code from Richard Romano. This requires the U. of Kansas UTIME kernel patches (http://www.ittc.ukans.edu/utime). This is turned on with the CONFIG_UTIME kernel configuration option. (RR)
- Fix a memory leak when destroying a task. (AS)
- Works with 2.2.x and 2.4.x Linux kernels. (AST)
- Fix undefined references during depmod. (AST)

version 1.3.2:

- fixed mod/Makefile and exe/srrmodule to properly do a test load without having to install first. (AS)
- fix KDEBUG macro to exist but be empty if compiling without debugging. (AS)
- add Readmsg() call (mirrors QNX Readmsg()) call, to read data from the current incoming message. (AS)

version 1.3.1:

- fixed bug in qnx_name_attach bug fix that would result in an infinite loop when attaching a name that is already in use.

version 1.3:

- fixed bug in memset that caused timers not to be deallocated. (AST)
- made name (qnx_name_attach) mutually exclusive. Return EBUSY if name is in use. (AST)
- change to use major 10, minor 171, to agree with official Linux device assignments. (AST)
- change name of module from srr to srripc to agree with official Linux device assignments. If you want to be compatible with old binaries, do ``mknod -m0666 /dev/srr c 10 171''. (AST)
- Add environment variable SRRDEV to the client library to allow more than one srripc module to be loaded at a time. This is really only useful for testing. Default: /dev/srripc (AST)
- explicitly include pod2??? scripts because different Linux distributions seem not to always have them. (AST)
- change to Makefile to insert auto module loading line in /etc/conf.modules (AST)
- NOTE: not ported back to linux 2.0.x (!AST)

version 1.2:

- rearranged source directories, and made install targets
- fixed bugs in task death notification that caused deadlock (Andrew Thomas)
- added a /proc/srr directory with a lot more information (Andrew Thomas)
- ported back to linux 2.0.x (again)

version 1.1:

- re-implemented timers in the module to more closely follow POSIX semantics
- timers can now deliver signals as well as proxies

version 1.0:

- Work around for sleep bug (see TODO), user won't see the bug, but it still bothers me.
- Fixed fork bug (but only for >2.2 kernels, see README).
- Ported to 2.2 kernel (Andrew Thomas)
- Andrew Thomas implemented (for 2.2.*, I back-ported it to 2.0.*):
- Creceive(),
- task death notification (qnx_pflags),
- proxy notification on timer expiry (timer_*), and
- select()
- Fixed bug with a proxies not having their args.pid set, despite being in a state of send blocked, which confused the task release procedure.
- Added SrrDebug() to control verbosity of debug messages in a module built with debugging compiled in.
- Fixed non-QNX names for task states (sorry, slight misunderstanding...).

version 0.4: saturday, may 01

- Fixed bug causing busy loop when module wasn't loaded.
- Can compile tserver agains FC Software's SRR emulation, but due to incompatibilities between the QNX API and their interface it will take more work to do a runnable port.
- Default build is non-debuggable and triggered by the SRRDEBUG env variable.

version 0.3: sunday, april 05

- Removed dynamic memory allocation for recv_q management.
- Added work-around for tasks being woken up when they shouldn't, don't know if it's my bug, or something I don't understand about wait queues.
- Made task structure simpler (and more like Linux's).
- tserver test now runs without problems.