numam-dpdk/lib/eal/include/rte_random.h
Mattias Rönnblom 15a1e00a65 eal: promote random generator with upper bound to stable
Remove experimental tag from rte_rand_max().

Signed-off-by: Mattias Rönnblom <mattias.ronnblom@ericsson.com>
Acked-by: Ray Kinsella <mdr@ashroe.eu>
2021-10-02 11:12:19 +02:00

74 lines
1.4 KiB
C

/* SPDX-License-Identifier: BSD-3-Clause
* Copyright(c) 2010-2014 Intel Corporation
*/
#ifndef _RTE_RANDOM_H_
#define _RTE_RANDOM_H_
/**
* @file
*
* Pseudo-random Generators in RTE
*/
#ifdef __cplusplus
extern "C" {
#endif
#include <stdint.h>
#include <rte_compat.h>
/**
* Seed the pseudo-random generator.
*
* The generator is automatically seeded by the EAL init with a timer
* value. It may need to be re-seeded by the user with a real random
* value.
*
* This function is not multi-thread safe in regards to other
* rte_srand() calls, nor is it in relation to concurrent rte_rand()
* calls.
*
* @param seedval
* The value of the seed.
*/
void
rte_srand(uint64_t seedval);
/**
* Get a pseudo-random value.
*
* The generator is not cryptographically secure.
*
* If called from lcore threads, this function is thread-safe.
*
* @return
* A pseudo-random value between 0 and (1<<64)-1.
*/
uint64_t
rte_rand(void);
/**
* Generates a pseudo-random number with an upper bound.
*
* This function returns an uniformly distributed (unbiased) random
* number less than a user-specified maximum value.
*
* If called from lcore threads, this function is thread-safe.
*
* @param upper_bound
* The upper bound of the generated number.
* @return
* A pseudo-random value between 0 and (upper_bound-1).
*/
uint64_t
rte_rand_max(uint64_t upper_bound);
#ifdef __cplusplus
}
#endif
#endif /* _RTE_RANDOM_H_ */