#include "lib/lib.h"
#include "lib/fastbuf.h"
#include "lib/mempool.h"
+#include "lib/stkstring.h"
#include "lib/sorter/common.h"
#include <fcntl.h>
}
void
-sorter_alloc_buf(struct sort_context *ctx)
+sorter_prepare_buf(struct sort_context *ctx)
{
- if (ctx->big_buf)
- return;
u64 bs = MAX(sorter_bufsize/2, 1);
bs = ALIGN_TO(bs, (u64)CPU_PAGE_SIZE);
- ctx->big_buf = big_alloc(2*bs);
ctx->big_buf_size = 2*bs;
- ctx->big_buf_half = ((byte*) ctx->big_buf) + bs;
ctx->big_buf_half_size = bs;
- SORT_XTRACE(2, "Allocated sorting buffer (2*%jd bytes)", (uintmax_t) bs);
+}
+
+void
+sorter_alloc_buf(struct sort_context *ctx)
+{
+ if (ctx->big_buf)
+ return;
+ ctx->big_buf = big_alloc(ctx->big_buf_size);
+ ctx->big_buf_half = ((byte*) ctx->big_buf) + ctx->big_buf_half_size;
+ SORT_XTRACE(2, "Allocated sorting buffer (2*%s)", stk_fsize(ctx->big_buf_half_size));
}
void
ctx->big_buf = NULL;
SORT_XTRACE(2, "Freed sorting buffer");
}
-
-void
-format_size(byte *buf, u64 x)
-{
- if (x < 10<<10)
- sprintf(buf, "%.1fK", (double)x/(1<<10));
- else if (x < 1<<20)
- sprintf(buf, "%dK", (int)(x/(1<<10)));
- else if (x < 10<<20)
- sprintf(buf, "%.1fM", (double)x/(1<<20));
- else if (x < 1<<30)
- sprintf(buf, "%dM", (int)(x/(1<<20)));
- else if (x < (u64)10<<30)
- sprintf(buf, "%.1fG", (double)x/(1<<30));
- else if (x != ~(u64)0)
- sprintf(buf, "%dG", (int)(x/(1<<30)));
- else
- strcpy(buf, "unknown");
-}