This README.TXT file documents changes made to the ICL XINU C SDK API Library =============================================================================== v1.60 =============================================================================== Summary Maintenance release. New Features/Changes - Added non-blocking versions of semaphore/ID functions. - Added C++ compatibility for xinu.h header file. - Added SemCount() function to return current semaphore count. - Added thread-safe versions of access(), chdir(), findfirst(), findnext(), getcwd(), mkdir(), perror() and strdup() functions. Fixed Problems - None. =============================================================================== v1.56 =============================================================================== Summary Maintenance release. New Features/Changes - Added thread-safe version of time function. Fixed Problems - None. =============================================================================== v1.55 =============================================================================== Summary Maintenance release. New Features/Changes - Added thread-safe version of fputs(), fseek(), setdate(), settime(), rename() and remove() functions. - Added support for large (>64K) memory allocations. Fixed Problems - None. =============================================================================== v1.54 =============================================================================== Summary Internal maintenance release. New Features/Changes - None. Fixed Problems - Fixed bug in HUGE memory model compile (use only internally for ISaGRAF debug version). =============================================================================== v1.53 =============================================================================== Summary Maintenance release. New Features/Changes - New convenience functions ThreadStartup() and ThreadShutdown() were added. - The functions gettime() and getdate() were added to those that are thread-safe. Fixed Problems - The paths in the Borland C++ 5.0 sample IDE file were pointing to the wrong directories (BC45 instead of BC50). - A compatibility issue was resolved with Sockets. If Sockets is busy, it is no longer interrupted by a context switch in order to avoid reentry. =============================================================================== v1.52 =============================================================================== Summary Maintenance release. New Features/Changes - Added functions to handle nested semaphore waits and signals for resource protection based on thread ID ( SemWaitID() & SemSignalID() ). - Removed SemShutdown() function. - Added the system() function to the collection of DOS reentrancy-protected functions. Fixed Problems - The timer interrupt service routine (ISR) now saves and restores the 386 extended registers for all compiler versions. This fixes a problem with system crashes when a thread has embedded assembly code that uses the extended registers. =============================================================================== v1.51 =============================================================================== Summary Maintenance release. New Features/Changes - Added additional check for thread stack corruption. Fixed Problems - Fixed XAvailMem function to eliminate DOS reentrancy problem. =============================================================================== v1.50 =============================================================================== Summary Maintenance release. New Features/Changes - Increased max length of thread name from 9 to 16 characters. - Changed dynamic memory allocation system so that unused memory is available to DOS for system calls and the like. Previously, Xinu had allocated all available DOS memory for itself and then allocated memory as needed from that pool. Now, Xinu calls DOS memory allocation functions, protecting them from reentrancy with a semaphore. - Added XAvailMem function that returns the number of bytes of available memory. - Protected several additional runtime library functions against reentrancy: putc, kbhit, getch and system. Expanded list of unsupported runtime library functions that generate compiler errors. Fixed Problems - None. =============================================================================== v1.43 =============================================================================== Summary Maintenance release. New Features/Changes - None. Fixed Problems - v1.42 was improperly released - had files from development branch instead of maintenance branch. =============================================================================== v1.42 =============================================================================== Summary Maintenance release. New Features/Changes - SemShutdown function added - waits on semaphore, deletes it, and sets semaphore ID to kXinuIllegalSemID. - Added ThreadKillAll function - kills all but the current thread. - Added stat function to list of thread protected runtime library functions. - Vers.h was renamed VersXinu.h to avoid conflicts with other ICL libraries. Fixed Problems - Made it so application program can call exit and have it kill all threads, clean up properly and exit to DOS. =============================================================================== v1.41 =============================================================================== Summary Maintenance release. New Features/Changes - Added XAvailMemPara() function, which returns the number of (16-byte) paragraphs of free memory in the Xinu heap. - Added XSetRsvdMemSize() to allow DOS memory to be reserved (not included in the Xinu heap). This was added to support DOS system() calls while Xinu is running. Fixed Problems - None. =============================================================================== v1.40 =============================================================================== Summary Maintenance release. New Features/Changes - vprintf was added to the list of "protected" (made thread-safe) runtime library functions. - Debug information is now stripped from the libraries. - Increased the initial thread stack from 2048 to 5000 bytes. - Added functions to get and set thread priority. - Added error message printout if stack overflow occurs. - Added new value kIllegalSemID to represent illegal semaphore ID. Fixed Problems - Eliminated a narrow window of vulnerability in the timer ISR, which could allow other interrupts to occur at a time when they would not be handled properly (could cause thread/system lockups). - Problem in makefile was causing libraries to be compiled as 8086 for all compiler versions, as opposed to generating 80386 code for 4.5 and 5.0 compilers. - Changed makefile to cause in and out I/O instructions to be generated inline, instead of using function calls (which is the default behavior in BC 5.0). This reduced execution time in timer ISR. =============================================================================== v1.30 =============================================================================== Summary Maintenance release. New Features/Changes - None. Fixed Problems - Communications lockups could occur at high baud rates when multiple COM ports were used simultaneously.