|
This list describes the major changes, additions and bug fixes made
to the WM Kernel between released versions.
Version 1.12 (February
25, 1998)
| New Features: |
opendir, readdir, rewinddir and closedir function for accessing host
file system directories have been added.
Host compatible functions have been added to access I/O space.
A new host environment variable MIPS_OPTIONS has been added. The variable
can be used to turn verbose mode on or off. When verbose mode is turned
off, various system diagnostic messages are inhibited.
The getModuleInformation function returns information about the modules
installed on the board from which the call is made.
The function returns the number of entries in a queue.
Little endian versions of the IO space access functions have been added.
|
| Run Time Library Changes: |
If the host server returned an unsupport socket domain type, then the
library routines aborted the task. The functions have been modified to
return -1 and set errno to ENOSYS.
The names of the function for accessing pci configuration space have
been changed to be compatible with the host library. Download function
arguments have been changed from values to pointers to the values. Results
are now returned via a pointer parameter instead of as the function value.
The values for the IPC_CREAT and IPC_EXCL were changed in the include/sys/ipc.h
file.
|
| Fixed in Release: |
Only one MIPS module can handle global interrupts under the WM Kernel.
Previous kernels allowed applications on multiple processors to install
global interrupt handlers. The kernel has been changed to only allow applications
on one processor to install the global interrupt handlers. Ownership is
assigned on a first come basis.
In earlier versions, each kernel cleared and reinitialized the global
interrupt enable flags as part of kernel initialization. When a second
kernel started, it was disabled if an application was running and had installed
a global interrupt handler.
A global interrupt which occurred during a process schedule could result
in a kernel crash.
|
Version 1.8 (December
12, 1997)
| New Features: |
Total time for each interrupt handler was added to the profiler output.
A parameter was added to the openUpload function which specifies the
number of buffers in the host shared memory area. When an upload has been
completed, the semaphone is used to notify the application. By examining
the value of the semaphone, the host server can prevent overflow of the
buffer.
Versions of the kernel now exist for the new modules. The standard TDM
version of the kernel uses the same kernel file for the PM4700A as the
PM4600 and PM4700 modules. The PM5000 requires different kernel files.
The pcisrv program detects the type of module and loads the correct kernel.
The kernel files for the PM5000 are:
optimized: pci5000f.s3
standard: pci5000r.s3
The alternate TDM versions of the kernel require different kernel files
for the PM4700A.
4700A optimized: pci4700ao.s3
4700A standard: pci4700ad.s3
5000 optimized: pci5000ao.s3
5000 standard: pci5000ad.s3
Parameters and data structure for the alternate TDM driver have changed.
|
| Fixed in Release: |
Memory allocated from the heap was word aligned instead of double word
aligned. This could cause an address error if a value of type double was
referenced in the allocated memory. Values of type double must be aligned
on 8 byte boundries. |
Version 1.1 (June
25, 1997)
| New Features: |
Host Version Information has been added which returns the version of
the host VME driver, host server program, type of host operating system
and host operating system version. |
| Fixed in Release: |
If a signal was left pending because it was masked when a process terminated,
the signal would get delivered during process cleanup because the process
mask was cleared but the pending signal was not cleared.
A random value was returned from the raise function because the signal
being sent was delivered to the task before the return value was set.
The sem_close function freed the memory which contained the handle for
the semaphore but did not remove the handle so if the task used the semaphore
pointer after the close it might still point to the correct handle value.
When the kernel aborts a process it sends an abort information request
to the server to print a register dump. The response to the request
was not handled correctly causing the process to get aborted a second time.
The library function sched_getschuler uses a system call with an optional
pointer parameter with a NULL value. The system call aborted the
process when it shouldn't have.
The following prototypes were in stdio.h and should have been in unistd.h:
close, open, dup, read, write
The prototypes were added to unistd.h but also have been left in stdio.h
so existing programs will not be affected.
|
Version 0.36 (May
16, 1997)
| New Features: |
Kernel functions and corresponding library functions were added for
clearing and invalidating the cache. A library function was added for the
existing kernel flush function.
ushell can now accept standard module specifications such as a run string
parameter. Example: 'pci1c'.
The buffer size used to transfer data between the kernel and the host server
was increased to 16384 bytes. Longer read and write requests are
made as repeat requests to the server.
|
| Fixed in Release: |
There is an errata for the 4600 processor which involves cache flushing.
Under certain conditions, the cache can fail to be flushed correctly. Testing
has not been able to reproduce this when running applications under the
WM Kernel. A simple two instruction patch was added to the cache flush
function in the kernel to prevent the particular sequence of events which
can result in the failure.
A parameter was added to the ulimit function for compatibility.
The parameter specifies the function to be performed by ulimit. The
include file ulimit.h was added for the prototype and defines for the parameter.
The kernel cache flush function ignored the starting address and length
of the flush request for 4600 processors. The result was that the whole
cache was flushed. The parameters allow the specification of only a part
of the cache to be flushed.
The prototype for tell and truncate were missing from unistd.h.
|
Version 0.35
| New Features: |
getopt is a new function which has been added to the WM Kernel Application
Library. It is a utility function for parsing program run string options.
It is compatible with getopt on Sun Release 4.1.
The maximum size command the root.s3 program can accept via the socket
it reads from was increased from 256 bytes to 2000 bytes.
The sysClearProcessCache system call was changed to allow task id <
0 to indicate the current task.
|
Version 0.34
| Fixed in Release: |
The interrupt handler for the timer interrupt for the PCI4600 version
of the kernel was resetting both the count register and the compare register
instead of only the compare register. This allowed the timer to drift a
number of clock ticks each time the interrupt handler was entered. The
handler has been changed to only modify the compare register.
A bug was fixed in the global segment table code. The bug resulted in
the kernel hanging if more then 10 global segments were allocated.
The prototype for isPciDeviceName was missing from pci.h.
|
Version 0.33 (November
26, 1996)
| New Features: |
The timer function sets up a timer which will send the SIGALRM signal
to the user task continually until canceled. The rate will be independent
of how long the handler for the signal takes to execute. |
| Fixed in Release: |
Task switching did not save and restore the full set of 4600 floating
point registers for programs compiled to use the MIPS level 3 instruction
set.
The interrupt handler for the real time clock allowed the clock to drift.
VME Board Access
Boards which did not have a leading digit of 1 for their VME address
could not be accessed.
The com ports on PCI module boards are independent. Each board
that has a com port accesses it as COM0:. The kernel would only allow
one board to open COM0:.
|
|