If any of you are wanting to submit any patches for the official 2.17 this would be a good version to patch against. For example, Eugene might have a cosmetic clean-up patch for Matt's performance enhancements. Brian and/or John may or may not want to submit a patch that brings some error returns into conformance with the Unix spec. If you are intending to do something like this please let me know so that I will know to hold off until I get your patch.
Here are the highlights of the changes for LiS-2.17:
- Work on 2.6 compatibility. I haven't done a 2.6 build lately, so don't bother to try.
- Extended 12/20 bit device ids.
- Routines makedevice(), getmajor() and getminor() now defined within LiS.
- LiS takes over definition of the symbol dev_t from the kernel. Inside LiS a dev_t always means a 12/20 device id.
- Delete a bunch of old 2.2 code -- no longer supported.
- Introduce the file <sys/LiS/module.h> to get include file ordering correct for loadable drivers/modules. Include this file first instead of <linux/module.h> and <linux/modversions.h>. See LiS drivers for examples. The taking over of dev_t figured into the necessity for this change.
- Better technique for binding queue runners to CPUs.
- Defer adding a queue to the list of queues to run (qenable()) if it is already running. This change made a large difference in speed and efficiency of CPU usage in multi-cpu systems when a single queue was high-contention.
- DMA sync direction problem fixed.
- Lock queues using a semaphore instead of a spin lock. This allows service procedures to call kernel routines that sleep (not recommended, but sometimes unavoidable). This will be important for 2.6.
- Semaphore protection for module loading.
- Space in LiS semaphore and lock structures for embedded kernel structures enlarged to accommodate 2.6 structure sizes. I recommend that drivers use the lis_sem_alloc() form instead of embedding LiS locks in their own structures. The allocators always allocate according to the size of the kernel's structures.
- Add a kernel cache for stream head structures and allocated locks. Can't say that I saw any performance improvement as a result.
- Align LiS allocated memory on cache boundary.
- Incorporate Brian's message type renumbering for general compatibility with other STREAMS.
- Add the "major-index" field to the node definition in the Config file per John's patch.
- I_[P]LINK and I_[P]UNLINK ignore errors at stream head that might have been set via an M_ERROR.
- Lock and semaphore free/destroy routines check for NULL ptr so that drivers don't have to be too careful in calling them. Note that these routines both return a NULL ptr to make it easy for drivers to zero out the pointer being passed in.
--- Outgoing mail is certified Virus Free. Checked by AVG anti-virus system (http://www.grisoft.com). Version: 6.0.594 / Virus Database: 377 - Release Date: 2/24/2004
