]> mj.ucw.cz Git - libucw.git/blobdiff - lib/sorter/sort-test.c
Adjust thread stack size according to radix sorter parameters.
[libucw.git] / lib / sorter / sort-test.c
index 92f8d9b762d861574d9b13972affe5e8a15f0432..208de918fcc340f44f74c473a2826b22f8f01326 100644 (file)
 #include <fcntl.h>
 #include <unistd.h>
 
+/*** A hack for overriding radix-sorter configuration ***/
+
+#ifdef FORCE_RADIX_BITS
+#undef CONFIG_UCW_RADIX_SORTER_BITS
+#define CONFIG_UCW_RADIX_SORTER_BITS FORCE_RADIX_BITS
+#endif
+
 /*** Time measurement ***/
 
 static timestamp_t timer;
@@ -468,7 +475,7 @@ static int s5_presort(struct fastbuf *dest, void *buf, size_t bufsize)
     n++;
   if (!n)
     return 0;
-  s5p_sort(a, n, NULL, 0);
+  s5p_sort(a, n);
   uns i = 0;
   while (i < n)
     {
@@ -663,9 +670,20 @@ main(int argc, char **argv)
          goto usage;
        break;
       case 't':
-       t = atol(optarg);
-       if (t >= TMAX)
-         goto usage;
+         {
+           char *w[32];
+           int f = sepsplit(optarg, ',', w, ARRAY_SIZE(w));
+           if (f < 0)
+             goto usage;
+           t = 0;
+           for (int i=0; i<f; i++)
+             {
+               int j = atol(w[i]);
+               if (j >= TMAX)
+                 goto usage;
+               t |= 1 << j;
+             }
+         }
        break;
       case 'v':
        sorter_trace++;
@@ -678,10 +696,8 @@ main(int argc, char **argv)
   if (optind != argc)
     goto usage;
 
-  if (t != ~0U)
-    run_test(t, size);
-  else
-    for (uns i=0; i<TMAX; i++)
+  for (uns i=0; i<TMAX; i++)
+    if (t & (1 << i))
       run_test(i, size);
 
   return 0;