This change retains "or later" state! No licensing _changes_ here, only form is adjusted (article, space between "GPL" and "v2" and so on). Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
		
			
				
	
	
		
			34 lines
		
	
	
		
			733 B
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			34 lines
		
	
	
		
			733 B
		
	
	
	
		
			C
		
	
	
	
	
	
/* vi: set sw=4 ts=4: */
 | 
						|
/*
 | 
						|
 * $RANDOM support.
 | 
						|
 *
 | 
						|
 * Copyright (C) 2009 Denys Vlasenko
 | 
						|
 *
 | 
						|
 * Licensed under GPLv2, see file LICENSE in this source tree.
 | 
						|
 */
 | 
						|
#ifndef SHELL_RANDOM_H
 | 
						|
#define SHELL_RANDOM_H 1
 | 
						|
 | 
						|
PUSH_AND_SET_FUNCTION_VISIBILITY_TO_HIDDEN
 | 
						|
 | 
						|
typedef struct random_t {
 | 
						|
	/* Random number generators */
 | 
						|
	int32_t galois_LFSR; /* Galois LFSR (fast but weak). signed! */
 | 
						|
	uint32_t LCG;        /* LCG (fast but weak) */
 | 
						|
} random_t;
 | 
						|
 | 
						|
#define UNINITED_RANDOM_T(rnd) \
 | 
						|
	((rnd)->galois_LFSR == 0)
 | 
						|
 | 
						|
#define INIT_RANDOM_T(rnd, nonzero, v) \
 | 
						|
	((rnd)->galois_LFSR = (nonzero), (rnd)->LCG = (v))
 | 
						|
 | 
						|
#define CLEAR_RANDOM_T(rnd) \
 | 
						|
	((rnd)->galois_LFSR = 0)
 | 
						|
 | 
						|
uint32_t next_random(random_t *rnd) FAST_FUNC;
 | 
						|
 | 
						|
POP_SAVED_FUNCTION_VISIBILITY
 | 
						|
 | 
						|
#endif
 |