summaryrefslogtreecommitdiff
path: root/README.install
blob: d2f843ec026599db5d1b6b78f1ad1d0420f9a669 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
------------------ lfhex build/install instructions --------------------------

lfhex uses "qmake" for build management.

Requirements:
- You must have Qt 4.x or latter to compile/link lfhex.
- You must have a compiler which is sane when using templates.
- You must have flex and bison

Build Instructions:
% gunzip -c lfhex-x.x.tar.gz | tar xvf -
% cd lfhex-x.x
% qmake lfhex.pro
% make 
% su
% make install

If your platform does not support 64 bit file offsets then you will need to
comment out a line in lfhex.pro before building.

If your platform is big-endian and you would like the offset labels to be in
big-endian you will have to uncomment a line in lfhex.pro before building.

Please let me know if you have any difficulties building lfhex.
- Salem <eyekode@yahoo.com>
td> commit148deab223b23734069abcacb5c7118b0e7deadc (patch) tree56aae9c91802e9262312f7fcbb3571eb9c8ec0e9 /lib parentb35df27a39f40e39fabf1b1e9569c7b24e1add6a (diff)
radix-tree: improve multiorder iterators
This fixes several interlinked problems with the iterators in the presence of multiorder entries. 1. radix_tree_iter_next() would only advance by one slot, which would result in the iterators returning the same entry more than once if there were sibling entries. 2. radix_tree_next_slot() could return an internal pointer instead of a user pointer if a tagged multiorder entry was immediately followed by an entry of lower order. 3. radix_tree_next_slot() expanded to a lot more code than it used to when multiorder support was compiled in. And I wasn't comfortable with entry_to_node() being in a header file. Fixing radix_tree_iter_next() for the presence of sibling entries necessarily involves examining the contents of the radix tree, so we now need to pass 'slot' to radix_tree_iter_next(), and we need to change the calling convention so it is called *before* dropping the lock which protects the tree. Also rename it to radix_tree_iter_resume(), as some people thought it was necessary to call radix_tree_iter_next() each time around the loop. radix_tree_next_slot() becomes closer to how it looked before multiorder support was introduced. It only checks to see if the next entry in the chunk is a sibling entry or a pointer to a node; this should be rare enough that handling this case out of line is not a performance impact (and such impact is amortised by the fact that the entry we just processed was a multiorder entry). Also, radix_tree_next_slot() used to force a new chunk lookup for untagged entries, which is more expensive than the out of line sibling entry skipping. Link: http://lkml.kernel.org/r/1480369871-5271-55-git-send-email-mawilcox@linuxonhyperv.com Signed-off-by: Matthew Wilcox <mawilcox@microsoft.com> Tested-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com> Cc: Konstantin Khlebnikov <koct9i@gmail.com> Cc: Ross Zwisler <ross.zwisler@linux.intel.com> Cc: Matthew Wilcox <mawilcox@microsoft.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'lib')
-rw-r--r--lib/radix-tree.c138
1 files changed, 121 insertions, 17 deletions
diff --git a/lib/radix-tree.c b/lib/radix-tree.c