win-pvdrivers

diff liblfds.6/readme.txt @ 766:6300617040e0

Big changes - not ready for production use.
Removed all the custom DMA handling code as it was completely incompatible with the Windows verifier.
Added liblfds (using the lock free stack) from liblfds.org so that grant's can be obtained at DIRQL.
Fixed xennet and xenvbd to support the changes.
xenusb and xenscsi almost certainly will not yet work after the changes.
author James Harper <james.harper@bendigoit.com.au>
date Sun Jan 31 21:28:42 2010 +1100 (2010-01-31)
parents
children
line diff
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/liblfds.6/readme.txt	Sun Jan 31 21:28:42 2010 +1100
     1.3 @@ -0,0 +1,131 @@
     1.4 +introduction
     1.5 +============
     1.6 +Welcome to liblfds, a portable, license-free, lock-free data structure
     1.7 +library written in C.
     1.8 +
     1.9 +platforms
    1.10 +=========
    1.11 +Currently liblfds out-of-the-box supports;
    1.12 +
    1.13 +Operating System  CPU         Toolset
    1.14 +================  ==========  =======
    1.15 +Windows 64-bit    IA64 & x64  1. Microsoft Visual Studio 2008
    1.16 +                              2. Microsoft Windows SDK and GNUmake >= 3.8.1
    1.17 +
    1.18 +Windows 32-bit 	  x64 & x86   1. Microsoft Visual Studio 2008
    1.19 +                              2. Visual C++ 2008 Express Edition
    1.20 +                              3. Microsoft Windows SDK and GNUmake >= 3.8.1
    1.21 +
    1.22 +Windows Kernel    IA64, x64,  1. Windows Driver Kit >= 7.0.0
    1.23 +                  x86
    1.24 +
    1.25 +Linux 64-bit      x64         1. GCC >= 4.1.0 and GNUmake >= 3.8.1
    1.26 +
    1.27 +Linux 32-bit      x64, x86,   1. GCC >= 4.1.0 and GNUmake >= 3.8.1 
    1.28 +                  ARM
    1.29 +
    1.30 +data structures
    1.31 +===============
    1.32 +Currently liblfds provides the following;
    1.33 +
    1.34 +* Freelist
    1.35 +* Queue
    1.36 +* Ringbuffer
    1.37 +* Singly linked list (logical delete only)
    1.38 +* Stack
    1.39 +
    1.40 +liblfds on-line
    1.41 +===============
    1.42 +On the liblfds home page, you will find the blog, a bugzilla, a forum, a
    1.43 +wikipedia and the current and all historical source releases.
    1.44 +
    1.45 +The wikipedia contains comprehensive documentation for development,
    1.46 +building, testing and porting.
    1.47 +
    1.48 +http://www.liblfds.org
    1.49 +
    1.50 +license
    1.51 +=======
    1.52 +There is no license.  You are free to use this code in any way.
    1.53 +
    1.54 +building
    1.55 +========
    1.56 +On Windows, depending on your target platform, one of the following toolchains
    1.57 +is required;
    1.58 +
    1.59 +    * Microsoft Visual Studio 2008 (expensive)
    1.60 +    * Visual C++ 2008 Express Edition (free, but no 64 bit support)
    1.61 +    * Microsoft Windows SDK (free, no GUI, has 64 bit support) and GNUmake 3.81 
    1.62 +
    1.63 +On Windows (kernel-mode), the following toolchain is required; 
    1.64 +
    1.65 +    * Windows Driver Kit 7.0.0 or later
    1.66 +
    1.67 +On Linux, the following toolchain is required;
    1.68 +
    1.69 +    * gcc 4.1.0 or later and GNUmake 3.81 
    1.70 +
    1.71 +For documentation, see the building guide in the wikipedia.
    1.72 +
    1.73 +using
    1.74 +=====
    1.75 +Once built, there is a single header file, /inc/liblfds.h, which you must include
    1.76 +in your source code, and a single library file /bin/liblfds.*, where the suffix
    1.77 +depends on your platform and your build choice (static or dynamic), to which,
    1.78 +if statically built, you must link directly or, if dynamically built, you must
    1.79 +arrange your system such that the library can be found by the loader at run-time. 
    1.80 +
    1.81 +testing
    1.82 +=======
    1.83 +The library comes with a command line test and benchmark program.  This
    1.84 +program requires threads.  As such, it is only suitable for platforms providing
    1.85 +thread support and which can execute a command line binary.  Currently this
    1.86 +means the test and benchmark program works for all platforms except the Windows
    1.87 +Kernel.
    1.88 +
    1.89 +For documentation, see the testing and benchmarking guide in the wikipedia.
    1.90 +
    1.91 +porting
    1.92 +=======
    1.93 +Both the test program and liblfds provide an abstraction layer which acts to
    1.94 +mask platform differences. Porting is the act of implementing on your platform
    1.95 +the functions which make up the abstraction layers.  You do not need to port
    1.96 +the test program to port liblfds, but obviously it is recommended, so you can
    1.97 +test your port.
    1.98 +
    1.99 +To support liblfds, your platform must support either contigious double-word
   1.100 +compare-and-swap (e.g. x86/x64) or contigious double-word load-link/conditional-store
   1.101 +where normal loads cannot occur inside the LL/CS pair (e.g. ARM) or single word
   1.102 +load-link/conditional-store where normal loads can occur inside the LL/CS pair.
   1.103 +
   1.104 +For documentation, see the porting guide in the wikipedia.
   1.105 +
   1.106 +release history
   1.107 +===============
   1.108 +release 1, 25th September 2009, svn revision 1574.
   1.109 +  - initial release
   1.110 +
   1.111 +release 2, 5th October 2009, svn revision 1599.
   1.112 +  - added abstraction layer for Windows kernel
   1.113 +  - minor code tidyups/fixes
   1.114 +
   1.115 +release 3, 25th October 2009, svn revision 1652.
   1.116 +  - added singly linked list (logical delete only)
   1.117 +  - minor code tidyups/fixes
   1.118 +
   1.119 +release 4, 7th December 2009, svn revision 1716.
   1.120 +  - added ARM support
   1.121 +  - added benchmarking functionality to the test program
   1.122 +  - fixed a profound and pervasive pointer
   1.123 +    decleration bug; earlier releases of liblfds
   1.124 +    *should not be used*
   1.125 +
   1.126 +release 5, 19th December 2009, svn revision 1738.
   1.127 +  - fixed subtle queue bug, which also affected ringbuffer
   1.128 +    and caused data re-ordering under high load
   1.129 +  - added benchmarks for freelist, ringbuffer and stack
   1.130 +
   1.131 +release 6, 29th December 2009, svn revision 1746.
   1.132 +  - fixed two implementation errors, which reduced performance,
   1.133 +    spotted by Codeplug from "http://cboard.cprogramming.com".
   1.134 +