X-Git-Url: http://mj.ucw.cz/gitweb/?a=blobdiff_plain;f=lib%2Fsorter%2Fcommon.h;h=ddd7ba6fadb407ba46803961dca92e1d61e07683;hb=4d9bc7b7d4159cc0c59e608d64a1289b1ac3b45a;hp=50cbf34b789bf0b72475d50a61b20274de45d7fe;hpb=73c12b4b33fc8017585439894aff79c20ef99ea8;p=libucw.git diff --git a/lib/sorter/common.h b/lib/sorter/common.h index 50cbf34b..ddd7ba6f 100644 --- a/lib/sorter/common.h +++ b/lib/sorter/common.h @@ -12,14 +12,14 @@ #include "lib/clists.h" -/* Configuration, some of the variables are used by the old sorter, too. */ -extern uns sorter_trace, sorter_stream_bufsize; -extern uns sorter_debug, sorter_min_radix_bits, sorter_max_radix_bits; +/* Configuration variables */ +extern uns sorter_trace, sorter_trace_array, sorter_stream_bufsize; +extern uns sorter_debug, sorter_min_radix_bits, sorter_max_radix_bits, sorter_add_radix_bits; extern uns sorter_min_multiway_bits, sorter_max_multiway_bits; -extern uns sorter_threads, sorter_thread_threshold, sorter_thread_chunk; -extern uns sorter_radix_threshold; -extern u64 sorter_bufsize; -extern struct fb_params sorter_fb_params; +extern uns sorter_threads; +extern u64 sorter_bufsize, sorter_small_input; +extern u64 sorter_thread_threshold, sorter_thread_chunk, sorter_radix_threshold; +extern struct fb_params sorter_fb_params, sorter_small_fb_params; #define SORT_TRACE(x...) do { if (sorter_trace) msg(L_DEBUG, x); } while(0) #define SORT_XTRACE(level, x...) do { if (sorter_trace >= level) msg(L_DEBUG, x); } while(0) @@ -41,6 +41,7 @@ struct sort_context { struct fastbuf *out_fb; uns hash_bits; u64 in_size; + struct fb_params *fb_params; struct mempool *pool; clist bucket_list; @@ -121,6 +122,7 @@ void sbuck_swap_out(struct sort_bucket *b); /* Contexts and helper functions for the array sorter */ struct asort_context { + // Interface between generic code in array.c and functions generated by array.h void *array; // Array to sort void *buffer; // Auxiliary buffer (required when radix-sorting) uns num_elts; // Number of elements in the array @@ -136,6 +138,11 @@ struct asort_context { struct rs_work **rs_works; struct work_queue *rs_work_queue; struct eltpool *eltpool; + + // Configured limits translated from bytes to elements + uns thread_threshold; + uns thread_chunk; + uns radix_threshold; }; void asort_run(struct asort_context *ctx);