xref: /openbmc/libcper/generator/gen-utils.c (revision 02c801a5)
1*02c801a5SLawrence Tang /**
2*02c801a5SLawrence Tang  * Utility functions to assist in generating psuedo-random CPER sections.
3*02c801a5SLawrence Tang  *
4*02c801a5SLawrence Tang  * Author: Lawrence.Tang@arm.com
5*02c801a5SLawrence Tang  **/
6*02c801a5SLawrence Tang #include <stdlib.h>
7*02c801a5SLawrence Tang #include <time.h>
8*02c801a5SLawrence Tang #include "../edk/BaseTypes.h"
9*02c801a5SLawrence Tang #include "gen-utils.h"
10*02c801a5SLawrence Tang 
11*02c801a5SLawrence Tang //Generates a random section of the given byte size, saving the result to the given location.
12*02c801a5SLawrence Tang //Returns the length of the section as passed in.
13*02c801a5SLawrence Tang size_t generate_random_section(void** location, size_t size)
14*02c801a5SLawrence Tang {
15*02c801a5SLawrence Tang     *location = generate_random_bytes(size);
16*02c801a5SLawrence Tang     return size;
17*02c801a5SLawrence Tang }
18*02c801a5SLawrence Tang 
19*02c801a5SLawrence Tang //Generates a random byte allocation of the given size.
20*02c801a5SLawrence Tang UINT8* generate_random_bytes(size_t size)
21*02c801a5SLawrence Tang {
22*02c801a5SLawrence Tang     UINT8* bytes = malloc(size);
23*02c801a5SLawrence Tang     for (size_t i = 0; i < size; i++)
24*02c801a5SLawrence Tang         bytes[i] = rand();
25*02c801a5SLawrence Tang     return bytes;
26*02c801a5SLawrence Tang }
27*02c801a5SLawrence Tang 
28*02c801a5SLawrence Tang //Initializes the random seed for rand() using the current time.
29*02c801a5SLawrence Tang void init_random()
30*02c801a5SLawrence Tang {
31*02c801a5SLawrence Tang     srand((unsigned int)time(NULL));
32*02c801a5SLawrence Tang }