1*d34f2b11SLawrence Tang /** 2*d34f2b11SLawrence Tang * Defines utility functions for testing CPER-JSON IR output from the cper-parse library. 3*d34f2b11SLawrence Tang * 4*d34f2b11SLawrence Tang * Author: Lawrence.Tang@arm.com 5*d34f2b11SLawrence Tang **/ 6*d34f2b11SLawrence Tang 7*d34f2b11SLawrence Tang #include <stdio.h> 8*d34f2b11SLawrence Tang #include <stdlib.h> 9*d34f2b11SLawrence Tang #include "test-utils.hpp" 10*d34f2b11SLawrence Tang extern "C" { 11*d34f2b11SLawrence Tang #include "../edk/BaseTypes.h" 12*d34f2b11SLawrence Tang #include "../generator/cper-generate.h" 13*d34f2b11SLawrence Tang } 14*d34f2b11SLawrence Tang 15*d34f2b11SLawrence Tang //Returns a ready-for-use memory stream containing a CPER record with the given sections inside. 16*d34f2b11SLawrence Tang FILE* generate_record_memstream(const char** types, UINT16 num_types, char** buf, size_t* buf_size) 17*d34f2b11SLawrence Tang { 18*d34f2b11SLawrence Tang //Open a memory stream. 19*d34f2b11SLawrence Tang FILE* stream = open_memstream(buf, buf_size); 20*d34f2b11SLawrence Tang 21*d34f2b11SLawrence Tang //Generate a section to the stream, close & return. 22*d34f2b11SLawrence Tang generate_cper_record((char**)types, num_types, stream); 23*d34f2b11SLawrence Tang fclose(stream); 24*d34f2b11SLawrence Tang 25*d34f2b11SLawrence Tang //Return fmemopen() buffer for reading. 26*d34f2b11SLawrence Tang return fmemopen(*buf, *buf_size, "r"); 27*d34f2b11SLawrence Tang }