Skip to content

Instantly share code, notes, and snippets.

@awreece
Created May 14, 2014 19:13
Show Gist options
  • Save awreece/9353c2a5ff392a9dc0f7 to your computer and use it in GitHub Desktop.
Save awreece/9353c2a5ff392a9dc0f7 to your computer and use it in GitHub Desktop.
diff --git a/usr/src/common/avl/avl.c b/usr/src/common/avl/avl.c
index dd39c12..f0e010d 100644
--- a/usr/src/common/avl/avl.c
+++ b/usr/src/common/avl/avl.c
@@ -863,6 +863,24 @@ avl_update(avl_tree_t *t, void *obj)
return (B_FALSE);
}
+void
+avl_swap(avl_tree_t *tree1, avl_tree_t *tree2)
+{
+ avl_node_t *temp_node;
+ ulong_t temp_numnodes;
+
+ ASSERT3P(tree1->avl_compar, ==, tree2->avl_compar);
+ ASSERT3U(tree1->avl_offset, ==, tree2->avl_offset);
+ ASSERT3U(tree1->avl_size, ==, tree2->avl_size);
+
+ temp_node = tree1->avl_root;
+ temp_numnodes = tree1->avl_numnodes;
+ tree1->avl_root = tree2->avl_root;
+ tree1->avl_numnodes = tree2->avl_numnodes;
+ tree2->avl_root = temp_node;
+ tree2->avl_numnodes = temp_numnodes;
+}
+
/*
* initialize a new AVL tree
*/
diff --git a/usr/src/lib/libavl/mapfile-vers b/usr/src/lib/libavl/mapfile-vers
index 289e09a..d1a3ac6 100644
--- a/usr/src/lib/libavl/mapfile-vers
+++ b/usr/src/lib/libavl/mapfile-vers
@@ -53,6 +53,7 @@ SYMBOL_VERSION SUNWprivate_1.1 {
avl_nearest;
avl_numnodes;
avl_remove;
+ avl_swap;
avl_walk;
local:
*;
diff --git a/usr/src/uts/common/sys/avl.h b/usr/src/uts/common/sys/avl.h
index ba305c9..630ad97 100644
--- a/usr/src/uts/common/sys/avl.h
+++ b/usr/src/uts/common/sys/avl.h
@@ -260,6 +260,11 @@ extern boolean_t avl_update_lt(avl_tree_t *, void *);
extern boolean_t avl_update_gt(avl_tree_t *, void *);
/*
+ * Swaps the contents of the two trees.
+ */
+extern void avl_swap(avl_tree_t *tree1, avl_tree_t *tree2);
+
+/*
* Return the number of nodes in the tree
/data/areece/jenkins/free_range2/usr/src/cmd/sgs/proto/i386/ld -o ld.so.1 -dy -G -h/lib/ld.so.1 -ztext -zdefs - Bdirect -M../common/mapfile-vers -M../common/mapfile-order-gcc -M/data/areece/jenkins/free_range2/usr/src/common/mapfiles/common/map.pagealign -zignore -i -e _rt_boot -ulink_ver_string -znodlopen -zinterpose - zdtrace=dtrace_data '-R$ORIGIN' pics/crti.o pics/msg.o pics/avl.o pics/dtrace_data.o pics/alist.o pics/strhash.o pics/elfcap.o pics/boot.o pics/boot_elf.o pics/caller.o pics/debugdata.o pics/analyze.o pics/elf.o pics/external.o pics/globals.o pics/malloc.o pics/paths.o pics/setup. o pics/util.o pics/dlfcns.o pics/config_elf.o pics/locale.o pics/tsort.o pics/remove. o pics/move.o pics/tls.o pics/cap.o pics/i386_elf.o pics/_setup.o pics/doreloc. o pics/debug.o pics/audit.o pics/object.o \
-L/data/areece/jenkins/free_range2/proto/root_i386/lib -L/data/areece/jenkins/free_range2/proto/ root_i386/usr/lib -L/data/areece/jenkins/free_range2/usr/src/cmd/sgs/libconv/i386 -lconv -L ../../../../lib/ libc/i386 -lc_pic -L/data/areece/jenkins/free_range2/usr/src/cmd/sgs/liblddbg/i386 -llddbg -L ../../librtld/ i386 -lrtld -L ../../libld/i386 -lld pics/crtn.o
ld: fatal: symbol 'assfail' is multiply-defined:
(file pics/util.o type=FUNC; file ../../../../lib/libc/i386/libc_pic.a(assfail.o) type=FUNC);
ld: fatal: symbol 'thr_min_stack' is multiply-defined:
(file pics/external.o type=FUNC; file ../../../../lib/libc/i386/libc_pic.a(thr.o) type=FUNC);
ld: fatal: symbol 'mutex_destroy' is multiply-defined:
(file pics/external.o type=FUNC; file ../../../../lib/libc/i386/libc_pic.a(synch.o) type=FUNC);
ld: fatal: symbol 'mutex_unlock' is multiply-defined:
(file pics/external.o type=FUNC; file ../../../../lib/libc/i386/libc_pic.a(synch.o) type=FUNC);
ld: fatal: symbol 'mutex_lock' is multiply-defined:
(file pics/external.o type=FUNC; file ../../../../lib/libc/i386/libc_pic.a(synch.o) type=FUNC);
ld: fatal: symbol 'mutex_init' is multiply-defined:
(file pics/external.o type=FUNC; file ../../../../lib/libc/i386/libc_pic.a(synch.o) type=FUNC);
ld: fatal: symbol 'open' is multiply-defined:
(file pics/external.o type=FUNC; file ../../../../lib/libc/i386/libc_pic.a(scalls.o) type=FUNC);
ld: fatal: symbol 'openat' is multiply-defined:
(file pics/external.o type=FUNC; file ../../../../lib/libc/i386/libc_pic.a(scalls.o) type=FUNC);
ld: fatal: symbol 'fcntl' is multiply-defined:
(file pics/external.o type=FUNC; file ../../../../lib/libc/i386/libc_pic.a(scalls.o) type=FUNC);ld: fatal: symbol 'close' is multiply-defined:
(file pics/external.o type=FUNC; file ../../../../lib/libc/i386/libc_pic.a(scalls.o) type=FUNC);
ld: fatal: symbol 'write' is multiply-defined:
(file pics/external.o type=FUNC; file ../../../../lib/libc/i386/libc_pic.a(scalls.o) type=FUNC);
ld: fatal: symbol 'read' is multiply-defined:
(file pics/external.o type=FUNC; file ../../../../lib/libc/i386/libc_pic.a(scalls.o) type=FUNC);
ld: fatal: symbol 'free' is multiply-defined:
(file pics/malloc.o type=FUNC; file ../../../../lib/libc/i386/libc_pic.a(malloc.o) type=FUNC);
ld: fatal: symbol 'malloc' is multiply-defined:
(file pics/malloc.o type=FUNC; file ../../../../lib/libc/i386/libc_pic.a(malloc.o) type=FUNC);
ld: fatal: symbol 'realloc' is multiply-defined:
(file pics/malloc.o type=FUNC; file ../../../../lib/libc/i386/libc_pic.a(malloc.o) type=FUNC);
ld: fatal: symbol '_nd' is multiply-defined:
(file pics/setup.o type=OBJT; file ../../../../lib/libc/i386/libc_pic.a(sbrk.o) type=OBJT);
ld: fatal: symbol 'lfree' is multiply-defined:
(file pics/malloc.o type=FUNC; file ../../../../lib/libc/i386/libc_pic.a(alloc.o) type=FUNC);
ld: fatal: file processing errors. No output written to ld.so.1
*** Error code 1
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment