projects
/
fio.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
t/axmap: add pre/post bit set checks
[fio.git]
/
t
/
axmap.c
diff --git
a/t/axmap.c
b/t/axmap.c
index 1f8c3e9a90f6855878f37c0fb574217f6363094e..61e3220729d38da5a4246ab9e611082f5ecbae66 100644
(file)
--- a/
t/axmap.c
+++ b/
t/axmap.c
@@
-6,10
+6,7
@@
#include <inttypes.h>
#include "../lib/lfsr.h"
#include <inttypes.h>
#include "../lib/lfsr.h"
-
-struct axmap;
-void axmap_set(struct axmap *, uint64_t);
-struct axmap *axmap_new(uint64_t size);
+#include "../lib/axmap.h"
void *smalloc(size_t size)
{
void *smalloc(size_t size)
{
@@
-24,22
+21,45
@@
void sfree(void *ptr)
int main(int argc, char *argv[])
{
struct fio_lfsr lfsr;
int main(int argc, char *argv[])
{
struct fio_lfsr lfsr;
- size_t size = (1UL << 28) - 200;
+ size_t
osize,
size = (1UL << 28) - 200;
struct axmap *map;
struct axmap *map;
+ uint64_t ff;
+ int seed = 1;
- if (argc > 1)
+ if (argc > 1)
{
size = strtoul(argv[1], NULL, 10);
size = strtoul(argv[1], NULL, 10);
+ if (argc > 2)
+ seed = strtoul(argv[2], NULL, 10);
+ }
printf("Using %llu entries\n", (unsigned long long) size);
printf("Using %llu entries\n", (unsigned long long) size);
- lfsr_init(&lfsr, size);
+ lfsr_init(&lfsr, size
, seed
);
map = axmap_new(size);
map = axmap_new(size);
+ osize = size;
while (size--) {
uint64_t val;
while (size--) {
uint64_t val;
- lfsr_next(&lfsr, &val);
+ if (lfsr_next(&lfsr, &val, osize)) {
+ printf("lfsr: short loop\n");
+ break;
+ }
+ if (axmap_isset(map, val)) {
+ printf("bit already set\n");
+ break;
+ }
axmap_set(map, val);
axmap_set(map, val);
+ if (!axmap_isset(map, val)) {
+ printf("bit not set\n");
+ break;
+ }
+ }
+
+ ff = axmap_next_free(map, osize);
+ if (ff != (uint64_t) -1ULL) {
+ printf("axmap_next_free broken: got %llu\n", (unsigned long long) ff);
+ return 1;
}
return 0;
}
return 0;