#include #include #include #include #include #include "idr.h" #include "salsarnd.h" #define PUHVI (1000000) int main(void) { struct idr test_idr; int ids_inuse = 0; int linus[PUHVI]; int linus_id[PUHVI]; int i; int err = 0; idr_init(&test_idr); for (i = 0; i < ARRAY_SIZE(linus); i++) { retry: if (!idr_pre_get(&test_idr)) { fprintf(stderr, "idr_pre_get failed\n"); break; } err = idr_get_new_above(&test_idr, &linus[i], get_random32() % (ARRAY_SIZE(linus)*10), &linus_id[i]); if (err < 0) { if (err == -EAGAIN) goto retry; break; } ids_inuse++; } fprintf(stdout, "%d %d\n", ids_inuse, err); for (i = 0; i < ids_inuse; i++) { idr_remove(&test_idr, linus_id[i]); } fflush(stdout); return 0; }