/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __BPF_RAND__
#define __BPF_RAND__
#include <stdint.h>
#include <stdlib.h>
#include <time.h>
static inline uint64_t bpf_rand_mask(uint64_t mask)
{
return (((uint64_t)(uint32_t)rand()) |
((uint64_t)(uint32_t)rand() << 32 )) & mask;
}
#define bpf_rand_ux(x, m) \
static inline uint64_t bpf_rand_u## x(int shift) \
{ \
return bpf_rand_mask((m)) << shift; \
}
bpf_rand_ux( 8 , 0 xffULL)
bpf_rand_ux(16 , 0 xffffULL)
bpf_rand_ux(24 , 0 xffffffULL)
bpf_rand_ux(32 , 0 xffffffffULL)
bpf_rand_ux(40 , 0 xffffffffffULL)
bpf_rand_ux(48 , 0 xffffffffffffULL)
bpf_rand_ux(56 , 0 xffffffffffffffULL)
bpf_rand_ux(64 , 0 xffffffffffffffffULL)
static inline void bpf_semi_rand_init(void )
{
srand(time(NULL));
}
static inline uint64_t bpf_semi_rand_get(void )
{
switch (rand() % 39 ) {
case 0 : return 0 x000000ff00000000ULL | bpf_rand_u8(0 );
case 1 : return 0 xffffffff00000000ULL | bpf_rand_u16(0 );
case 2 : return 0 x00000000ffff0000ULL | bpf_rand_u16(0 );
case 3 : return 0 x8000000000000000ULL | bpf_rand_u32(0 );
case 4 : return 0 x00000000f0000000ULL | bpf_rand_u32(0 );
case 5 : return 0 x0000000100000000ULL | bpf_rand_u24(0 );
case 6 : return 0 x800ff00000000000ULL | bpf_rand_u32(0 );
case 7 : return 0 x7fffffff00000000ULL | bpf_rand_u32(0 );
case 8 : return 0 xffffffffffffff00ULL ^ bpf_rand_u32(24 );
case 9 : return 0 xffffffffffffff00ULL | bpf_rand_u8(0 );
case 10 : return 0 x0000000010000000ULL | bpf_rand_u32(0 );
case 11 : return 0 xf000000000000000ULL | bpf_rand_u8(0 );
case 12 : return 0 x0000f00000000000ULL | bpf_rand_u8(8 );
case 13 : return 0 x000000000f000000ULL | bpf_rand_u8(16 );
case 14 : return 0 x0000000000000f00ULL | bpf_rand_u8(32 );
case 15 : return 0 x00fff00000000f00ULL | bpf_rand_u8(48 );
case 16 : return 0 x00007fffffffffffULL ^ bpf_rand_u32(1 );
case 17 : return 0 xffff800000000000ULL | bpf_rand_u8(4 );
case 18 : return 0 xffff800000000000ULL | bpf_rand_u8(20 );
case 19 : return (0 xffffffc000000000ULL + 0 x80000ULL) | bpf_rand_u32(0 );
case 20 : return (0 xffffffc000000000ULL - 0 x04000000ULL) | bpf_rand_u32(0 );
case 21 : return 0 x0000000000000000ULL | bpf_rand_u8(55 ) | bpf_rand_u32(20 );
case 22 : return 0 xffffffffffffffffULL ^ bpf_rand_u8(3 ) ^ bpf_rand_u32(40 );
case 23 : return 0 x0000000000000000ULL | bpf_rand_u8(bpf_rand_u8(0 ) % 64 );
case 24 : return 0 x0000000000000000ULL | bpf_rand_u16(bpf_rand_u8(0 ) % 64 );
case 25 : return 0 xffffffffffffffffULL ^ bpf_rand_u8(bpf_rand_u8(0 ) % 64 );
case 26 : return 0 xffffffffffffffffULL ^ bpf_rand_u40(bpf_rand_u8(0 ) % 64 );
case 27 : return 0 x0000800000000000ULL;
case 28 : return 0 x8000000000000000ULL;
case 29 : return 0 x0000000000000000ULL;
case 30 : return 0 xffffffffffffffffULL;
case 31 : return bpf_rand_u16(bpf_rand_u8(0 ) % 64 );
case 32 : return bpf_rand_u24(bpf_rand_u8(0 ) % 64 );
case 33 : return bpf_rand_u32(bpf_rand_u8(0 ) % 64 );
case 34 : return bpf_rand_u40(bpf_rand_u8(0 ) % 64 );
case 35 : return bpf_rand_u48(bpf_rand_u8(0 ) % 64 );
case 36 : return bpf_rand_u56(bpf_rand_u8(0 ) % 64 );
case 37 : return bpf_rand_u64(bpf_rand_u8(0 ) % 64 );
default : return bpf_rand_u64(0 );
}
}
#endif /* __BPF_RAND__ */
Messung V0.5 in Prozent C=97 H=93 G=94
¤ Dauer der Verarbeitung: 0.9 Sekunden
(vorverarbeitet am 2026-06-07)
¤
*© Formatika GbR, Deutschland