Here is another version of LiS-2.17.  Let's consider it an Alpha version for the time being.  In order to use it you have to recompile your drivers against the header files in this version.

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

Reply via email to