win-pvdrivers

annotate liblfds.6/readme.txt @ 1075:5e8aeb18279c

Add export methods to retrieve and set the hypercall stubs for the dump_xenpci driver
author James Harper <james.harper@bendigoit.com.au>
date Mon Dec 09 13:30:14 2013 +1100 (2013-12-09)
parents 6300617040e0
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