diff options
| author | Louis Burda <quent.burda@gmail.com> | 2022-07-04 16:26:35 +0200 |
|---|---|---|
| committer | Louis Burda <quent.burda@gmail.com> | 2022-07-04 16:26:35 +0200 |
| commit | cee2126b8f316677ebee57e19fe7d50d09c066d1 (patch) | |
| tree | 1fd0eb3e008ad9cdb138df93f450973ea69e05eb /src/util.c | |
| download | cachepc-cee2126b8f316677ebee57e19fe7d50d09c066d1.tar.gz cachepc-cee2126b8f316677ebee57e19fe7d50d09c066d1.zip | |
Initial out-of-tree setup
Diffstat (limited to 'src/util.c')
| -rw-r--r-- | src/util.c | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/src/util.c b/src/util.c new file mode 100644 index 0000000..83f265b --- /dev/null +++ b/src/util.c @@ -0,0 +1,40 @@ +#include "util.h" + +#include <linux/random.h> + +void +random_perm(uint32_t *arr, uint32_t arr_len) +{ + uint32_t i, idx, tmp; + + for (i = arr_len - 1; i > 0; --i) { + get_random_bytes(&idx, 4); + idx = idx % i; + + tmp = arr[idx]; + arr[i] = arr[idx]; + arr[idx] = tmp; + } +} + +void +gen_random_indices(uint32_t *arr, uint32_t arr_len) +{ + uint32_t i; + + for (i = 0; i < arr_len; ++i) + arr[i] = i; + random_perm(arr, arr_len); +} + + +bool is_in_arr(uint32_t elem, uint32_t *arr, uint32_t arr_len) { + uint32_t i; + + for (i = 0; i < arr_len; ++i) { + if (arr[i] == elem) + return true; + } + + return false; +} |
