| /* |
| * Copyright (c) 2021 Space Cubics, LLC. |
| * |
| * SPDX-License-Identifier: Apache-2.0 |
| */ |
| |
| #include <stdlib.h> |
| #include <zephyr/sys/libc-hooks.h> |
| |
| #define OUTPUT_BITS (0x7fffffffU) |
| #define MULTIPLIER (1103515245U) |
| #define INCREMENT (12345U) |
| |
| int rand_r(unsigned int *seed) |
| { |
| *seed = (MULTIPLIER * *seed + INCREMENT) & OUTPUT_BITS; |
| |
| return *seed; |
| } |
| |
| #ifdef CONFIG_MINIMAL_LIBC_NON_REENTRANT_FUNCTIONS |
| static Z_LIBC_DATA unsigned int srand_seed = 1; |
| |
| void srand(unsigned int s) |
| { |
| srand_seed = s; |
| } |
| |
| int rand(void) |
| { |
| return rand_r(&srand_seed); |
| } |
| #endif /* CONFIG_MINIMAL_LIBC_NON_REENTRANT_FUNCTIONS */ |