1*99a11976SMattias Rönnblom /* SPDX-License-Identifier: BSD-3-Clause 2*99a11976SMattias Rönnblom * Copyright(c) 2023 Ericsson AB 3*99a11976SMattias Rönnblom */ 4*99a11976SMattias Rönnblom 5*99a11976SMattias Rönnblom #include <errno.h> 6*99a11976SMattias Rönnblom #include <stdbool.h> 7*99a11976SMattias Rönnblom #include <stdint.h> 8*99a11976SMattias Rönnblom #include <sys/types.h> 9*99a11976SMattias Rönnblom 10*99a11976SMattias Rönnblom #include "rte_bitset.h" 11*99a11976SMattias Rönnblom 12*99a11976SMattias Rönnblom ssize_t 13*99a11976SMattias Rönnblom rte_bitset_to_str(const uint64_t *bitset, size_t num_bits, char *buf, size_t capacity) 14*99a11976SMattias Rönnblom { 15*99a11976SMattias Rönnblom size_t i; 16*99a11976SMattias Rönnblom 17*99a11976SMattias Rönnblom if (capacity < (num_bits + 1)) 18*99a11976SMattias Rönnblom return -EINVAL; 19*99a11976SMattias Rönnblom 20*99a11976SMattias Rönnblom for (i = 0; i < num_bits; i++) { 21*99a11976SMattias Rönnblom bool value; 22*99a11976SMattias Rönnblom 23*99a11976SMattias Rönnblom value = rte_bitset_test(bitset, num_bits - 1 - i); 24*99a11976SMattias Rönnblom buf[i] = value ? '1' : '0'; 25*99a11976SMattias Rönnblom } 26*99a11976SMattias Rönnblom 27*99a11976SMattias Rönnblom buf[num_bits] = '\0'; 28*99a11976SMattias Rönnblom 29*99a11976SMattias Rönnblom return num_bits + 1; 30*99a11976SMattias Rönnblom } 31