@@ -344,6 +344,9 @@ int main(int argc, char **argv)
iteration_test();
single_thread_tests(long_run);
+ /* Free any remaining preallocated nodes */
+ radix_tree_callback(NULL, CPU_DEAD, NULL);
+
sleep(1);
printf("after sleep(1): %d allocated, preempt %d\n",
nr_allocated, preempt_count);
@@ -2,6 +2,8 @@
#include <linux/types.h>
#include <linux/radix-tree.h>
#include <linux/rcupdate.h>
+#include <linux/notifier.h>
+#include <linux/cpu.h>
struct item {
unsigned long index;
@@ -44,3 +46,5 @@ void radix_tree_dump(struct radix_tree_root *root);
int root_tag_get(struct radix_tree_root *root, unsigned int tag);
unsigned long node_maxindex(struct radix_tree_node *);
unsigned long shift_maxindex(unsigned int shift);
+int radix_tree_callback(struct notifier_block *nfb,
+ unsigned long action, void *hcpu);