4 int ulcmp(void*, void*);
5 void swapem(ulong*, long);
14 main(int argc, char *argv[])
16 long i, l, x, lobits, hibits, tot;
23 print("usage: disk/exsort [-w] [file]\n");
35 f = open(file, ORDWR);
37 f = open(file, OREAD);
39 print("cant open %s: %r\n", file);
42 l = seek(f, 0, 2) / sizeof(long);
44 b = malloc(l*sizeof(long));
46 print("cant malloc %s: %r\n", file);
50 if(read(f, b, l*sizeof(long)) != l*sizeof(long)) {
51 print("short read %s: %r\n", file);
65 print("lobits = %6ld\n", lobits);
66 print("hibits = %6ld\n", hibits);
73 qsort(b, l, sizeof(ulong), ulcmp);
76 for(j=0; j<100; j++) {
87 print("disk %2d %6ld blocks\n", j, x);
91 print("total %6ld blocks\n", tot);
98 if(write(f, b, l*sizeof(long)) != l*sizeof(long)) {
99 print("short write %s\n", file);
108 ulcmp(void *va, void *vb)
123 swapem(ulong *b, long l)
128 for(i=0; i<l; i++, b++) {
130 x = (((a>>0) & 0xff) << 24) |
131 (((a>>8) & 0xff) << 16) |
132 (((a>>16) & 0xff) << 8) |
133 (((a>>24) & 0xff) << 0);