win-pvdrivers

view liblfds.6/readme.txt @ 1106:2d392ecdd366

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