win-pvdrivers

annotate 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
rev   line source
james@766 1 introduction
james@766 2 ============
james@766 3 Welcome to liblfds, a portable, license-free, lock-free data structure
james@766 4 library written in C.
james@766 5
james@766 6 platforms
james@766 7 =========
james@766 8 Currently liblfds out-of-the-box supports;
james@766 9
james@766 10 Operating System CPU Toolset
james@766 11 ================ ========== =======
james@766 12 Windows 64-bit IA64 & x64 1. Microsoft Visual Studio 2008
james@766 13 2. Microsoft Windows SDK and GNUmake >= 3.8.1
james@766 14
james@766 15 Windows 32-bit x64 & x86 1. Microsoft Visual Studio 2008
james@766 16 2. Visual C++ 2008 Express Edition
james@766 17 3. Microsoft Windows SDK and GNUmake >= 3.8.1
james@766 18
james@766 19 Windows Kernel IA64, x64, 1. Windows Driver Kit >= 7.0.0
james@766 20 x86
james@766 21
james@766 22 Linux 64-bit x64 1. GCC >= 4.1.0 and GNUmake >= 3.8.1
james@766 23
james@766 24 Linux 32-bit x64, x86, 1. GCC >= 4.1.0 and GNUmake >= 3.8.1
james@766 25 ARM
james@766 26
james@766 27 data structures
james@766 28 ===============
james@766 29 Currently liblfds provides the following;
james@766 30
james@766 31 * Freelist
james@766 32 * Queue
james@766 33 * Ringbuffer
james@766 34 * Singly linked list (logical delete only)
james@766 35 * Stack
james@766 36
james@766 37 liblfds on-line
james@766 38 ===============
james@766 39 On the liblfds home page, you will find the blog, a bugzilla, a forum, a
james@766 40 wikipedia and the current and all historical source releases.
james@766 41
james@766 42 The wikipedia contains comprehensive documentation for development,
james@766 43 building, testing and porting.
james@766 44
james@766 45 http://www.liblfds.org
james@766 46
james@766 47 license
james@766 48 =======
james@766 49 There is no license. You are free to use this code in any way.
james@766 50
james@766 51 building
james@766 52 ========
james@766 53 On Windows, depending on your target platform, one of the following toolchains
james@766 54 is required;
james@766 55
james@766 56 * Microsoft Visual Studio 2008 (expensive)
james@766 57 * Visual C++ 2008 Express Edition (free, but no 64 bit support)
james@766 58 * Microsoft Windows SDK (free, no GUI, has 64 bit support) and GNUmake 3.81
james@766 59
james@766 60 On Windows (kernel-mode), the following toolchain is required;
james@766 61
james@766 62 * Windows Driver Kit 7.0.0 or later
james@766 63
james@766 64 On Linux, the following toolchain is required;
james@766 65
james@766 66 * gcc 4.1.0 or later and GNUmake 3.81
james@766 67
james@766 68 For documentation, see the building guide in the wikipedia.
james@766 69
james@766 70 using
james@766 71 =====
james@766 72 Once built, there is a single header file, /inc/liblfds.h, which you must include
james@766 73 in your source code, and a single library file /bin/liblfds.*, where the suffix
james@766 74 depends on your platform and your build choice (static or dynamic), to which,
james@766 75 if statically built, you must link directly or, if dynamically built, you must
james@766 76 arrange your system such that the library can be found by the loader at run-time.
james@766 77
james@766 78 testing
james@766 79 =======
james@766 80 The library comes with a command line test and benchmark program. This
james@766 81 program requires threads. As such, it is only suitable for platforms providing
james@766 82 thread support and which can execute a command line binary. Currently this
james@766 83 means the test and benchmark program works for all platforms except the Windows
james@766 84 Kernel.
james@766 85
james@766 86 For documentation, see the testing and benchmarking guide in the wikipedia.
james@766 87
james@766 88 porting
james@766 89 =======
james@766 90 Both the test program and liblfds provide an abstraction layer which acts to
james@766 91 mask platform differences. Porting is the act of implementing on your platform
james@766 92 the functions which make up the abstraction layers. You do not need to port
james@766 93 the test program to port liblfds, but obviously it is recommended, so you can
james@766 94 test your port.
james@766 95
james@766 96 To support liblfds, your platform must support either contigious double-word
james@766 97 compare-and-swap (e.g. x86/x64) or contigious double-word load-link/conditional-store
james@766 98 where normal loads cannot occur inside the LL/CS pair (e.g. ARM) or single word
james@766 99 load-link/conditional-store where normal loads can occur inside the LL/CS pair.
james@766 100
james@766 101 For documentation, see the porting guide in the wikipedia.
james@766 102
james@766 103 release history
james@766 104 ===============
james@766 105 release 1, 25th September 2009, svn revision 1574.
james@766 106 - initial release
james@766 107
james@766 108 release 2, 5th October 2009, svn revision 1599.
james@766 109 - added abstraction layer for Windows kernel
james@766 110 - minor code tidyups/fixes
james@766 111
james@766 112 release 3, 25th October 2009, svn revision 1652.
james@766 113 - added singly linked list (logical delete only)
james@766 114 - minor code tidyups/fixes
james@766 115
james@766 116 release 4, 7th December 2009, svn revision 1716.
james@766 117 - added ARM support
james@766 118 - added benchmarking functionality to the test program
james@766 119 - fixed a profound and pervasive pointer
james@766 120 decleration bug; earlier releases of liblfds
james@766 121 *should not be used*
james@766 122
james@766 123 release 5, 19th December 2009, svn revision 1738.
james@766 124 - fixed subtle queue bug, which also affected ringbuffer
james@766 125 and caused data re-ordering under high load
james@766 126 - added benchmarks for freelist, ringbuffer and stack
james@766 127
james@766 128 release 6, 29th December 2009, svn revision 1746.
james@766 129 - fixed two implementation errors, which reduced performance,
james@766 130 spotted by Codeplug from "http://cboard.cprogramming.com".
james@766 131