mirror of
https://salsa.debian.org/xorg-team/lib/pixman
synced 2026-01-14 11:47:52 +00:00
Some of the tests are quite heavy CPU users and may benefit from using multiple CPU cores, so the programs from 'test' directory are now built with OpenMP support. OpenMP is easy to use, portable and also takes care of making a decision about how many threads to spawn.
56 lines
1.1 KiB
C
56 lines
1.1 KiB
C
#include <stdlib.h>
|
|
#include <config.h>
|
|
#include "pixman-private.h" /* For 'inline' definition */
|
|
|
|
/* A primitive pseudorandom number generator,
|
|
* taken from POSIX.1-2001 example
|
|
*/
|
|
|
|
extern uint32_t lcg_seed;
|
|
#pragma omp threadprivate(lcg_seed)
|
|
|
|
static inline uint32_t
|
|
lcg_rand (void)
|
|
{
|
|
lcg_seed = lcg_seed * 1103515245 + 12345;
|
|
return ((uint32_t)(lcg_seed / 65536) % 32768);
|
|
}
|
|
|
|
static inline void
|
|
lcg_srand (uint32_t seed)
|
|
{
|
|
lcg_seed = seed;
|
|
}
|
|
|
|
static inline uint32_t
|
|
lcg_rand_n (int max)
|
|
{
|
|
return lcg_rand () % max;
|
|
}
|
|
|
|
|
|
/* CRC 32 computation
|
|
*/
|
|
uint32_t
|
|
compute_crc32 (uint32_t in_crc32,
|
|
const void *buf,
|
|
size_t buf_len);
|
|
|
|
/* perform endian conversion of pixel data
|
|
*/
|
|
void
|
|
image_endian_swap (pixman_image_t *img, int bpp);
|
|
|
|
/* Generate n_bytes random bytes in malloced memory */
|
|
uint8_t *
|
|
make_random_bytes (int n_bytes);
|
|
|
|
/* main body of the fuzzer test */
|
|
int
|
|
fuzzer_test_main (const char *test_name,
|
|
int default_number_of_iterations,
|
|
uint32_t expected_checksum,
|
|
uint32_t (*test_function)(int testnum, int verbose),
|
|
int argc,
|
|
const char *argv[]);
|