| |
| /* |
| * Copyright (C) Igor Sysoev |
| * Copyright (C) NGINX, Inc. |
| */ |
| |
| #ifndef _NJS_RANDOM_H_INCLUDED_ |
| #define _NJS_RANDOM_H_INCLUDED_ |
| |
| |
| typedef struct { |
| int32_t count; |
| njs_pid_t pid; |
| uint8_t i; |
| uint8_t j; |
| uint8_t s[256]; |
| } njs_random_t; |
| |
| |
| /* |
| * The njs_random_t structure must be either initialized with zeros |
| * or initialized by njs_random_init() function. The later is intended |
| * mainly for unit test. njs_random() automatically stirs itself if |
| * process pid changed after fork(). This pid testing can be disabled by |
| * passing -1 as the pid argument to njs_random_init() or njs_random_stir() |
| * functions. The testing can be later enabled by passing any positive |
| * number, for example, a real pid number. |
| */ |
| |
| NJS_EXPORT void njs_random_init(njs_random_t *r, njs_pid_t pid); |
| NJS_EXPORT void njs_random_stir(njs_random_t *r, njs_pid_t pid); |
| NJS_EXPORT void njs_random_add(njs_random_t *r, const u_char *key, |
| uint32_t len); |
| NJS_EXPORT uint32_t njs_random(njs_random_t *r); |
| |
| |
| #endif /* _NJS_RANDOM_H_INCLUDED_ */ |