diff --git a/abi/aarch64/gcc.dump b/abi/aarch64/gcc.dump index 44f8a7ecb..f2aceced9 100644 --- a/abi/aarch64/gcc.dump +++ b/abi/aarch64/gcc.dump @@ -4,6 +4,7 @@ $VAR1 = { 'Arch' => 'AARCH64', 'GccVersion' => '13.1.1', 'Headers' => { + 'af-mctp.h' => 1, 'base.h' => 1, 'bios.h' => 1, 'bios_table.h' => 1, @@ -12,10 +13,13 @@ $VAR1 = { 'fru.h' => 1, 'host.h' => 1, 'instance-id.h' => 1, + 'mctp-demux.h' => 1, 'pdr.h' => 1, + 'pdr_oem_ibm.h' => 1, 'platform.h' => 1, 'platform_oem_ibm.h' => 1, 'pldm.h' => 1, + 'transport.h' => 1, 'utils.h' => 1 }, 'Language' => 'C', @@ -23,11 +27,47 @@ $VAR1 = { 'LibraryVersion' => '0.2.0', 'NameSpaces' => {}, 'Needed' => { + 'ld-linux-aarch64.so.1' => 1, 'libc.so.6' => 1 }, 'PublicABI' => '1', 'Sources' => {}, 'SymbolInfo' => { + '100033' => { + 'Header' => 'pdr.h', + 'Param' => { + '0' => { + 'name' => 'repo', + 'type' => '83649' + }, + '1' => { + 'name' => 'data', + 'type' => '6087' + }, + '2' => { + 'name' => 'size', + 'type' => '180' + }, + '3' => { + 'name' => 'record_handle', + 'type' => '180' + }, + '4' => { + 'name' => 'is_remote', + 'type' => '6265' + }, + '5' => { + 'name' => 'prev_record_handle', + 'type' => '180' + }, + '6' => { + 'name' => 'terminus_handle', + 'type' => '4895' + } + }, + 'Return' => '180', + 'ShortName' => 'pldm_pdr_add_hotplug_record' + }, '10023' => { 'Header' => 'bios.h', 'Param' => { @@ -71,6 +111,93 @@ $VAR1 = { 'Return' => '74', 'ShortName' => 'encode_set_date_time_req' }, + '100455' => { + 'Header' => 'pdr.h', + 'Param' => { + '0' => { + 'name' => 'repo', + 'type' => '83649' + }, + '1' => { + 'name' => 'data', + 'type' => '6087' + }, + '2' => { + 'name' => 'size', + 'type' => '180' + }, + '3' => { + 'name' => 'record_handle', + 'type' => '180' + }, + '4' => { + 'name' => 'is_remote', + 'type' => '6265' + }, + '5' => { + 'name' => 'terminus_handle', + 'type' => '4895' + } + }, + 'Return' => '180', + 'ShortName' => 'pldm_pdr_add' + }, + '103905' => { + 'Header' => 'utils.h', + 'Param' => { + '0' => { + 'name' => 'dec', + 'type' => '180' + } + }, + 'Return' => '180', + 'ShortName' => 'dec2bcd32' + }, + '103997' => { + 'Header' => 'utils.h', + 'Param' => { + '0' => { + 'name' => 'bcd', + 'type' => '180' + } + }, + 'Return' => '180', + 'ShortName' => 'bcd2dec32' + }, + '104407' => { + 'Header' => 'utils.h', + 'Param' => { + '0' => { + 'name' => 'version', + 'type' => '3250' + }, + '1' => { + 'name' => 'buffer', + 'type' => '11261' + }, + '2' => { + 'name' => 'buffer_size', + 'type' => '123' + } + }, + 'Return' => '12204', + 'ShortName' => 'ver2str' + }, + '104535' => { + 'Header' => 'utils.h', + 'Param' => { + '0' => { + 'name' => 'data', + 'type' => '1434' + }, + '1' => { + 'name' => 'size', + 'type' => '123' + } + }, + 'Return' => '168', + 'ShortName' => 'crc8' + }, '10505' => { 'Header' => 'bios.h', 'Param' => { @@ -115,6 +242,81 @@ $VAR1 = { 'Return' => '74', 'ShortName' => 'decode_get_date_time_resp' }, + '105806' => { + 'Header' => 'instance-id.h', + 'Param' => { + '0' => { + 'name' => 'ctx', + 'type' => '106014' + }, + '1' => { + 'name' => 'tid', + 'type' => '105131' + }, + '2' => { + 'name' => 'iid', + 'type' => '105143' + } + }, + 'Return' => '74', + 'ShortName' => 'pldm_instance_id_free' + }, + '106019' => { + 'Header' => 'instance-id.h', + 'Param' => { + '0' => { + 'name' => 'ctx', + 'type' => '106014' + }, + '1' => { + 'name' => 'tid', + 'type' => '105131' + }, + '2' => { + 'name' => 'iid', + 'type' => '106420' + } + }, + 'Return' => '74', + 'ShortName' => 'pldm_instance_id_alloc' + }, + '106425' => { + 'Header' => 'instance-id.h', + 'Param' => { + '0' => { + 'name' => 'ctx', + 'type' => '106014' + } + }, + 'Return' => '74', + 'ShortName' => 'pldm_instance_db_destroy' + }, + '106510' => { + 'Header' => 'instance-id.h', + 'Param' => { + '0' => { + 'name' => 'ctx', + 'type' => '106596' + } + }, + 'Return' => '74', + 'ShortName' => 'pldm_instance_db_init_default' + }, + '106601' => { + 'Header' => 'instance-id.h', + 'Param' => { + '0' => { + 'name' => 'ctx', + 'type' => '106596' + }, + '1' => { + 'name' => 'dbpath', + 'type' => '12199' + } + }, + 'Return' => '74', + 'ShortName' => 'pldm_instance_db_init' + }, '10693' => { 'Header' => 'bios.h', 'Param' => { @@ -158,318 +360,395 @@ $VAR1 = { 'Return' => '74', 'ShortName' => 'encode_get_date_time_resp' }, - '109279' => { - 'Header' => 'file_io.h', + '107365' => { + 'Header' => 'transport.h', 'Param' => { '0' => { - 'name' => 'instance_id', - 'type' => '168' + 'name' => 'transport', + 'type' => '107402' }, '1' => { - 'name' => 'completion_code', - 'type' => '168' + 'name' => 'tid', + 'type' => '105131' }, '2' => { - 'name' => 'msg', - 'type' => '1615' + 'name' => 'pldm_req_msg', + 'type' => '1434' + }, + '3' => { + 'name' => 'req_msg_len', + 'type' => '123' } }, - 'Return' => '74', - 'ShortName' => 'encode_new_file_with_metadata_resp' + 'Return' => '107191', + 'ShortName' => 'pldm_transport_send_msg' }, - '109462' => { - 'Header' => 'file_io.h', + '107412' => { + 'Header' => 'transport.h', 'Param' => { '0' => { - 'name' => 'msg', - 'type' => '2029' + 'name' => 'transport', + 'type' => '107402' }, '1' => { - 'name' => 'payload_length', - 'type' => '123' + 'name' => 'tid', + 'type' => '105131' }, '2' => { - 'name' => 'file_type', - 'type' => '8294' + 'name' => 'pldm_req_msg', + 'type' => '1434' }, '3' => { - 'name' => 'file_handle', - 'type' => '2039' + 'name' => 'req_msg_len', + 'type' => '123' }, '4' => { - 'name' => 'length', - 'type' => '54682' + 'name' => 'pldm_resp_msg', + 'type' => '16592' }, '5' => { - 'name' => 'file_meta_data_1', - 'type' => '2039' - }, - '6' => { - 'name' => 'file_meta_data_2', - 'type' => '2039' - }, - '7' => { - 'name' => 'file_meta_data_3', - 'type' => '2039' - }, - '8' => { - 'name' => 'file_meta_data_4', - 'offset' => '0', - 'type' => '2039' + 'name' => 'resp_msg_len', + 'type' => '8822' } }, - 'Return' => '74', - 'ShortName' => 'decode_new_file_with_metadata_req' + 'Return' => '107191', + 'ShortName' => 'pldm_transport_send_recv_msg' }, - '109680' => { - 'Header' => 'file_io.h', + '107488' => { + 'Header' => 'mctp-demux.h', 'Param' => { '0' => { - 'name' => 'msg', - 'type' => '2029' - }, - '1' => { - 'name' => 'payload_length', - 'type' => '123' - }, - '2' => { - 'name' => 'completion_code', - 'type' => '2034' + 'name' => 'ctx', + 'type' => '107360' } }, - 'Return' => '74', - 'ShortName' => 'decode_new_file_with_metadata_resp' + 'Return' => '1', + 'ShortName' => 'pldm_transport_mctp_demux_destroy' }, - '10972' => { - 'Header' => 'bios.h', - 'Param' => { - '0' => { - 'name' => 'instance_id', - 'type' => '168' - }, - '1' => { - 'name' => 'msg', - 'type' => '1615' - } - }, - 'Return' => '74', - 'ShortName' => 'encode_get_date_time_req' - }, - '109787' => { - 'Header' => 'file_io.h', + '107506' => { + 'Header' => 'transport.h', 'Param' => { '0' => { - 'name' => 'instance_id', - 'type' => '168' + 'name' => 'transport', + 'type' => '107402' }, '1' => { - 'name' => 'file_type', - 'type' => '4895' + 'name' => 'tid', + 'type' => '105131' }, '2' => { - 'name' => 'file_handle', - 'type' => '180' + 'name' => 'pldm_resp_msg', + 'type' => '16592' }, '3' => { - 'name' => 'length', - 'type' => '45543' - }, - '4' => { - 'name' => 'file_meta_data_1', - 'type' => '180' - }, - '5' => { - 'name' => 'file_meta_data_2', - 'type' => '180' - }, - '6' => { - 'name' => 'file_meta_data_3', - 'type' => '180' + 'name' => 'resp_msg_len', + 'type' => '8822' + } + }, + 'Return' => '107191', + 'ShortName' => 'pldm_transport_recv_msg' + }, + '107543' => { + 'Header' => 'mctp-demux.h', + 'Param' => { + '0' => { + 'name' => 'ctx', + 'type' => '107360' }, - '7' => { - 'name' => 'file_meta_data_4', - 'type' => '180' + '1' => { + 'name' => 'tid', + 'type' => '105131' }, - '8' => { - 'name' => 'msg', - 'type' => '1615' + '2' => { + 'name' => 'eid', + 'type' => '107082' } }, 'Return' => '74', - 'ShortName' => 'encode_new_file_with_metadata_req' + 'ShortName' => 'pldm_transport_mctp_demux_map_tid' }, - '110080' => { - 'Header' => 'file_io.h', + '107575' => { + 'Header' => 'mctp-demux.h', 'Param' => { '0' => { - 'name' => 'instance_id', - 'type' => '168' + 'name' => 'ctx', + 'type' => '107360' + } + }, + 'Return' => '107402', + 'ShortName' => 'pldm_transport_mctp_demux_core' + }, + '107619' => { + 'Header' => 'mctp-demux.h', + 'Param' => { + '0' => { + 'name' => 'ctx', + 'type' => '107641' + } + }, + 'Return' => '74', + 'ShortName' => 'pldm_transport_mctp_demux_init' + }, + '107712' => { + 'Header' => 'pldm.h', + 'Param' => { + '0' => { + 'name' => 'eid', + 'type' => '107082' }, '1' => { - 'name' => 'completion_code', - 'type' => '168' + 'name' => 'mctp_fd', + 'type' => '74' }, '2' => { - 'name' => 'msg', - 'type' => '1615' + 'name' => 'pldm_req_msg', + 'type' => '6087' + }, + '3' => { + 'name' => 'req_msg_len', + 'type' => '123' } }, - 'Return' => '74', - 'ShortName' => 'encode_file_ack_with_meta_data_resp' + 'Return' => '107191', + 'ShortName' => 'pldm_send' }, - '110258' => { - 'Header' => 'file_io.h', + '108128' => { + 'Header' => 'pldm.h', 'Param' => { '0' => { - 'name' => 'msg', - 'type' => '2029' + 'name' => 'eid', + 'type' => '107082' }, '1' => { - 'name' => 'payload_length', - 'type' => '123' + 'name' => 'mctp_fd', + 'type' => '74' }, '2' => { - 'name' => 'file_type', - 'type' => '8294' + 'name' => 'pldm_req_msg', + 'type' => '6087' }, '3' => { - 'name' => 'file_handle', - 'type' => '2039' + 'name' => 'req_msg_len', + 'type' => '123' }, '4' => { - 'name' => 'file_status', - 'type' => '2034' + 'name' => 'pldm_resp_msg', + 'type' => '70937' }, '5' => { - 'name' => 'file_meta_data_1', - 'type' => '2039' - }, - '6' => { - 'name' => 'file_meta_data_2', - 'type' => '2039' - }, - '7' => { - 'name' => 'file_meta_data_3', - 'type' => '2039' - }, - '8' => { - 'name' => 'file_meta_data_4', - 'offset' => '0', - 'type' => '2039' + 'name' => 'resp_msg_len', + 'type' => '8822' } }, - 'Return' => '74', - 'ShortName' => 'decode_file_ack_with_meta_data_req' + 'Return' => '107191', + 'ShortName' => 'pldm_send_recv' }, - '110456' => { - 'Header' => 'file_io.h', + '108604' => { + 'Header' => 'pldm.h', 'Param' => { '0' => { - 'name' => 'msg', - 'type' => '2029' + 'name' => 'eid', + 'type' => '107082' }, '1' => { - 'name' => 'payload_length', - 'type' => '123' + 'name' => 'mctp_fd', + 'type' => '74' }, '2' => { - 'name' => 'completion_code', - 'type' => '2034' + 'name' => 'instance_id', + 'type' => '168' + }, + '3' => { + 'name' => 'pldm_resp_msg', + 'type' => '70937' + }, + '4' => { + 'name' => 'resp_msg_len', + 'type' => '8822' } }, - 'Return' => '74', - 'ShortName' => 'decode_file_ack_with_meta_data_resp' + 'Return' => '107191', + 'ShortName' => 'pldm_recv' }, - '110558' => { - 'Header' => 'file_io.h', + '108827' => { + 'Header' => 'pldm.h', 'Param' => { '0' => { - 'name' => 'instance_id', - 'type' => '168' + 'name' => 'eid', + 'type' => '107082' }, '1' => { - 'name' => 'file_type', - 'type' => '4895' + 'name' => 'mctp_fd', + 'type' => '74' }, '2' => { - 'name' => 'file_handle', - 'type' => '180' + 'name' => 'pldm_resp_msg', + 'type' => '70937' }, '3' => { - 'name' => 'file_status', - 'type' => '168' - }, - '4' => { - 'name' => 'file_meta_data_1', - 'type' => '180' - }, - '5' => { - 'name' => 'file_meta_data_2', - 'type' => '180' - }, - '6' => { - 'name' => 'file_meta_data_3', - 'type' => '180' + 'name' => 'resp_msg_len', + 'type' => '8822' + } + }, + 'Return' => '107191', + 'ShortName' => 'pldm_recv_any' + }, + '109269' => { + 'Header' => 'pldm.h', + 'Return' => '107191', + 'ShortName' => 'pldm_open' + }, + '10972' => { + 'Header' => 'bios.h', + 'Param' => { + '0' => { + 'name' => 'instance_id', + 'type' => '168' + }, + '1' => { + 'name' => 'msg', + 'type' => '1615' + } + }, + 'Return' => '74', + 'ShortName' => 'encode_get_date_time_req' + }, + '110903' => { + 'Header' => 'af-mctp.h', + 'Param' => { + '0' => { + 'name' => 'ctx', + 'type' => '110986' + } + }, + 'Return' => '1', + 'ShortName' => 'pldm_transport_af_mctp_destroy' + }, + '110991' => { + 'Header' => 'af-mctp.h', + 'Param' => { + '0' => { + 'name' => 'ctx', + 'type' => '111214' + } + }, + 'Return' => '74', + 'ShortName' => 'pldm_transport_af_mctp_init' + }, + '111817' => { + 'Header' => 'af-mctp.h', + 'Param' => { + '0' => { + 'name' => 'ctx', + 'type' => '110986' }, - '7' => { - 'name' => 'file_meta_data_4', - 'type' => '180' + '1' => { + 'name' => 'tid', + 'type' => '105131' }, - '8' => { - 'name' => 'msg', - 'type' => '1615' + '2' => { + 'name' => 'eid', + 'type' => '107082' } }, 'Return' => '74', - 'ShortName' => 'encode_file_ack_with_meta_data_req' + 'ShortName' => 'pldm_transport_af_mctp_unmap_tid' }, - '110851' => { - 'Header' => 'file_io.h', + '111895' => { + 'Header' => 'af-mctp.h', 'Param' => { '0' => { - 'name' => 'msg', - 'type' => '2029' + 'name' => 'ctx', + 'type' => '110986' }, '1' => { - 'name' => 'payload_length', - 'type' => '123' + 'name' => 'tid', + 'type' => '105131' }, '2' => { - 'name' => 'completion_code', - 'type' => '2034' + 'name' => 'eid', + 'type' => '107082' } }, 'Return' => '74', - 'ShortName' => 'decode_file_ack_resp' + 'ShortName' => 'pldm_transport_af_mctp_map_tid' }, - '110958' => { - 'Header' => 'file_io.h', + '112074' => { + 'Header' => 'af-mctp.h', 'Param' => { '0' => { - 'name' => 'instance_id', - 'type' => '168' + 'name' => 't', + 'type' => '107402' }, '1' => { - 'name' => 'file_type', - 'type' => '4895' + 'name' => 'pollfd', + 'type' => '110007' + } + }, + 'Return' => '74', + 'ShortName' => 'pldm_transport_af_mctp_init_pollfd' + }, + '112157' => { + 'Header' => 'af-mctp.h', + 'Param' => { + '0' => { + 'name' => 'ctx', + 'type' => '110986' + } + }, + 'Return' => '107402', + 'ShortName' => 'pldm_transport_af_mctp_core' + }, + '115360' => { + 'Header' => 'mctp-demux.h', + 'Param' => { + '0' => { + 'name' => 'ctx', + 'type' => '107360' }, - '2' => { - 'name' => 'file_handle', - 'type' => '180' + '1' => { + 'name' => 'tid', + 'type' => '105131' }, - '3' => { - 'name' => 'file_status', - 'type' => '168' + '2' => { + 'name' => 'eid', + 'type' => '107082' + } + }, + 'Return' => '74', + 'ShortName' => 'pldm_transport_mctp_demux_unmap_tid' + }, + '115619' => { + 'Header' => 'mctp-demux.h', + 'Param' => { + '0' => { + 'name' => 't', + 'type' => '107402' }, - '4' => { - 'name' => 'msg', - 'type' => '1615' + '1' => { + 'name' => 'pollfd', + 'type' => '110007' } }, 'Return' => '74', - 'ShortName' => 'encode_file_ack_req' + 'ShortName' => 'pldm_transport_mctp_demux_init_pollfd' + }, + '119746' => { + 'Header' => 'transport.h', + 'Param' => { + '0' => { + 'name' => 'transport', + 'type' => '107402' + }, + '1' => { + 'name' => 'timeout', + 'type' => '74' + } + }, + 'Return' => '107191', + 'ShortName' => 'pldm_transport_poll' }, - '111176' => { + '121802' => { 'Header' => 'file_io.h', 'Param' => { '0' => { @@ -486,9 +765,9 @@ $VAR1 = { } }, 'Return' => '74', - 'ShortName' => 'encode_file_ack_resp' + 'ShortName' => 'encode_new_file_with_metadata_resp' }, - '111349' => { + '121985' => { 'Header' => 'file_io.h', 'Param' => { '0' => { @@ -508,14 +787,31 @@ $VAR1 = { 'type' => '2039' }, '4' => { - 'name' => 'file_status', - 'type' => '2034' + 'name' => 'length', + 'type' => '54689' + }, + '5' => { + 'name' => 'file_meta_data_1', + 'type' => '2039' + }, + '6' => { + 'name' => 'file_meta_data_2', + 'type' => '2039' + }, + '7' => { + 'name' => 'file_meta_data_3', + 'type' => '2039' + }, + '8' => { + 'name' => 'file_meta_data_4', + 'offset' => '0', + 'type' => '2039' } }, 'Return' => '74', - 'ShortName' => 'decode_file_ack_req' + 'ShortName' => 'decode_new_file_with_metadata_req' }, - '111485' => { + '122203' => { 'Header' => 'file_io.h', 'Param' => { '0' => { @@ -529,16 +825,12 @@ $VAR1 = { '2' => { 'name' => 'completion_code', 'type' => '2034' - }, - '3' => { - 'name' => 'length', - 'type' => '2039' } }, 'Return' => '74', - 'ShortName' => 'decode_rw_file_by_type_resp' + 'ShortName' => 'decode_new_file_with_metadata_resp' }, - '111612' => { + '122310' => { 'Header' => 'file_io.h', 'Param' => { '0' => { @@ -546,34 +838,42 @@ $VAR1 = { 'type' => '168' }, '1' => { - 'name' => 'command', - 'type' => '168' - }, - '2' => { 'name' => 'file_type', 'type' => '4895' }, - '3' => { + '2' => { 'name' => 'file_handle', 'type' => '180' }, + '3' => { + 'name' => 'length', + 'type' => '45550' + }, '4' => { - 'name' => 'offset', + 'name' => 'file_meta_data_1', 'type' => '180' }, '5' => { - 'name' => 'length', + 'name' => 'file_meta_data_2', 'type' => '180' }, '6' => { + 'name' => 'file_meta_data_3', + 'type' => '180' + }, + '7' => { + 'name' => 'file_meta_data_4', + 'type' => '180' + }, + '8' => { 'name' => 'msg', 'type' => '1615' } }, 'Return' => '74', - 'ShortName' => 'encode_rw_file_by_type_req' + 'ShortName' => 'encode_new_file_with_metadata_req' }, - '111870' => { + '122603' => { 'Header' => 'file_io.h', 'Param' => { '0' => { @@ -581,26 +881,18 @@ $VAR1 = { 'type' => '168' }, '1' => { - 'name' => 'command', - 'type' => '168' - }, - '2' => { 'name' => 'completion_code', 'type' => '168' }, - '3' => { - 'name' => 'length', - 'type' => '180' - }, - '4' => { + '2' => { 'name' => 'msg', 'type' => '1615' } }, 'Return' => '74', - 'ShortName' => 'encode_rw_file_by_type_resp' + 'ShortName' => 'encode_file_ack_with_meta_data_resp' }, - '112083' => { + '122781' => { 'Header' => 'file_io.h', 'Param' => { '0' => { @@ -620,18 +912,31 @@ $VAR1 = { 'type' => '2039' }, '4' => { - 'name' => 'offset', - 'type' => '2039' + 'name' => 'file_status', + 'type' => '2034' }, '5' => { - 'name' => 'length', + 'name' => 'file_meta_data_1', + 'type' => '2039' + }, + '6' => { + 'name' => 'file_meta_data_2', + 'type' => '2039' + }, + '7' => { + 'name' => 'file_meta_data_3', + 'type' => '2039' + }, + '8' => { + 'name' => 'file_meta_data_4', + 'offset' => '0', 'type' => '2039' } }, 'Return' => '74', - 'ShortName' => 'decode_rw_file_by_type_req' + 'ShortName' => 'decode_file_ack_with_meta_data_req' }, - '112233' => { + '122979' => { 'Header' => 'file_io.h', 'Param' => { '0' => { @@ -648,9 +953,9 @@ $VAR1 = { } }, 'Return' => '74', - 'ShortName' => 'decode_new_file_resp' + 'ShortName' => 'decode_file_ack_with_meta_data_resp' }, - '112340' => { + '123081' => { 'Header' => 'file_io.h', 'Param' => { '0' => { @@ -666,37 +971,99 @@ $VAR1 = { 'type' => '180' }, '3' => { - 'name' => 'length', - 'type' => '45543' - }, - '4' => { - 'name' => 'msg', - 'type' => '1615' - } - }, - 'Return' => '74', - 'ShortName' => 'encode_new_file_req' - }, - '112558' => { - 'Header' => 'file_io.h', - 'Param' => { - '0' => { - 'name' => 'instance_id', + 'name' => 'file_status', 'type' => '168' }, - '1' => { + '4' => { + 'name' => 'file_meta_data_1', + 'type' => '180' + }, + '5' => { + 'name' => 'file_meta_data_2', + 'type' => '180' + }, + '6' => { + 'name' => 'file_meta_data_3', + 'type' => '180' + }, + '7' => { + 'name' => 'file_meta_data_4', + 'type' => '180' + }, + '8' => { + 'name' => 'msg', + 'type' => '1615' + } + }, + 'Return' => '74', + 'ShortName' => 'encode_file_ack_with_meta_data_req' + }, + '123374' => { + 'Header' => 'file_io.h', + 'Param' => { + '0' => { + 'name' => 'msg', + 'type' => '2029' + }, + '1' => { + 'name' => 'payload_length', + 'type' => '123' + }, + '2' => { 'name' => 'completion_code', + 'type' => '2034' + } + }, + 'Return' => '74', + 'ShortName' => 'decode_file_ack_resp' + }, + '123481' => { + 'Header' => 'file_io.h', + 'Param' => { + '0' => { + 'name' => 'instance_id', 'type' => '168' }, + '1' => { + 'name' => 'file_type', + 'type' => '4895' + }, '2' => { + 'name' => 'file_handle', + 'type' => '180' + }, + '3' => { + 'name' => 'file_status', + 'type' => '168' + }, + '4' => { 'name' => 'msg', 'type' => '1615' } }, 'Return' => '74', - 'ShortName' => 'encode_new_file_resp' + 'ShortName' => 'encode_file_ack_req' + }, + '123699' => { + 'Header' => 'file_io.h', + 'Param' => { + '0' => { + 'name' => 'instance_id', + 'type' => '168' + }, + '1' => { + 'name' => 'completion_code', + 'type' => '168' + }, + '2' => { + 'name' => 'msg', + 'type' => '1615' + } + }, + 'Return' => '74', + 'ShortName' => 'encode_file_ack_resp' }, - '112731' => { + '123872' => { 'Header' => 'file_io.h', 'Param' => { '0' => { @@ -716,14 +1083,14 @@ $VAR1 = { 'type' => '2039' }, '4' => { - 'name' => 'length', - 'type' => '54682' + 'name' => 'file_status', + 'type' => '2034' } }, 'Return' => '74', - 'ShortName' => 'decode_new_file_req' + 'ShortName' => 'decode_file_ack_req' }, - '112867' => { + '124008' => { 'Header' => 'file_io.h', 'Param' => { '0' => { @@ -744,9 +1111,9 @@ $VAR1 = { } }, 'Return' => '74', - 'ShortName' => 'decode_rw_file_by_type_memory_resp' + 'ShortName' => 'decode_rw_file_by_type_resp' }, - '112994' => { + '124135' => { 'Header' => 'file_io.h', 'Param' => { '0' => { @@ -774,18 +1141,14 @@ $VAR1 = { 'type' => '180' }, '6' => { - 'name' => 'address', - 'type' => '45543' - }, - '7' => { 'name' => 'msg', 'type' => '1615' } }, 'Return' => '74', - 'ShortName' => 'encode_rw_file_by_type_memory_req' + 'ShortName' => 'encode_rw_file_by_type_req' }, - '113272' => { + '124393' => { 'Header' => 'file_io.h', 'Param' => { '0' => { @@ -810,9 +1173,9 @@ $VAR1 = { } }, 'Return' => '74', - 'ShortName' => 'encode_rw_file_by_type_memory_resp' + 'ShortName' => 'encode_rw_file_by_type_resp' }, - '113485' => { + '124606' => { 'Header' => 'file_io.h', 'Param' => { '0' => { @@ -838,16 +1201,31 @@ $VAR1 = { '5' => { 'name' => 'length', 'type' => '2039' + } + }, + 'Return' => '74', + 'ShortName' => 'decode_rw_file_by_type_req' + }, + '124756' => { + 'Header' => 'file_io.h', + 'Param' => { + '0' => { + 'name' => 'msg', + 'type' => '2029' }, - '6' => { - 'name' => 'address', - 'type' => '54682' + '1' => { + 'name' => 'payload_length', + 'type' => '123' + }, + '2' => { + 'name' => 'completion_code', + 'type' => '2034' } }, 'Return' => '74', - 'ShortName' => 'decode_rw_file_by_type_memory_req' + 'ShortName' => 'decode_new_file_resp' }, - '113649' => { + '124863' => { 'Header' => 'file_io.h', 'Param' => { '0' => { @@ -855,22 +1233,72 @@ $VAR1 = { 'type' => '168' }, '1' => { - 'name' => 'completion_code', - 'type' => '168' + 'name' => 'file_type', + 'type' => '4895' }, '2' => { - 'name' => 'length', + 'name' => 'file_handle', 'type' => '180' }, '3' => { + 'name' => 'length', + 'type' => '45550' + }, + '4' => { 'name' => 'msg', 'type' => '1615' } }, 'Return' => '74', - 'ShortName' => 'encode_write_file_resp' + 'ShortName' => 'encode_new_file_req' + }, + '125081' => { + 'Header' => 'file_io.h', + 'Param' => { + '0' => { + 'name' => 'instance_id', + 'type' => '168' + }, + '1' => { + 'name' => 'completion_code', + 'type' => '168' + }, + '2' => { + 'name' => 'msg', + 'type' => '1615' + } + }, + 'Return' => '74', + 'ShortName' => 'encode_new_file_resp' + }, + '125254' => { + 'Header' => 'file_io.h', + 'Param' => { + '0' => { + 'name' => 'msg', + 'type' => '2029' + }, + '1' => { + 'name' => 'payload_length', + 'type' => '123' + }, + '2' => { + 'name' => 'file_type', + 'type' => '8294' + }, + '3' => { + 'name' => 'file_handle', + 'type' => '2039' + }, + '4' => { + 'name' => 'length', + 'type' => '54689' + } + }, + 'Return' => '74', + 'ShortName' => 'decode_new_file_req' }, - '113847' => { + '125390' => { 'Header' => 'file_io.h', 'Param' => { '0' => { @@ -891,9 +1319,9 @@ $VAR1 = { } }, 'Return' => '74', - 'ShortName' => 'decode_write_file_resp' + 'ShortName' => 'decode_rw_file_by_type_memory_resp' }, - '113969' => { + '125517' => { 'Header' => 'file_io.h', 'Param' => { '0' => { @@ -901,13 +1329,52 @@ $VAR1 = { 'type' => '168' }, '1' => { + 'name' => 'command', + 'type' => '168' + }, + '2' => { + 'name' => 'file_type', + 'type' => '4895' + }, + '3' => { 'name' => 'file_handle', 'type' => '180' }, - '2' => { + '4' => { 'name' => 'offset', 'type' => '180' }, + '5' => { + 'name' => 'length', + 'type' => '180' + }, + '6' => { + 'name' => 'address', + 'type' => '45550' + }, + '7' => { + 'name' => 'msg', + 'type' => '1615' + } + }, + 'Return' => '74', + 'ShortName' => 'encode_rw_file_by_type_memory_req' + }, + '125795' => { + 'Header' => 'file_io.h', + 'Param' => { + '0' => { + 'name' => 'instance_id', + 'type' => '168' + }, + '1' => { + 'name' => 'command', + 'type' => '168' + }, + '2' => { + 'name' => 'completion_code', + 'type' => '168' + }, '3' => { 'name' => 'length', 'type' => '180' @@ -918,9 +1385,9 @@ $VAR1 = { } }, 'Return' => '74', - 'ShortName' => 'encode_write_file_req' + 'ShortName' => 'encode_rw_file_by_type_memory_resp' }, - '114187' => { + '126008' => { 'Header' => 'file_io.h', 'Param' => { '0' => { @@ -932,26 +1399,30 @@ $VAR1 = { 'type' => '123' }, '2' => { + 'name' => 'file_type', + 'type' => '8294' + }, + '3' => { 'name' => 'file_handle', 'type' => '2039' }, - '3' => { + '4' => { 'name' => 'offset', 'type' => '2039' }, - '4' => { + '5' => { 'name' => 'length', 'type' => '2039' }, - '5' => { - 'name' => 'file_data_offset', - 'type' => '8822' + '6' => { + 'name' => 'address', + 'type' => '54689' } }, 'Return' => '74', - 'ShortName' => 'decode_write_file_req' + 'ShortName' => 'decode_rw_file_by_type_memory_req' }, - '114336' => { + '126172' => { 'Header' => 'file_io.h', 'Param' => { '0' => { @@ -972,9 +1443,9 @@ $VAR1 = { } }, 'Return' => '74', - 'ShortName' => 'encode_read_file_resp' + 'ShortName' => 'encode_write_file_resp' }, - '114534' => { + '126370' => { 'Header' => 'file_io.h', 'Param' => { '0' => { @@ -992,16 +1463,12 @@ $VAR1 = { '3' => { 'name' => 'length', 'type' => '2039' - }, - '4' => { - 'name' => 'file_data_offset', - 'type' => '8822' } }, 'Return' => '74', - 'ShortName' => 'decode_read_file_resp' + 'ShortName' => 'decode_write_file_resp' }, - '114664' => { + '126492' => { 'Header' => 'file_io.h', 'Param' => { '0' => { @@ -1026,9 +1493,9 @@ $VAR1 = { } }, 'Return' => '74', - 'ShortName' => 'encode_read_file_req' + 'ShortName' => 'encode_write_file_req' }, - '114882' => { + '126710' => { 'Header' => 'file_io.h', 'Param' => { '0' => { @@ -1050,31 +1517,139 @@ $VAR1 = { '4' => { 'name' => 'length', 'type' => '2039' + }, + '5' => { + 'name' => 'file_data_offset', + 'type' => '8822' } }, 'Return' => '74', - 'ShortName' => 'decode_read_file_req' + 'ShortName' => 'decode_write_file_req' }, - '115011' => { + '126859' => { 'Header' => 'file_io.h', 'Param' => { '0' => { - 'name' => 'msg', - 'type' => '2029' + 'name' => 'instance_id', + 'type' => '168' }, '1' => { - 'name' => 'payload_length', - 'type' => '123' + 'name' => 'completion_code', + 'type' => '168' }, '2' => { - 'name' => 'completion_code', - 'type' => '2034' + 'name' => 'length', + 'type' => '180' }, '3' => { - 'name' => 'next_transfer_handle', - 'type' => '2039' - }, - '4' => { + 'name' => 'msg', + 'type' => '1615' + } + }, + 'Return' => '74', + 'ShortName' => 'encode_read_file_resp' + }, + '127057' => { + 'Header' => 'file_io.h', + 'Param' => { + '0' => { + 'name' => 'msg', + 'type' => '2029' + }, + '1' => { + 'name' => 'payload_length', + 'type' => '123' + }, + '2' => { + 'name' => 'completion_code', + 'type' => '2034' + }, + '3' => { + 'name' => 'length', + 'type' => '2039' + }, + '4' => { + 'name' => 'file_data_offset', + 'type' => '8822' + } + }, + 'Return' => '74', + 'ShortName' => 'decode_read_file_resp' + }, + '127187' => { + 'Header' => 'file_io.h', + 'Param' => { + '0' => { + 'name' => 'instance_id', + 'type' => '168' + }, + '1' => { + 'name' => 'file_handle', + 'type' => '180' + }, + '2' => { + 'name' => 'offset', + 'type' => '180' + }, + '3' => { + 'name' => 'length', + 'type' => '180' + }, + '4' => { + 'name' => 'msg', + 'type' => '1615' + } + }, + 'Return' => '74', + 'ShortName' => 'encode_read_file_req' + }, + '127405' => { + 'Header' => 'file_io.h', + 'Param' => { + '0' => { + 'name' => 'msg', + 'type' => '2029' + }, + '1' => { + 'name' => 'payload_length', + 'type' => '123' + }, + '2' => { + 'name' => 'file_handle', + 'type' => '2039' + }, + '3' => { + 'name' => 'offset', + 'type' => '2039' + }, + '4' => { + 'name' => 'length', + 'type' => '2039' + } + }, + 'Return' => '74', + 'ShortName' => 'decode_read_file_req' + }, + '127534' => { + 'Header' => 'file_io.h', + 'Param' => { + '0' => { + 'name' => 'msg', + 'type' => '2029' + }, + '1' => { + 'name' => 'payload_length', + 'type' => '123' + }, + '2' => { + 'name' => 'completion_code', + 'type' => '2034' + }, + '3' => { + 'name' => 'next_transfer_handle', + 'type' => '2039' + }, + '4' => { 'name' => 'transfer_flag', 'type' => '2034' }, @@ -1090,7 +1665,7 @@ $VAR1 = { 'Return' => '74', 'ShortName' => 'decode_get_file_table_resp' }, - '115177' => { + '127700' => { 'Header' => 'file_io.h', 'Param' => { '0' => { @@ -1117,7 +1692,7 @@ $VAR1 = { 'Return' => '74', 'ShortName' => 'encode_get_file_table_req' }, - '115386' => { + '127909' => { 'Header' => 'file_io.h', 'Param' => { '0' => { @@ -1152,7 +1727,7 @@ $VAR1 = { 'Return' => '74', 'ShortName' => 'encode_get_file_table_resp' }, - '115669' => { + '128192' => { 'Header' => 'file_io.h', 'Param' => { '0' => { @@ -1179,7 +1754,7 @@ $VAR1 = { 'Return' => '74', 'ShortName' => 'decode_get_file_table_req' }, - '115798' => { + '128321' => { 'Header' => 'file_io.h', 'Param' => { '0' => { @@ -1202,7 +1777,7 @@ $VAR1 = { 'Return' => '74', 'ShortName' => 'decode_rw_file_memory_resp' }, - '115919' => { + '128442' => { 'Header' => 'file_io.h', 'Param' => { '0' => { @@ -1227,7 +1802,7 @@ $VAR1 = { }, '5' => { 'name' => 'address', - 'type' => '45543' + 'type' => '45550' }, '6' => { 'name' => 'msg', @@ -1237,7 +1812,7 @@ $VAR1 = { 'Return' => '74', 'ShortName' => 'encode_rw_file_memory_req' }, - '116166' => { + '128689' => { 'Header' => 'file_io.h', 'Param' => { '0' => { @@ -1264,7 +1839,7 @@ $VAR1 = { 'Return' => '74', 'ShortName' => 'encode_rw_file_memory_resp' }, - '116370' => { + '128893' => { 'Header' => 'file_io.h', 'Param' => { '0' => { @@ -1289,13 +1864,13 @@ $VAR1 = { }, '5' => { 'name' => 'address', - 'type' => '54682' + 'type' => '54689' } }, 'Return' => '74', 'ShortName' => 'decode_rw_file_memory_req' }, - '117316' => { + '129839' => { 'Header' => 'host.h', 'Param' => { '0' => { @@ -1326,7 +1901,7 @@ $VAR1 = { 'Return' => '74', 'ShortName' => 'encode_get_alert_status_resp' }, - '117547' => { + '130070' => { 'Header' => 'host.h', 'Param' => { '0' => { @@ -1345,7 +1920,7 @@ $VAR1 = { 'Return' => '74', 'ShortName' => 'decode_get_alert_status_req' }, - '117635' => { + '130158' => { 'Header' => 'host.h', 'Param' => { '0' => { @@ -1372,7 +1947,7 @@ $VAR1 = { 'Return' => '74', 'ShortName' => 'decode_get_alert_status_resp' }, - '117768' => { + '130291' => { 'Header' => 'host.h', 'Param' => { '0' => { @@ -1395,7 +1970,7 @@ $VAR1 = { 'Return' => '74', 'ShortName' => 'encode_get_alert_status_req' }, - '118807' => { + '131337' => { 'Header' => 'platform_oem_ibm.h', 'Param' => { '0' => { @@ -1430,6 +2005,36 @@ $VAR1 = { 'Return' => '74', 'ShortName' => 'encode_bios_attribute_update_event_req' }, + '132515' => { + 'Header' => 'pdr_oem_ibm.h', + 'Param' => { + '0' => { + 'name' => 'repo', + 'type' => '80930' + }, + '1' => { + 'name' => 'entityType', + 'type' => '4895' + }, + '2' => { + 'name' => 'entityInstance', + 'type' => '4895' + } + }, + 'Return' => '4895', + 'ShortName' => 'pldm_find_container_id' + }, + '132893' => { + 'Header' => 'pdr_oem_ibm.h', + 'Param' => { + '0' => { + 'name' => 'record_handle', + 'type' => '11475' + } + }, + 'Return' => '6265', + 'ShortName' => 'isHBRange' + }, '1440' => { 'Header' => 'base.h', 'Param' => { @@ -1457,7 +2062,7 @@ $VAR1 = { 'Return' => '74', 'ShortName' => 'encode_pldm_header_only' }, - '15842' => { + '15849' => { 'Header' => 'platform.h', 'Param' => { '0' => { @@ -1502,7 +2107,7 @@ $VAR1 = { }, '9' => { 'name' => 'event_data', - 'type' => '16585' + 'type' => '16592' } }, 'Return' => '74', @@ -1535,7 +2140,7 @@ $VAR1 = { 'Return' => '74', 'ShortName' => 'encode_cc_only_resp' }, - '16595' => { + '16602' => { 'Header' => 'platform.h', 'Param' => { '0' => { @@ -1570,7 +2175,7 @@ $VAR1 = { 'Return' => '74', 'ShortName' => 'encode_poll_for_platform_event_message_req' }, - '17133' => { + '17140' => { 'Header' => 'platform.h', 'Param' => { '0' => { @@ -1589,7 +2194,7 @@ $VAR1 = { 'Return' => '74', 'ShortName' => 'encode_set_event_receiver_resp' }, - '17291' => { + '17298' => { 'Header' => 'platform.h', 'Param' => { '0' => { @@ -1620,7 +2225,7 @@ $VAR1 = { 'Return' => '74', 'ShortName' => 'decode_set_event_receiver_req' }, - '17762' => { + '17769' => { 'Header' => 'platform.h', 'Param' => { '0' => { @@ -1639,7 +2244,7 @@ $VAR1 = { 'Return' => '74', 'ShortName' => 'decode_set_event_receiver_resp' }, - '18080' => { + '18087' => { 'Header' => 'platform.h', 'Param' => { '0' => { @@ -1709,7 +2314,7 @@ $VAR1 = { 'Return' => '74', 'ShortName' => 'decode_multipart_receive_req' }, - '18327' => { + '18334' => { 'Header' => 'platform.h', 'Param' => { '0' => { @@ -1732,7 +2337,7 @@ $VAR1 = { 'Return' => '74', 'ShortName' => 'decode_get_sensor_reading_req' }, - '18697' => { + '18704' => { 'Header' => 'platform.h', 'Param' => { '0' => { @@ -1783,7 +2388,7 @@ $VAR1 = { 'Return' => '74', 'ShortName' => 'encode_get_sensor_reading_resp' }, - '19116' => { + '19123' => { 'Header' => 'platform.h', 'Param' => { '0' => { @@ -1830,7 +2435,7 @@ $VAR1 = { 'Return' => '74', 'ShortName' => 'decode_get_sensor_reading_resp' }, - '20010' => { + '20017' => { 'Header' => 'platform.h', 'Param' => { '0' => { @@ -1853,7 +2458,7 @@ $VAR1 = { 'Return' => '74', 'ShortName' => 'encode_get_sensor_reading_req' }, - '20215' => { + '20222' => { 'Header' => 'platform.h', 'Param' => { '0' => { @@ -1899,7 +2504,61 @@ $VAR1 = { 'Return' => '74', 'ShortName' => 'encode_set_tid_req' }, - '21444' => { + '20621' => { + 'Header' => 'platform.h', + 'Param' => { + '0' => { + 'name' => 'format_version', + 'type' => '168' + }, + '1' => { + 'name' => 'event_id', + 'type' => '4895' + }, + '2' => { + 'name' => 'data_transfer_handle', + 'type' => '180' + }, + '3' => { + 'name' => 'event_data', + 'type' => '2034' + }, + '4' => { + 'name' => 'event_data_length', + 'type' => '123' + } + }, + 'Return' => '74', + 'ShortName' => 'encode_pldm_message_poll_event_data' + }, + '21033' => { + 'Header' => 'platform.h', + 'Param' => { + '0' => { + 'name' => 'event_data', + 'type' => '6087' + }, + '1' => { + 'name' => 'event_data_length', + 'type' => '123' + }, + '2' => { + 'name' => 'format_version', + 'type' => '2034' + }, + '3' => { + 'name' => 'event_id', + 'type' => '8294' + }, + '4' => { + 'name' => 'data_transfer_handle', + 'type' => '2039' + } + }, + 'Return' => '74', + 'ShortName' => 'decode_pldm_message_poll_event_data' + }, + '21451' => { 'Header' => 'platform.h', 'Param' => { '0' => { @@ -1926,7 +2585,7 @@ $VAR1 = { 'Return' => '74', 'ShortName' => 'decode_pldm_pdr_repository_chg_event_data' }, - '21833' => { + '21840' => { 'Header' => 'platform.h', 'Param' => { '0' => { @@ -1947,11 +2606,11 @@ $VAR1 = { }, '4' => { 'name' => 'change_entries', - 'type' => '22152' + 'type' => '22159' }, '5' => { 'name' => 'event_data', - 'type' => '22167' + 'type' => '22174' }, '6' => { 'name' => 'actual_change_records_size', @@ -1965,7 +2624,7 @@ $VAR1 = { 'Return' => '74', 'ShortName' => 'encode_pldm_pdr_repository_chg_event_data' }, - '22177' => { + '22184' => { 'Header' => 'platform.h', 'Param' => { '0' => { @@ -2023,7 +2682,7 @@ $VAR1 = { 'Return' => '74', 'ShortName' => 'decode_get_tid_resp' }, - '23123' => { + '23130' => { 'Header' => 'platform.h', 'Param' => { '0' => { @@ -2042,7 +2701,7 @@ $VAR1 = { 'Return' => '74', 'ShortName' => 'decode_get_numeric_effecter_value_req' }, - '23441' => { + '23448' => { 'Header' => 'platform.h', 'Param' => { '0' => { @@ -2104,7 +2763,7 @@ $VAR1 = { 'Return' => '74', 'ShortName' => 'encode_get_tid_resp' }, - '23834' => { + '23841' => { 'Header' => 'platform.h', 'Param' => { '0' => { @@ -2123,7 +2782,7 @@ $VAR1 = { 'Return' => '74', 'ShortName' => 'encode_get_numeric_effecter_value_req' }, - '24018' => { + '24025' => { 'Header' => 'platform.h', 'Param' => { '0' => { @@ -2136,7 +2795,7 @@ $VAR1 = { }, '2' => { 'name' => 'pdr_value', - 'type' => '28491' + 'type' => '28498' } }, 'Return' => '74', @@ -2215,7 +2874,7 @@ $VAR1 = { 'Return' => '74', 'ShortName' => 'decode_get_version_req' }, - '28496' => { + '28503' => { 'Header' => 'platform.h', 'Param' => { '0' => { @@ -2246,7 +2905,7 @@ $VAR1 = { 'Return' => '74', 'ShortName' => 'decode_numeric_sensor_data' }, - '29314' => { + '29321' => { 'Header' => 'platform.h', 'Param' => { '0' => { @@ -2308,7 +2967,7 @@ $VAR1 = { 'Return' => '74', 'ShortName' => 'encode_get_version_resp' }, - '29733' => { + '29740' => { 'Header' => 'platform.h', 'Param' => { '0' => { @@ -2331,7 +2990,7 @@ $VAR1 = { 'Return' => '74', 'ShortName' => 'decode_sensor_op_data' }, - '30101' => { + '30108' => { 'Header' => 'platform.h', 'Param' => { '0' => { @@ -2358,7 +3017,7 @@ $VAR1 = { 'Return' => '74', 'ShortName' => 'decode_sensor_event_data' }, - '30509' => { + '30516' => { 'Header' => 'platform.h', 'Param' => { '0' => { @@ -2379,7 +3038,7 @@ $VAR1 = { }, '4' => { 'name' => 'synchrony_config_support', - 'type' => '31174' + 'type' => '31181' }, '5' => { 'name' => 'number_event_class_returned', @@ -2397,7 +3056,7 @@ $VAR1 = { 'Return' => '74', 'ShortName' => 'decode_event_message_supported_resp' }, - '31179' => { + '31186' => { 'Header' => 'platform.h', 'Param' => { '0' => { @@ -2416,7 +3075,7 @@ $VAR1 = { 'Return' => '74', 'ShortName' => 'encode_event_message_supported_req' }, - '31363' => { + '31370' => { 'Header' => 'platform.h', 'Param' => { '0' => { @@ -2439,7 +3098,7 @@ $VAR1 = { 'Return' => '74', 'ShortName' => 'decode_event_message_buffer_size_resp' }, - '31732' => { + '31739' => { 'Header' => 'platform.h', 'Param' => { '0' => { @@ -2458,7 +3117,7 @@ $VAR1 = { 'Return' => '74', 'ShortName' => 'encode_event_message_buffer_size_req' }, - '31916' => { + '31923' => { 'Header' => 'platform.h', 'Param' => { '0' => { @@ -2481,7 +3140,7 @@ $VAR1 = { 'Return' => '74', 'ShortName' => 'decode_platform_event_message_resp' }, - '32285' => { + '32292' => { 'Header' => 'platform.h', 'Param' => { '0' => { @@ -2547,7 +3206,7 @@ $VAR1 = { 'Return' => '74', 'ShortName' => 'encode_get_version_req' }, - '32610' => { + '32617' => { 'Header' => 'platform.h', 'Param' => { '0' => { @@ -2602,7 +3261,7 @@ $VAR1 = { 'Return' => '74', 'ShortName' => 'encode_poll_for_platform_event_message_resp' }, - '33508' => { + '33515' => { 'Header' => 'platform.h', 'Param' => { '0' => { @@ -2625,7 +3284,7 @@ $VAR1 = { 'Return' => '74', 'ShortName' => 'encode_platform_event_message_resp' }, - '33713' => { + '33720' => { 'Header' => 'platform.h', 'Param' => { '0' => { @@ -2656,7 +3315,7 @@ $VAR1 = { 'Return' => '74', 'ShortName' => 'decode_poll_for_platform_event_message_req' }, - '34185' => { + '34192' => { 'Header' => 'platform.h', 'Param' => { '0' => { @@ -2710,12 +3369,12 @@ $VAR1 = { 'Return' => '74', 'ShortName' => 'decode_get_commands_resp' }, - '34627' => { + '34634' => { 'Header' => 'platform.h', 'Param' => { '0' => { 'name' => 'event_data', - 'type' => '34806' + 'type' => '34813' }, '1' => { 'name' => 'event_data_size', @@ -2727,7 +3386,7 @@ $VAR1 = { }, '3' => { 'name' => 'sensor_event_class', - 'type' => '12774' + 'type' => '12781' }, '4' => { 'name' => 'sensor_offset', @@ -2743,13 +3402,13 @@ $VAR1 = { }, '7' => { 'name' => 'actual_event_data_size', - 'type' => '20609' + 'type' => '20616' } }, 'Return' => '74', 'ShortName' => 'encode_sensor_event_data' }, - '34821' => { + '34828' => { 'Header' => 'platform.h', 'Param' => { '0' => { @@ -2766,7 +3425,7 @@ $VAR1 = { }, '3' => { 'name' => 'sensor_rearm', - 'type' => '31174' + 'type' => '31181' }, '4' => { 'name' => 'reserved', @@ -2776,7 +3435,7 @@ $VAR1 = { 'Return' => '74', 'ShortName' => 'decode_get_state_sensor_readings_req' }, - '35242' => { + '35249' => { 'Header' => 'platform.h', 'Param' => { '0' => { @@ -2797,13 +3456,13 @@ $VAR1 = { }, '4' => { 'name' => 'field', - 'type' => '35771' + 'type' => '35778' } }, 'Return' => '74', 'ShortName' => 'decode_get_state_sensor_readings_resp' }, - '35776' => { + '35783' => { 'Header' => 'platform.h', 'Param' => { '0' => { @@ -2853,7 +3512,7 @@ $VAR1 = { 'Return' => '74', 'ShortName' => 'decode_get_types_resp' }, - '36002' => { + '36009' => { 'Header' => 'platform.h', 'Param' => { '0' => { @@ -2870,7 +3529,7 @@ $VAR1 = { }, '3' => { 'name' => 'field', - 'type' => '35771' + 'type' => '35778' }, '4' => { 'name' => 'msg', @@ -2880,7 +3539,7 @@ $VAR1 = { 'Return' => '74', 'ShortName' => 'encode_get_state_sensor_readings_resp' }, - '36270' => { + '36277' => { 'Header' => 'platform.h', 'Param' => { '0' => { @@ -2899,7 +3558,7 @@ $VAR1 = { 'Return' => '74', 'ShortName' => 'decode_set_numeric_effecter_value_resp' }, - '36353' => { + '36360' => { 'Header' => 'platform.h', 'Param' => { '0' => { @@ -2930,7 +3589,7 @@ $VAR1 = { 'Return' => '74', 'ShortName' => 'encode_set_numeric_effecter_value_req' }, - '36662' => { + '36669' => { 'Header' => 'platform.h', 'Param' => { '0' => { @@ -2953,7 +3612,7 @@ $VAR1 = { 'Return' => '74', 'ShortName' => 'encode_set_numeric_effecter_value_resp' }, - '36841' => { + '36848' => { 'Header' => 'platform.h', 'Param' => { '0' => { @@ -3003,7 +3662,7 @@ $VAR1 = { 'Return' => '74', 'ShortName' => 'encode_get_commands_resp' }, - '37473' => { + '37480' => { 'Header' => 'platform.h', 'Param' => { '0' => { @@ -3050,7 +3709,7 @@ $VAR1 = { 'Return' => '74', 'ShortName' => 'decode_get_pdr_resp' }, - '38119' => { + '38126' => { 'Header' => 'platform.h', 'Param' => { '0' => { @@ -3089,7 +3748,7 @@ $VAR1 = { 'Return' => '74', 'ShortName' => 'encode_get_pdr_req' }, - '38408' => { + '38415' => { 'Header' => 'platform.h', 'Param' => { '0' => { @@ -3159,7 +3818,7 @@ $VAR1 = { 'Return' => '74', 'ShortName' => 'decode_get_commands_req' }, - '39096' => { + '39103' => { 'Header' => 'platform.h', 'Param' => { '0' => { @@ -3206,7 +3865,7 @@ $VAR1 = { 'Return' => '74', 'ShortName' => 'encode_get_pdr_repository_info_resp' }, - '39427' => { + '39434' => { 'Header' => 'platform.h', 'Param' => { '0' => { @@ -3249,7 +3908,7 @@ $VAR1 = { 'Return' => '74', 'ShortName' => 'encode_get_pdr_resp' }, - '39820' => { + '39827' => { 'Header' => 'platform.h', 'Param' => { '0' => { @@ -3307,7 +3966,7 @@ $VAR1 = { 'Return' => '74', 'ShortName' => 'encode_get_types_resp' }, - '40345' => { + '40352' => { 'Header' => 'platform.h', 'Param' => { '0' => { @@ -3328,13 +3987,13 @@ $VAR1 = { }, '4' => { 'name' => 'field', - 'type' => '40809' + 'type' => '40816' } }, 'Return' => '74', 'ShortName' => 'decode_set_state_effecter_states_req' }, - '40814' => { + '40821' => { 'Header' => 'platform.h', 'Param' => { '0' => { @@ -3353,7 +4012,7 @@ $VAR1 = { 'Return' => '74', 'ShortName' => 'decode_set_state_effecter_states_resp' }, - '40893' => { + '40900' => { 'Header' => 'platform.h', 'Param' => { '0' => { @@ -3370,7 +4029,7 @@ $VAR1 = { }, '3' => { 'name' => 'field', - 'type' => '40809' + 'type' => '40816' }, '4' => { 'name' => 'msg', @@ -3380,7 +4039,7 @@ $VAR1 = { 'Return' => '74', 'ShortName' => 'encode_set_state_effecter_states_req' }, - '41151' => { + '41158' => { 'Header' => 'platform.h', 'Param' => { '0' => { @@ -3399,12 +4058,12 @@ $VAR1 = { 'Return' => '74', 'ShortName' => 'encode_set_state_effecter_states_resp' }, - '41302' => { + '41309' => { 'Header' => 'platform.h', 'Param' => { '0' => { 'name' => 'sensor', - 'type' => '41614' + 'type' => '41621' }, '1' => { 'name' => 'allocation_size', @@ -3412,7 +4071,7 @@ $VAR1 = { }, '2' => { 'name' => 'possible_states', - 'type' => '41624' + 'type' => '41631' }, '3' => { 'name' => 'possible_states_size', @@ -3420,18 +4079,18 @@ $VAR1 = { }, '4' => { 'name' => 'actual_size', - 'type' => '20609' + 'type' => '20616' } }, 'Return' => '74', 'ShortName' => 'encode_state_sensor_pdr' }, - '41634' => { + '41641' => { 'Header' => 'platform.h', 'Param' => { '0' => { 'name' => 'effecter', - 'type' => '41946' + 'type' => '41953' }, '1' => { 'name' => 'allocation_size', @@ -3439,7 +4098,7 @@ $VAR1 = { }, '2' => { 'name' => 'possible_states', - 'type' => '41956' + 'type' => '41963' }, '3' => { 'name' => 'possible_states_size', @@ -3447,7 +4106,7 @@ $VAR1 = { }, '4' => { 'name' => 'actual_size', - 'type' => '20609' + 'type' => '20616' } }, 'Return' => '74', @@ -3521,7 +4180,7 @@ $VAR1 = { 'Return' => '168', 'ShortName' => 'pack_pldm_header' }, - '46848' => { + '46855' => { 'Header' => 'utils.h', 'Param' => { '0' => { @@ -3536,7 +4195,7 @@ $VAR1 = { 'Return' => '180', 'ShortName' => 'crc32' }, - '46963' => { + '46970' => { 'Header' => 'bios_table.h', 'Param' => { '0' => { @@ -3551,7 +4210,7 @@ $VAR1 = { 'Return' => '6265', 'ShortName' => 'pldm_bios_table_checksum' }, - '47108' => { + '47115' => { 'Header' => 'bios_table.h', 'Param' => { '0' => { @@ -3582,7 +4241,7 @@ $VAR1 = { 'Return' => '74', 'ShortName' => 'pldm_bios_table_attr_value_copy_and_update' }, - '47724' => { + '47731' => { 'Header' => 'bios_table.h', 'Param' => { '0' => { @@ -3598,10 +4257,10 @@ $VAR1 = { 'type' => '4895' } }, - 'Return' => '47719', + 'Return' => '47726', 'ShortName' => 'pldm_bios_table_attr_value_find_by_handle' }, - '47987' => { + '47994' => { 'Header' => 'bios_table.h', 'Param' => { '0' => { @@ -3617,10 +4276,10 @@ $VAR1 = { 'type' => '4895' } }, - 'Return' => '48134', + 'Return' => '48141', 'ShortName' => 'pldm_bios_table_attr_find_by_string_handle' }, - '48255' => { + '48262' => { 'Header' => 'bios_table.h', 'Param' => { '0' => { @@ -3636,10 +4295,10 @@ $VAR1 = { 'type' => '4895' } }, - 'Return' => '48134', + 'Return' => '48141', 'ShortName' => 'pldm_bios_table_attr_find_by_handle' }, - '48518' => { + '48525' => { 'Header' => 'bios_table.h', 'Param' => { '0' => { @@ -3655,10 +4314,10 @@ $VAR1 = { 'type' => '12199' } }, - 'Return' => '48723', + 'Return' => '48730', 'ShortName' => 'pldm_bios_table_string_find_by_string' }, - '48892' => { + '48899' => { 'Header' => 'bios_table.h', 'Param' => { '0' => { @@ -3674,54 +4333,54 @@ $VAR1 = { 'type' => '4895' } }, - 'Return' => '48723', + 'Return' => '48730', 'ShortName' => 'pldm_bios_table_string_find_by_handle' }, - '49654' => { + '49661' => { 'Header' => 'bios_table.h', 'Param' => { '0' => { 'name' => 'iter', - 'type' => '47714' + 'type' => '47721' } }, 'Return' => '1434', 'ShortName' => 'pldm_bios_table_iter_value' }, - '49709' => { + '49716' => { 'Header' => 'bios_table.h', 'Param' => { '0' => { 'name' => 'iter', - 'type' => '47714' + 'type' => '47721' } }, 'Return' => '1', 'ShortName' => 'pldm_bios_table_iter_next' }, - '49801' => { + '49808' => { 'Header' => 'bios_table.h', 'Param' => { '0' => { 'name' => 'iter', - 'type' => '49856' + 'type' => '49863' } }, 'Return' => '6265', 'ShortName' => 'pldm_bios_table_iter_is_end' }, - '49861' => { + '49868' => { 'Header' => 'bios_table.h', 'Param' => { '0' => { 'name' => 'iter', - 'type' => '47714' + 'type' => '47721' } }, 'Return' => '1', 'ShortName' => 'pldm_bios_table_iter_free' }, - '49932' => { + '49939' => { 'Header' => 'bios_table.h', 'Param' => { '0' => { @@ -3734,13 +4393,13 @@ $VAR1 = { }, '2' => { 'name' => 'type', - 'type' => '45555' + 'type' => '45562' } }, - 'Return' => '47714', + 'Return' => '47721', 'ShortName' => 'pldm_bios_table_iter_create' }, - '50171' => { + '50178' => { 'Header' => 'bios_table.h', 'Param' => { '0' => { @@ -3759,7 +4418,7 @@ $VAR1 = { 'Return' => '123', 'ShortName' => 'pldm_bios_table_append_pad_checksum' }, - '50606' => { + '50613' => { 'Header' => 'bios_table.h', 'Param' => { '0' => { @@ -3770,40 +4429,40 @@ $VAR1 = { 'Return' => '123', 'ShortName' => 'pldm_bios_table_pad_checksum_size' }, - '50901' => { + '50908' => { 'Header' => 'bios_table.h', 'Param' => { '0' => { 'name' => 'entry', - 'type' => '47719' + 'type' => '47726' } }, 'Return' => '4895', 'ShortName' => 'pldm_bios_table_attr_value_entry_decode_handle' }, - '50956' => { + '50963' => { 'Header' => 'bios_table.h', 'Param' => { '0' => { 'name' => 'entry', - 'type' => '47719' + 'type' => '47726' } }, 'Return' => '123', 'ShortName' => 'pldm_bios_table_attr_value_entry_length' }, - '51420' => { + '51427' => { 'Header' => 'bios_table.h', 'Param' => { '0' => { 'name' => 'entry', - 'type' => '47719' + 'type' => '47726' } }, - 'Return' => '45543', + 'Return' => '45550', 'ShortName' => 'pldm_bios_table_attr_value_entry_integer_decode_cv' }, - '51494' => { + '51501' => { 'Header' => 'bios_table.h', 'Param' => { '0' => { @@ -3824,13 +4483,13 @@ $VAR1 = { }, '4' => { 'name' => 'cv', - 'type' => '45543' + 'type' => '45550' } }, 'Return' => '74', 'ShortName' => 'pldm_bios_table_attr_value_entry_encode_integer_check' }, - '51705' => { + '51712' => { 'Header' => 'bios_table.h', 'Param' => { '0' => { @@ -3851,18 +4510,18 @@ $VAR1 = { }, '4' => { 'name' => 'cv', - 'type' => '45543' + 'type' => '45550' } }, 'Return' => '1', 'ShortName' => 'pldm_bios_table_attr_value_entry_encode_integer' }, - '51992' => { + '51999' => { 'Header' => 'bios_table.h', 'Return' => '123', 'ShortName' => 'pldm_bios_table_attr_value_entry_encode_integer_length' }, - '52134' => { + '52141' => { 'Header' => 'bios_table.h', 'Param' => { '0' => { @@ -3893,12 +4552,12 @@ $VAR1 = { 'Return' => '74', 'ShortName' => 'pldm_bios_table_attr_value_entry_encode_string_check' }, - '52383' => { + '52390' => { 'Header' => 'bios_table.h', 'Param' => { '0' => { 'name' => 'entry', - 'type' => '47719' + 'type' => '47726' }, '1' => { 'name' => 'current_string', @@ -3908,18 +4567,18 @@ $VAR1 = { 'Return' => '1', 'ShortName' => 'pldm_bios_table_attr_value_entry_string_decode_string' }, - '52478' => { + '52485' => { 'Header' => 'bios_table.h', 'Param' => { '0' => { 'name' => 'entry', - 'type' => '47719' + 'type' => '47726' } }, 'Return' => '4895', 'ShortName' => 'pldm_bios_table_attr_value_entry_string_decode_length' }, - '52553' => { + '52560' => { 'Header' => 'bios_table.h', 'Param' => { '0' => { @@ -3950,7 +4609,7 @@ $VAR1 = { 'Return' => '1', 'ShortName' => 'pldm_bios_table_attr_value_entry_encode_string' }, - '52907' => { + '52914' => { 'Header' => 'bios_table.h', 'Param' => { '0' => { @@ -3961,7 +4620,7 @@ $VAR1 = { 'Return' => '123', 'ShortName' => 'pldm_bios_table_attr_value_entry_encode_string_length' }, - '53075' => { + '53082' => { 'Header' => 'bios_table.h', 'Param' => { '0' => { @@ -3992,12 +4651,12 @@ $VAR1 = { 'Return' => '74', 'ShortName' => 'pldm_bios_table_attr_value_entry_encode_enum_check' }, - '53324' => { + '53331' => { 'Header' => 'bios_table.h', 'Param' => { '0' => { 'name' => 'entry', - 'type' => '47719' + 'type' => '47726' }, '1' => { 'name' => 'handles', @@ -4011,18 +4670,18 @@ $VAR1 = { 'Return' => '168', 'ShortName' => 'pldm_bios_table_attr_value_entry_enum_decode_handles' }, - '53498' => { + '53505' => { 'Header' => 'bios_table.h', 'Param' => { '0' => { 'name' => 'entry', - 'type' => '47719' + 'type' => '47726' } }, 'Return' => '168', 'ShortName' => 'pldm_bios_table_attr_value_entry_enum_decode_number' }, - '53553' => { + '53560' => { 'Header' => 'bios_table.h', 'Param' => { '0' => { @@ -4053,7 +4712,7 @@ $VAR1 = { 'Return' => '1', 'ShortName' => 'pldm_bios_table_attr_value_entry_encode_enum' }, - '53906' => { + '53913' => { 'Header' => 'bios_table.h', 'Param' => { '0' => { @@ -4064,42 +4723,42 @@ $VAR1 = { 'Return' => '123', 'ShortName' => 'pldm_bios_table_attr_value_entry_encode_enum_length' }, - '53961' => { + '53968' => { 'Header' => 'bios_table.h', 'Param' => { '0' => { 'name' => 'entry', - 'type' => '47719' + 'type' => '47726' } }, 'Return' => '168', 'ShortName' => 'pldm_bios_table_attr_value_entry_decode_attribute_type' }, - '54016' => { + '54023' => { 'Header' => 'bios_table.h', 'Param' => { '0' => { 'name' => 'entry', - 'type' => '47719' + 'type' => '47726' } }, 'Return' => '4895', 'ShortName' => 'pldm_bios_table_attr_value_entry_decode_attribute_handle' }, - '54555' => { + '54562' => { 'Header' => 'bios_table.h', 'Param' => { '0' => { 'name' => 'entry', - 'type' => '48134' + 'type' => '48141' }, '1' => { 'name' => 'lower', - 'type' => '54682' + 'type' => '54689' }, '2' => { 'name' => 'upper', - 'type' => '54682' + 'type' => '54689' }, '3' => { 'name' => 'scalar', @@ -4107,13 +4766,13 @@ $VAR1 = { }, '4' => { 'name' => 'def', - 'type' => '54682' + 'type' => '54689' } }, 'Return' => '1', 'ShortName' => 'pldm_bios_table_attr_entry_integer_decode' }, - '54697' => { + '54704' => { 'Header' => 'bios_table.h', 'Param' => { '0' => { @@ -4126,28 +4785,28 @@ $VAR1 = { }, '2' => { 'name' => 'info', - 'type' => '54886' + 'type' => '54893' } }, 'Return' => '74', 'ShortName' => 'pldm_bios_table_attr_entry_integer_encode_check' }, - '54891' => { + '54898' => { 'Header' => 'bios_table.h', 'Param' => { '0' => { 'name' => 'info', - 'type' => '54886' + 'type' => '54893' }, '1' => { 'name' => 'errmsg', - 'type' => '55148' + 'type' => '55155' } }, 'Return' => '74', 'ShortName' => 'pldm_bios_table_attr_entry_integer_info_check' }, - '55153' => { + '55160' => { 'Header' => 'bios_table.h', 'Param' => { '0' => { @@ -4160,23 +4819,23 @@ $VAR1 = { }, '2' => { 'name' => 'info', - 'type' => '54886' + 'type' => '54893' } }, 'Return' => '1', 'ShortName' => 'pldm_bios_table_attr_entry_integer_encode' }, - '55471' => { + '55478' => { 'Header' => 'bios_table.h', 'Return' => '123', 'ShortName' => 'pldm_bios_table_attr_entry_integer_encode_length' }, - '55613' => { + '55620' => { 'Header' => 'bios_table.h', 'Param' => { '0' => { 'name' => 'entry', - 'type' => '48134' + 'type' => '48141' }, '1' => { 'name' => 'buffer', @@ -4190,45 +4849,45 @@ $VAR1 = { 'Return' => '4895', 'ShortName' => 'pldm_bios_table_attr_entry_string_decode_def_string' }, - '55809' => { + '55816' => { 'Header' => 'bios_table.h', 'Param' => { '0' => { 'name' => 'entry', - 'type' => '48134' + 'type' => '48141' } }, 'Return' => '4895', 'ShortName' => 'pldm_bios_table_attr_entry_string_decode_min_length' }, - '55884' => { + '55891' => { 'Header' => 'bios_table.h', 'Param' => { '0' => { 'name' => 'entry', - 'type' => '48134' + 'type' => '48141' } }, 'Return' => '4895', 'ShortName' => 'pldm_bios_table_attr_entry_string_decode_max_length' }, - '55959' => { + '55966' => { 'Header' => 'bios_table.h', 'Param' => { '0' => { 'name' => 'entry', - 'type' => '48134' + 'type' => '48141' } }, 'Return' => '168', 'ShortName' => 'pldm_bios_table_attr_entry_string_decode_string_type' }, - '56034' => { + '56041' => { 'Header' => 'bios_table.h', 'Param' => { '0' => { 'name' => 'entry', - 'type' => '48134' + 'type' => '48141' }, '1' => { 'name' => 'def_string_length', @@ -4238,18 +4897,18 @@ $VAR1 = { 'Return' => '74', 'ShortName' => 'pldm_bios_table_attr_entry_string_decode_def_string_length_check' }, - '56135' => { + '56142' => { 'Header' => 'bios_table.h', 'Param' => { '0' => { 'name' => 'entry', - 'type' => '48134' + 'type' => '48141' } }, 'Return' => '4895', 'ShortName' => 'pldm_bios_table_attr_entry_string_decode_def_string_length' }, - '56210' => { + '56217' => { 'Header' => 'bios_table.h', 'Param' => { '0' => { @@ -4262,28 +4921,28 @@ $VAR1 = { }, '2' => { 'name' => 'info', - 'type' => '56399' + 'type' => '56406' } }, 'Return' => '74', 'ShortName' => 'pldm_bios_table_attr_entry_string_encode_check' }, - '56404' => { + '56411' => { 'Header' => 'bios_table.h', 'Param' => { '0' => { 'name' => 'info', - 'type' => '56399' + 'type' => '56406' }, '1' => { 'name' => 'errmsg', - 'type' => '55148' + 'type' => '55155' } }, 'Return' => '74', 'ShortName' => 'pldm_bios_table_attr_entry_string_info_check' }, - '56673' => { + '56680' => { 'Header' => 'bios_table.h', 'Param' => { '0' => { @@ -4296,13 +4955,13 @@ $VAR1 = { }, '2' => { 'name' => 'info', - 'type' => '56399' + 'type' => '56406' } }, 'Return' => '1', 'ShortName' => 'pldm_bios_table_attr_entry_string_encode' }, - '57010' => { + '57017' => { 'Header' => 'bios_table.h', 'Param' => { '0' => { @@ -4313,12 +4972,12 @@ $VAR1 = { 'Return' => '123', 'ShortName' => 'pldm_bios_table_attr_entry_string_encode_length' }, - '57228' => { + '57235' => { 'Header' => 'bios_table.h', 'Param' => { '0' => { 'name' => 'entry', - 'type' => '48134' + 'type' => '48141' }, '1' => { 'name' => 'def_indices', @@ -4332,12 +4991,12 @@ $VAR1 = { 'Return' => '168', 'ShortName' => 'pldm_bios_table_attr_entry_enum_decode_def_indices' }, - '57458' => { + '57465' => { 'Header' => 'bios_table.h', 'Param' => { '0' => { 'name' => 'entry', - 'type' => '48134' + 'type' => '48141' }, '1' => { 'name' => 'pv_hdls', @@ -4351,12 +5010,12 @@ $VAR1 = { 'Return' => '74', 'ShortName' => 'pldm_bios_table_attr_entry_enum_decode_pv_hdls_check' }, - '57629' => { + '57595' => { 'Header' => 'bios_table.h', 'Param' => { '0' => { 'name' => 'entry', - 'type' => '48134' + 'type' => '48141' }, '1' => { 'name' => 'pv_hdls', @@ -4370,12 +5029,12 @@ $VAR1 = { 'Return' => '168', 'ShortName' => 'pldm_bios_table_attr_entry_enum_decode_pv_hdls' }, - '57817' => { + '57783' => { 'Header' => 'bios_table.h', 'Param' => { '0' => { 'name' => 'entry', - 'type' => '48134' + 'type' => '48141' }, '1' => { 'name' => 'def_num', @@ -4385,23 +5044,23 @@ $VAR1 = { 'Return' => '74', 'ShortName' => 'pldm_bios_table_attr_entry_enum_decode_def_num_check' }, - '57913' => { + '57879' => { 'Header' => 'bios_table.h', 'Param' => { '0' => { 'name' => 'entry', - 'type' => '48134' + 'type' => '48141' } }, 'Return' => '168', 'ShortName' => 'pldm_bios_table_attr_entry_enum_decode_def_num' }, - '58005' => { + '57971' => { 'Header' => 'bios_table.h', 'Param' => { '0' => { 'name' => 'entry', - 'type' => '48134' + 'type' => '48141' }, '1' => { 'name' => 'pv_num', @@ -4411,18 +5070,18 @@ $VAR1 = { 'Return' => '74', 'ShortName' => 'pldm_bios_table_attr_entry_enum_decode_pv_num_check' }, - '58098' => { + '58064' => { 'Header' => 'bios_table.h', 'Param' => { '0' => { 'name' => 'entry', - 'type' => '48134' + 'type' => '48141' } }, 'Return' => '168', 'ShortName' => 'pldm_bios_table_attr_entry_enum_decode_pv_num' }, - '58151' => { + '58117' => { 'Header' => 'bios_table.h', 'Param' => { '0' => { @@ -4435,13 +5094,13 @@ $VAR1 = { }, '2' => { 'name' => 'info', - 'type' => '58306' + 'type' => '58272' } }, 'Return' => '74', 'ShortName' => 'pldm_bios_table_attr_entry_enum_encode_check' }, - '58311' => { + '58277' => { 'Header' => 'bios_table.h', 'Param' => { '0' => { @@ -4454,13 +5113,13 @@ $VAR1 = { }, '2' => { 'name' => 'info', - 'type' => '58306' + 'type' => '58272' } }, 'Return' => '1', 'ShortName' => 'pldm_bios_table_attr_entry_enum_encode' }, - '58650' => { + '58616' => { 'Header' => 'bios_table.h', 'Param' => { '0' => { @@ -4475,45 +5134,45 @@ $VAR1 = { 'Return' => '123', 'ShortName' => 'pldm_bios_table_attr_entry_enum_encode_length' }, - '58716' => { + '58682' => { 'Header' => 'bios_table.h', 'Param' => { '0' => { 'name' => 'entry', - 'type' => '48134' + 'type' => '48141' } }, 'Return' => '4895', 'ShortName' => 'pldm_bios_table_attr_entry_decode_string_handle' }, - '58769' => { + '58735' => { 'Header' => 'bios_table.h', 'Param' => { '0' => { 'name' => 'entry', - 'type' => '48134' + 'type' => '48141' } }, 'Return' => '168', 'ShortName' => 'pldm_bios_table_attr_entry_decode_attribute_type' }, - '58822' => { + '58788' => { 'Header' => 'bios_table.h', 'Param' => { '0' => { 'name' => 'entry', - 'type' => '48134' + 'type' => '48141' } }, 'Return' => '4895', 'ShortName' => 'pldm_bios_table_attr_entry_decode_attribute_handle' }, - '59357' => { + '59323' => { 'Header' => 'bios_table.h', 'Param' => { '0' => { 'name' => 'entry', - 'type' => '48723' + 'type' => '48730' }, '1' => { 'name' => 'buffer', @@ -4527,12 +5186,12 @@ $VAR1 = { 'Return' => '74', 'ShortName' => 'pldm_bios_table_string_entry_decode_string_check' }, - '59523' => { + '59449' => { 'Header' => 'bios_table.h', 'Param' => { '0' => { 'name' => 'entry', - 'type' => '48723' + 'type' => '48730' }, '1' => { 'name' => 'buffer', @@ -4546,29 +5205,29 @@ $VAR1 = { 'Return' => '4895', 'ShortName' => 'pldm_bios_table_string_entry_decode_string' }, - '59689' => { + '59615' => { 'Header' => 'bios_table.h', 'Param' => { '0' => { 'name' => 'entry', - 'type' => '48723' + 'type' => '48730' } }, 'Return' => '4895', 'ShortName' => 'pldm_bios_table_string_entry_decode_string_length' }, - '59742' => { + '59668' => { 'Header' => 'bios_table.h', 'Param' => { '0' => { 'name' => 'entry', - 'type' => '48723' + 'type' => '48730' } }, 'Return' => '4895', 'ShortName' => 'pldm_bios_table_string_entry_decode_handle' }, - '59795' => { + '59721' => { 'Header' => 'bios_table.h', 'Param' => { '0' => { @@ -4591,7 +5250,7 @@ $VAR1 = { 'Return' => '74', 'ShortName' => 'pldm_bios_table_string_entry_encode_check' }, - '59986' => { + '59912' => { 'Header' => 'bios_table.h', 'Param' => { '0' => { @@ -4614,7 +5273,7 @@ $VAR1 = { 'Return' => '1', 'ShortName' => 'pldm_bios_table_string_entry_encode' }, - '60289' => { + '60215' => { 'Header' => 'bios_table.h', 'Param' => { '0' => { @@ -4754,7 +5413,7 @@ $VAR1 = { 'Return' => '74', 'ShortName' => 'encode_set_bios_table_resp' }, - '65857' => { + '65783' => { 'Header' => 'utils.h', 'Param' => { '0' => { @@ -4765,7 +5424,7 @@ $VAR1 = { 'Return' => '6265', 'ShortName' => 'is_transfer_flag_valid' }, - '66008' => { + '65934' => { 'Header' => 'firmware_update.h', 'Param' => { '0' => { @@ -4782,17 +5441,17 @@ $VAR1 = { }, '3' => { 'name' => 'non_functioning_component_indication', - 'type' => '66192' + 'type' => '66118' }, '4' => { 'name' => 'non_functioning_component_bitmap', - 'type' => '66197' + 'type' => '66123' } }, 'Return' => '74', 'ShortName' => 'decode_cancel_update_resp' }, - '66207' => { + '66133' => { 'Header' => 'firmware_update.h', 'Param' => { '0' => { @@ -4811,7 +5470,7 @@ $VAR1 = { 'Return' => '74', 'ShortName' => 'encode_cancel_update_req' }, - '66360' => { + '66286' => { 'Header' => 'firmware_update.h', 'Param' => { '0' => { @@ -4830,7 +5489,7 @@ $VAR1 = { 'Return' => '74', 'ShortName' => 'decode_cancel_update_component_resp' }, - '66442' => { + '66368' => { 'Header' => 'firmware_update.h', 'Param' => { '0' => { @@ -4849,7 +5508,7 @@ $VAR1 = { 'Return' => '74', 'ShortName' => 'encode_cancel_update_component_req' }, - '66595' => { + '66521' => { 'Header' => 'firmware_update.h', 'Param' => { '0' => { @@ -4890,12 +5549,31 @@ $VAR1 = { }, '9' => { 'name' => 'update_option_flags_enabled', - 'type' => '66936' + 'type' => '66862' } }, 'Return' => '74', 'ShortName' => 'decode_get_status_resp' }, + '66872' => { + 'Header' => 'firmware_update.h', + 'Param' => { + '0' => { + 'name' => 'instance_id', + 'type' => '168' + }, + '1' => { + 'name' => 'msg', + 'type' => '1615' + }, + '2' => { + 'name' => 'payload_length', + 'type' => '123' + } + }, + 'Return' => '74', + 'ShortName' => 'encode_get_status_req' + }, '6693' => { 'Header' => 'bios.h', 'Param' => { @@ -4919,26 +5597,7 @@ $VAR1 = { 'Return' => '74', 'ShortName' => 'decode_set_bios_table_resp' }, - '66946' => { - 'Header' => 'firmware_update.h', - 'Param' => { - '0' => { - 'name' => 'instance_id', - 'type' => '168' - }, - '1' => { - 'name' => 'msg', - 'type' => '1615' - }, - '2' => { - 'name' => 'payload_length', - 'type' => '123' - } - }, - 'Return' => '74', - 'ShortName' => 'encode_get_status_req' - }, - '67099' => { + '67025' => { 'Header' => 'firmware_update.h', 'Param' => { '0' => { @@ -4961,7 +5620,7 @@ $VAR1 = { 'Return' => '74', 'ShortName' => 'decode_activate_firmware_resp' }, - '67225' => { + '67151' => { 'Header' => 'firmware_update.h', 'Param' => { '0' => { @@ -4984,7 +5643,7 @@ $VAR1 = { 'Return' => '74', 'ShortName' => 'encode_activate_firmware_req' }, - '67446' => { + '67372' => { 'Header' => 'firmware_update.h', 'Param' => { '0' => { @@ -5007,7 +5666,7 @@ $VAR1 = { 'Return' => '74', 'ShortName' => 'encode_apply_complete_resp' }, - '67618' => { + '67544' => { 'Header' => 'firmware_update.h', 'Param' => { '0' => { @@ -5024,13 +5683,13 @@ $VAR1 = { }, '3' => { 'name' => 'comp_activation_methods_modification', - 'type' => '67740' + 'type' => '67666' } }, 'Return' => '74', 'ShortName' => 'decode_apply_complete_req' }, - '67750' => { + '67676' => { 'Header' => 'firmware_update.h', 'Param' => { '0' => { @@ -5053,7 +5712,7 @@ $VAR1 = { 'Return' => '74', 'ShortName' => 'encode_verify_complete_resp' }, - '67922' => { + '67848' => { 'Header' => 'firmware_update.h', 'Param' => { '0' => { @@ -5072,7 +5731,7 @@ $VAR1 = { 'Return' => '74', 'ShortName' => 'decode_verify_complete_req' }, - '68004' => { + '67930' => { 'Header' => 'firmware_update.h', 'Param' => { '0' => { @@ -5134,7 +5793,7 @@ $VAR1 = { 'Return' => '74', 'ShortName' => 'encode_set_bios_table_req' }, - '68176' => { + '68102' => { 'Header' => 'firmware_update.h', 'Param' => { '0' => { @@ -5153,7 +5812,7 @@ $VAR1 = { 'Return' => '74', 'ShortName' => 'decode_transfer_complete_req' }, - '68258' => { + '68184' => { 'Header' => 'firmware_update.h', 'Param' => { '0' => { @@ -5176,7 +5835,7 @@ $VAR1 = { 'Return' => '74', 'ShortName' => 'encode_request_firmware_data_resp' }, - '68430' => { + '68356' => { 'Header' => 'firmware_update.h', 'Param' => { '0' => { @@ -5199,7 +5858,7 @@ $VAR1 = { 'Return' => '74', 'ShortName' => 'decode_request_firmware_data_req' }, - '68562' => { + '68488' => { 'Header' => 'firmware_update.h', 'Param' => { '0' => { @@ -5224,7 +5883,7 @@ $VAR1 = { }, '5' => { 'name' => 'update_option_flags_enabled', - 'type' => '66936' + 'type' => '66862' }, '6' => { 'name' => 'time_before_req_fw_data', @@ -5234,7 +5893,7 @@ $VAR1 = { 'Return' => '74', 'ShortName' => 'decode_update_component_resp' }, - '68798' => { + '68724' => { 'Header' => 'firmware_update.h', 'Param' => { '0' => { @@ -5271,7 +5930,7 @@ $VAR1 = { }, '6' => { 'name' => 'update_option_flags', - 'type' => '61691' + 'type' => '61617' }, '7' => { 'name' => 'comp_ver_str_type', @@ -5283,13 +5942,13 @@ $VAR1 = { }, '9' => { 'name' => 'comp_ver_str', - 'type' => '69202' + 'type' => '69128' } }, 'Return' => '74', 'ShortName' => 'encode_update_component_req' }, - '69212' => { + '69138' => { 'Header' => 'firmware_update.h', 'Param' => { '0' => { @@ -5316,7 +5975,7 @@ $VAR1 = { 'Return' => '74', 'ShortName' => 'decode_pass_component_table_resp' }, - '69408' => { + '69334' => { 'Header' => 'firmware_update.h', 'Param' => { '0' => { @@ -5357,7 +6016,7 @@ $VAR1 = { }, '8' => { 'name' => 'comp_ver_str', - 'type' => '69202' + 'type' => '69128' }, '9' => { 'name' => 'msg', @@ -5367,7 +6026,7 @@ $VAR1 = { 'Return' => '74', 'ShortName' => 'encode_pass_component_table_req' }, - '69821' => { + '69747' => { 'Header' => 'firmware_update.h', 'Param' => { '0' => { @@ -5394,7 +6053,7 @@ $VAR1 = { 'Return' => '74', 'ShortName' => 'decode_request_update_resp' }, - '69962' => { + '69888' => { 'Header' => 'firmware_update.h', 'Param' => { '0' => { @@ -5427,7 +6086,7 @@ $VAR1 = { }, '7' => { 'name' => 'comp_img_set_ver_str', - 'type' => '69202' + 'type' => '69128' }, '8' => { 'name' => 'msg', @@ -5441,7 +6100,7 @@ $VAR1 = { 'Return' => '74', 'ShortName' => 'encode_request_update_req' }, - '70327' => { + '70253' => { 'Header' => 'firmware_update.h', 'Param' => { '0' => { @@ -5454,7 +6113,7 @@ $VAR1 = { }, '2' => { 'name' => 'component_data', - 'type' => '70483' + 'type' => '70409' }, '3' => { 'name' => 'active_comp_ver_str', @@ -5468,7 +6127,7 @@ $VAR1 = { 'Return' => '74', 'ShortName' => 'decode_get_firmware_parameters_resp_comp_entry' }, - '70493' => { + '70419' => { 'Header' => 'firmware_update.h', 'Param' => { '0' => { @@ -5481,7 +6140,7 @@ $VAR1 = { }, '2' => { 'name' => 'resp_data', - 'type' => '70713' + 'type' => '70639' }, '3' => { 'name' => 'active_comp_image_set_ver_str', @@ -5499,7 +6158,7 @@ $VAR1 = { 'Return' => '74', 'ShortName' => 'decode_get_firmware_parameters_resp' }, - '70718' => { + '70644' => { 'Header' => 'firmware_update.h', 'Param' => { '0' => { @@ -5518,7 +6177,7 @@ $VAR1 = { 'Return' => '74', 'ShortName' => 'encode_get_firmware_parameters_req' }, - '70855' => { + '70781' => { 'Header' => 'firmware_update.h', 'Param' => { '0' => { @@ -5543,13 +6202,13 @@ $VAR1 = { }, '5' => { 'name' => 'descriptor_data', - 'type' => '71011' + 'type' => '70937' } }, 'Return' => '74', 'ShortName' => 'decode_query_device_identifiers_resp' }, - '71021' => { + '70947' => { 'Header' => 'firmware_update.h', 'Param' => { '0' => { @@ -5568,7 +6227,7 @@ $VAR1 = { 'Return' => '74', 'ShortName' => 'encode_query_device_identifiers_req' }, - '71158' => { + '71084' => { 'Header' => 'firmware_update.h', 'Param' => { '0' => { @@ -5581,7 +6240,7 @@ $VAR1 = { }, '2' => { 'name' => 'pldm_comp_image_info', - 'type' => '71305' + 'type' => '71231' }, '3' => { 'name' => 'comp_version_str', @@ -5614,7 +6273,7 @@ $VAR1 = { 'Return' => '74', 'ShortName' => 'encode_set_bios_attribute_current_value_resp' }, - '71310' => { + '71236' => { 'Header' => 'firmware_update.h', 'Param' => { '0' => { @@ -5641,7 +6300,7 @@ $VAR1 = { 'Return' => '74', 'ShortName' => 'decode_vendor_defined_descriptor_value' }, - '71489' => { + '71415' => { 'Header' => 'firmware_update.h', 'Param' => { '0' => { @@ -5664,7 +6323,7 @@ $VAR1 = { 'Return' => '74', 'ShortName' => 'decode_descriptor_type_length_value' }, - '71661' => { + '71587' => { 'Header' => 'firmware_update.h', 'Param' => { '0' => { @@ -5681,7 +6340,7 @@ $VAR1 = { }, '3' => { 'name' => 'fw_device_id_record', - 'type' => '71928' + 'type' => '71854' }, '4' => { 'name' => 'applicable_components', @@ -5703,7 +6362,7 @@ $VAR1 = { 'Return' => '74', 'ShortName' => 'decode_firmware_device_id_record' }, - '71933' => { + '71859' => { 'Header' => 'firmware_update.h', 'Param' => { '0' => { @@ -5716,7 +6375,7 @@ $VAR1 = { }, '2' => { 'name' => 'package_header_info', - 'type' => '72080' + 'type' => '72006' }, '3' => { 'name' => 'package_version_str', @@ -5753,7 +6412,7 @@ $VAR1 = { 'Return' => '74', 'ShortName' => 'decode_set_bios_attribute_current_value_req' }, - '74271' => { + '74197' => { 'Header' => 'fru.h', 'Param' => { '0' => { @@ -5780,7 +6439,7 @@ $VAR1 = { 'Return' => '74', 'ShortName' => 'encode_set_fru_record_table_resp' }, - '74494' => { + '74420' => { 'Header' => 'fru.h', 'Param' => { '0' => { @@ -5807,30 +6466,7 @@ $VAR1 = { 'Return' => '74', 'ShortName' => 'decode_set_fru_record_table_req' }, - '7461' => { - 'Header' => 'bios.h', - 'Param' => { - '0' => { - 'name' => 'msg', - 'type' => '2029' - }, - '1' => { - 'name' => 'payload_length', - 'type' => '123' - }, - '2' => { - 'name' => 'completion_code', - 'type' => '2034' - }, - '3' => { - 'name' => 'next_transfer_handle', - 'type' => '2039' - } - }, - 'Return' => '74', - 'ShortName' => 'decode_set_bios_attribute_current_value_resp' - }, - '74661' => { + '74587' => { 'Header' => 'fru.h', 'Param' => { '0' => { @@ -5865,7 +6501,30 @@ $VAR1 = { 'Return' => '74', 'ShortName' => 'decode_get_fru_record_table_resp' }, - '74909' => { + '7461' => { + 'Header' => 'bios.h', + 'Param' => { + '0' => { + 'name' => 'msg', + 'type' => '2029' + }, + '1' => { + 'name' => 'payload_length', + 'type' => '123' + }, + '2' => { + 'name' => 'completion_code', + 'type' => '2034' + }, + '3' => { + 'name' => 'next_transfer_handle', + 'type' => '2039' + } + }, + 'Return' => '74', + 'ShortName' => 'decode_set_bios_attribute_current_value_resp' + }, + '74835' => { 'Header' => 'fru.h', 'Param' => { '0' => { @@ -5904,7 +6563,7 @@ $VAR1 = { 'Return' => '74', 'ShortName' => 'decode_get_fru_record_table_resp_safe' }, - '75167' => { + '75093' => { 'Header' => 'fru.h', 'Param' => { '0' => { @@ -5931,7 +6590,7 @@ $VAR1 = { 'Return' => '74', 'ShortName' => 'encode_get_fru_record_table_req' }, - '75385' => { + '75311' => { 'Header' => 'fru.h', 'Param' => { '0' => { @@ -5962,7 +6621,7 @@ $VAR1 = { 'Return' => '74', 'ShortName' => 'decode_get_fru_record_by_option_resp' }, - '75546' => { + '75472' => { 'Header' => 'fru.h', 'Param' => { '0' => { @@ -6036,7 +6695,7 @@ $VAR1 = { 'Return' => '74', 'ShortName' => 'encode_set_bios_attribute_current_value_req' }, - '75855' => { + '75781' => { 'Header' => 'fru.h', 'Param' => { '0' => { @@ -6075,7 +6734,7 @@ $VAR1 = { 'Return' => '74', 'ShortName' => 'decode_get_fru_record_by_option_req' }, - '76043' => { + '75969' => { 'Header' => 'fru.h', 'Param' => { '0' => { @@ -6118,7 +6777,7 @@ $VAR1 = { 'Return' => '74', 'ShortName' => 'encode_get_fru_record_by_option_req' }, - '76336' => { + '76262' => { 'Header' => 'fru.h', 'Param' => { '0' => { @@ -6153,7 +6812,7 @@ $VAR1 = { 'Return' => '1', 'ShortName' => 'get_fru_record_by_option' }, - '77018' => { + '76944' => { 'Header' => 'fru.h', 'Param' => { '0' => { @@ -6196,7 +6855,7 @@ $VAR1 = { 'Return' => '74', 'ShortName' => 'encode_fru_record' }, - '77281' => { + '77207' => { 'Header' => 'fru.h', 'Param' => { '0' => { @@ -6223,7 +6882,7 @@ $VAR1 = { 'Return' => '74', 'ShortName' => 'encode_get_fru_record_table_resp' }, - '77485' => { + '77411' => { 'Header' => 'fru.h', 'Param' => { '0' => { @@ -6246,7 +6905,7 @@ $VAR1 = { 'Return' => '74', 'ShortName' => 'decode_get_fru_record_table_req' }, - '77601' => { + '77527' => { 'Header' => 'fru.h', 'Param' => { '0' => { @@ -6293,7 +6952,7 @@ $VAR1 = { 'Return' => '74', 'ShortName' => 'encode_get_fru_record_table_metadata_resp' }, - '77905' => { + '77831' => { 'Header' => 'fru.h', 'Param' => { '0' => { @@ -6341,7 +7000,7 @@ $VAR1 = { 'Return' => '74', 'ShortName' => 'decode_get_fru_record_table_metadata_resp' }, - '78112' => { + '78038' => { 'Header' => 'fru.h', 'Param' => { '0' => { @@ -6395,13 +7054,57 @@ $VAR1 = { 'Return' => '74', 'ShortName' => 'encode_get_bios_current_value_by_handle_resp' }, - '79710' => { - 'Header' => 'pdr.h', + '80908' => { + 'Header' => 'pdr_oem_ibm.h', 'Param' => { '0' => { - 'name' => 'pdr', - 'type' => '6087' - }, + 'name' => 'repo', + 'type' => '80930' + } + }, + 'Return' => '78699', + 'ShortName' => 'pldm_pdr_find_last_local_record' + }, + '80991' => { + 'Header' => 'pdr.h', + 'Param' => { + '0' => { + 'name' => 'entity', + 'offset' => '-8', + 'type' => '78778' + }, + '1' => { + 'name' => 'parent', + 'offset' => '-16', + 'type' => '78778' + }, + '2' => { + 'name' => 'remote_container_id', + 'type' => '4895' + }, + '3' => { + 'name' => 'first_child', + 'type' => '80852' + }, + '4' => { + 'name' => 'next_sibling', + 'type' => '80852' + }, + '5' => { + 'name' => 'association_type', + 'type' => '168' + } + }, + 'Return' => '80852', + 'ShortName' => 'init_pldm_entity_node' + }, + '81176' => { + 'Header' => 'pdr.h', + 'Param' => { + '0' => { + 'name' => 'pdr', + 'type' => '6087' + }, '1' => { 'name' => 'pdr_len', 'type' => '4895' @@ -6412,81 +7115,181 @@ $VAR1 = { }, '3' => { 'name' => 'entities', - 'type' => '80360' + 'type' => '81826' } }, 'Return' => '1', 'ShortName' => 'pldm_entity_association_pdr_extract' }, - '80401' => { + '8158' => { + 'Header' => 'bios.h', + 'Param' => { + '0' => { + 'name' => 'msg', + 'type' => '2029' + }, + '1' => { + 'name' => 'payload_length', + 'type' => '123' + }, + '2' => { + 'name' => 'transfer_handle', + 'type' => '2039' + }, + '3' => { + 'name' => 'transfer_op_flag', + 'type' => '2034' + }, + '4' => { + 'name' => 'attribute_handle', + 'type' => '8294' + } + }, + 'Return' => '74', + 'ShortName' => 'decode_get_bios_attribute_current_value_by_handle_req' + }, + '81867' => { 'Header' => 'pdr.h', 'Param' => { '0' => { 'name' => 'tree', - 'type' => '80456' + 'type' => '81922' } }, 'Return' => '6265', 'ShortName' => 'pldm_is_empty_entity_assoc_tree' }, - '80461' => { + '81927' => { 'Header' => 'pdr.h', 'Param' => { '0' => { 'name' => 'tree', - 'type' => '80456' + 'type' => '81922' } }, 'Return' => '1', 'ShortName' => 'pldm_entity_association_tree_destroy_root' }, - '80624' => { + '82090' => { 'Header' => 'pdr.h', 'Param' => { '0' => { 'name' => 'org_tree', - 'type' => '80456' + 'type' => '81922' }, '1' => { 'name' => 'new_tree', - 'type' => '80456' + 'type' => '81922' } }, 'Return' => '1', 'ShortName' => 'pldm_entity_association_tree_copy_root' }, - '80840' => { + '82306' => { 'Header' => 'pdr.h', 'Param' => { '0' => { 'name' => 'tree', - 'type' => '80456' + 'type' => '81922' }, '1' => { 'name' => 'entity', - 'type' => '80365' + 'type' => '81831' + }, + '2' => { + 'name' => 'is_remote', + 'type' => '6265' } }, - 'Return' => '79598', + 'Return' => '80852', 'ShortName' => 'pldm_entity_association_tree_find' }, - '81199' => { + '82724' => { + 'Header' => 'pdr.h', + 'Param' => { + '0' => { + 'name' => 'tree', + 'type' => '81922' + }, + '1' => { + 'name' => 'entity', + 'type' => '81831' + }, + '2' => { + 'name' => 'is_remote', + 'type' => '6265' + } + }, + 'Return' => '80852', + 'ShortName' => 'pldm_entity_association_tree_find_if_remote' + }, + '8304' => { + 'Header' => 'bios.h', + 'Param' => { + '0' => { + 'name' => 'msg', + 'type' => '2029' + }, + '1' => { + 'name' => 'payload_length', + 'type' => '123' + }, + '2' => { + 'name' => 'completion_code', + 'type' => '2034' + }, + '3' => { + 'name' => 'next_transfer_handle', + 'type' => '2039' + }, + '4' => { + 'name' => 'transfer_flag', + 'type' => '2034' + }, + '5' => { + 'name' => 'attribute_data', + 'type' => '6481' + } + }, + 'Return' => '74', + 'ShortName' => 'decode_get_bios_attribute_current_value_by_handle_resp' + }, + '83190' => { + 'Header' => 'pdr.h', + 'Param' => { + '0' => { + 'name' => 'repo', + 'type' => '80930' + }, + '1' => { + 'name' => 'first', + 'type' => '180' + }, + '2' => { + 'name' => 'last', + 'type' => '180' + } + }, + 'Return' => '78699', + 'ShortName' => 'pldm_pdr_find_last_in_range' + }, + '83313' => { 'Header' => 'pdr.h', 'Param' => { '0' => { 'name' => 'repo', - 'type' => '81535' + 'type' => '83649' } }, 'Return' => '1', 'ShortName' => 'pldm_pdr_remove_remote_pdrs' }, - '81561' => { + '83675' => { 'Header' => 'pdr.h', 'Param' => { '0' => { 'name' => 'repo', - 'type' => '81535' + 'type' => '83649' }, '1' => { 'name' => 'terminus_handle', @@ -6496,67 +7299,159 @@ $VAR1 = { 'Return' => '1', 'ShortName' => 'pldm_pdr_remove_pdrs_by_terminus_handle' }, - '8158' => { + '83948' => { + 'Header' => 'pdr.h', + 'Param' => { + '0' => { + 'name' => 'tree', + 'type' => '81922' + }, + '1' => { + 'name' => 'entity', + 'offset' => '-8', + 'type' => '78778' + }, + '2' => { + 'name' => 'node', + 'type' => '82301' + } + }, + 'Return' => '1', + 'ShortName' => 'pldm_find_entity_ref_in_tree' + }, + '84339' => { + 'Header' => 'pdr.h', + 'Param' => { + '0' => { + 'name' => 'repo', + 'type' => '83649' + }, + '1' => { + 'name' => 'entity', + 'offset' => '-8', + 'type' => '78778' + }, + '2' => { + 'name' => 'parent', + 'offset' => '-16', + 'type' => '78778' + }, + '3' => { + 'name' => 'event_data_op', + 'type' => '2034' + }, + '4' => { + 'name' => 'is_remote', + 'type' => '6265' + }, + '5' => { + 'name' => 'bmc_record_handle', + 'type' => '180' + } + }, + 'Return' => '180', + 'ShortName' => 'pldm_entity_association_pdr_add_contained_entity' + }, + '8460' => { 'Header' => 'bios.h', 'Param' => { '0' => { - 'name' => 'msg', - 'type' => '2029' + 'name' => 'instance_id', + 'type' => '168' }, '1' => { - 'name' => 'payload_length', - 'type' => '123' + 'name' => 'transfer_handle', + 'type' => '180' }, '2' => { - 'name' => 'transfer_handle', - 'type' => '2039' + 'name' => 'transfer_op_flag', + 'type' => '168' }, '3' => { - 'name' => 'transfer_op_flag', - 'type' => '2034' + 'name' => 'attribute_handle', + 'type' => '4895' }, '4' => { - 'name' => 'attribute_handle', - 'type' => '8294' + 'name' => 'msg', + 'type' => '1615' } }, 'Return' => '74', - 'ShortName' => 'decode_get_bios_attribute_current_value_by_handle_req' + 'ShortName' => 'encode_get_bios_attribute_current_value_by_handle_req' }, - '81934' => { + '85126' => { 'Header' => 'pdr.h', 'Param' => { '0' => { - 'name' => 'tree', - 'type' => '80456' + 'name' => 'repo', + 'type' => '83649' }, '1' => { 'name' => 'entity', 'offset' => '-8', - 'type' => '78765' + 'type' => '78778' }, '2' => { + 'name' => 'event_data_op', + 'type' => '2034' + }, + '3' => { + 'name' => 'is_remote', + 'type' => '6265' + } + }, + 'Return' => '180', + 'ShortName' => 'pldm_entity_association_pdr_remove_contained_entity' + }, + '86164' => { + 'Header' => 'pdr.h', + 'Param' => { + '0' => { 'name' => 'node', - 'type' => '80835' + 'type' => '80852' + }, + '1' => { + 'name' => 'repo', + 'type' => '83649' + }, + '2' => { + 'name' => 'entities', + 'type' => '81826' + }, + '3' => { + 'name' => 'num_entities', + 'type' => '123' + }, + '4' => { + 'name' => 'is_remote', + 'type' => '6265' + }, + '5' => { + 'name' => 'terminus_handle', + 'type' => '4895' + }, + '6' => { + 'name' => 'record_handle', + 'type' => '180' } }, - 'Return' => '1', - 'ShortName' => 'pldm_find_entity_ref_in_tree' + 'Return' => '74', + 'ShortName' => 'pldm_entity_association_pdr_add_from_node_with_record_handle' }, - '82265' => { + '86402' => { 'Header' => 'pdr.h', 'Param' => { '0' => { 'name' => 'node', - 'type' => '79598' + 'type' => '80852' }, '1' => { 'name' => 'repo', - 'type' => '81535' + 'type' => '83649' }, '2' => { 'name' => 'entities', - 'type' => '80360' + 'type' => '81826' }, '3' => { 'name' => 'num_entities', @@ -6569,21 +7464,25 @@ $VAR1 = { '5' => { 'name' => 'terminus_handle', 'type' => '4895' + }, + '6' => { + 'name' => 'record_handle', + 'type' => '180' } }, 'Return' => '1', 'ShortName' => 'pldm_entity_association_pdr_add_from_node' }, - '82554' => { + '86718' => { 'Header' => 'pdr.h', 'Param' => { '0' => { 'name' => 'tree', - 'type' => '80456' + 'type' => '81922' }, '1' => { 'name' => 'repo', - 'type' => '81535' + 'type' => '83649' }, '2' => { 'name' => 'is_remote', @@ -6597,7 +7496,7 @@ $VAR1 = { 'Return' => '1', 'ShortName' => 'pldm_entity_association_pdr_add' }, - '8304' => { + '8672' => { 'Header' => 'bios.h', 'Param' => { '0' => { @@ -6621,640 +7520,567 @@ $VAR1 = { 'type' => '2034' }, '5' => { - 'name' => 'attribute_data', - 'type' => '6481' + 'name' => 'bios_table_offset', + 'type' => '8822' } }, 'Return' => '74', - 'ShortName' => 'decode_get_bios_attribute_current_value_by_handle_resp' + 'ShortName' => 'decode_get_bios_table_resp' }, - '84092' => { - 'Header' => 'pdr.h', - 'Param' => { - '0' => { - 'name' => 'parent', - 'type' => '79598' - }, - '1' => { - 'name' => 'node', - 'type' => '80365' - } - }, - 'Return' => '6265', - 'ShortName' => 'pldm_is_current_parent_child' - }, - '84330' => { - 'Header' => 'pdr.h', - 'Param' => { - '0' => { - 'name' => 'node', - 'type' => '79598' - }, - '1' => { - 'name' => 'association_type', - 'type' => '168' - } - }, - 'Return' => '168', - 'ShortName' => 'pldm_entity_get_num_children' - }, - '8460' => { + '8832' => { 'Header' => 'bios.h', 'Param' => { '0' => { - 'name' => 'instance_id', - 'type' => '168' + 'name' => 'msg', + 'type' => '2029' }, '1' => { - 'name' => 'transfer_handle', - 'type' => '180' + 'name' => 'payload_length', + 'type' => '123' }, '2' => { - 'name' => 'transfer_op_flag', - 'type' => '168' + 'name' => 'transfer_handle', + 'type' => '2039' }, '3' => { - 'name' => 'attribute_handle', - 'type' => '4895' + 'name' => 'transfer_op_flag', + 'type' => '2034' }, '4' => { - 'name' => 'msg', - 'type' => '1615' + 'name' => 'table_type', + 'type' => '2034' } }, 'Return' => '74', - 'ShortName' => 'encode_get_bios_attribute_current_value_by_handle_req' + 'ShortName' => 'decode_get_bios_table_req' }, - '84652' => { + '88353' => { 'Header' => 'pdr.h', 'Param' => { '0' => { + 'name' => 'parent', + 'type' => '80852' + }, + '1' => { 'name' => 'node', - 'type' => '79598' + 'type' => '81831' } }, 'Return' => '6265', - 'ShortName' => 'pldm_entity_is_exist_parent' + 'ShortName' => 'pldm_is_current_parent_child' }, - '84786' => { + '88591' => { 'Header' => 'pdr.h', 'Param' => { '0' => { 'name' => 'node', - 'type' => '79598' + 'type' => '80852' + }, + '1' => { + 'name' => 'association_type', + 'type' => '168' } }, - 'Return' => '78765', - 'ShortName' => 'pldm_entity_get_parent' + 'Return' => '168', + 'ShortName' => 'pldm_entity_get_num_children' }, - '84941' => { + '88913' => { 'Header' => 'pdr.h', 'Param' => { '0' => { 'name' => 'node', - 'type' => '79598' + 'type' => '80852' } }, 'Return' => '6265', - 'ShortName' => 'pldm_entity_is_node_parent' + 'ShortName' => 'pldm_entity_is_exist_parent' }, - '85096' => { + '89047' => { 'Header' => 'pdr.h', 'Param' => { '0' => { - 'name' => 'tree', - 'type' => '80456' + 'name' => 'node', + 'type' => '80852' } }, - 'Return' => '1', - 'ShortName' => 'pldm_entity_association_tree_destroy' + 'Return' => '78778', + 'ShortName' => 'pldm_entity_get_parent' }, - '85379' => { + '89202' => { 'Header' => 'pdr.h', 'Param' => { '0' => { - 'name' => 'tree', - 'type' => '80456' - }, - '1' => { - 'name' => 'entities', - 'type' => '80360' - }, - '2' => { - 'name' => 'size', - 'type' => '8822' + 'name' => 'node', + 'type' => '80852' } }, - 'Return' => '1', - 'ShortName' => 'pldm_entity_association_tree_visit' + 'Return' => '6265', + 'ShortName' => 'pldm_entity_is_node_parent' }, - '85925' => { + '89357' => { 'Header' => 'pdr.h', 'Param' => { '0' => { 'name' => 'tree', - 'type' => '80456' + 'type' => '81922' }, '1' => { 'name' => 'entity', - 'type' => '80365' - }, - '2' => { - 'name' => 'entity_instance_number', - 'type' => '4895' - }, - '3' => { - 'name' => 'parent', - 'type' => '79598' - }, - '4' => { - 'name' => 'association_type', - 'type' => '168' + 'offset' => '-40', + 'type' => '78778' } }, - 'Return' => '79598', - 'ShortName' => 'pldm_entity_association_tree_add' + 'Return' => '1', + 'ShortName' => 'pldm_entity_association_tree_delete_node' }, - '8672' => { + '8973' => { 'Header' => 'bios.h', 'Param' => { '0' => { - 'name' => 'msg', - 'type' => '2029' + 'name' => 'instance_id', + 'type' => '168' }, '1' => { - 'name' => 'payload_length', - 'type' => '123' + 'name' => 'transfer_handle', + 'type' => '180' }, '2' => { - 'name' => 'completion_code', - 'type' => '2034' + 'name' => 'transfer_op_flag', + 'type' => '168' }, '3' => { - 'name' => 'next_transfer_handle', - 'type' => '2039' + 'name' => 'table_type', + 'type' => '168' }, '4' => { - 'name' => 'transfer_flag', - 'type' => '2034' - }, - '5' => { - 'name' => 'bios_table_offset', - 'type' => '8822' + 'name' => 'msg', + 'type' => '1615' } }, 'Return' => '74', - 'ShortName' => 'decode_get_bios_table_resp' + 'ShortName' => 'encode_get_bios_table_req' }, - '87002' => { + '89758' => { 'Header' => 'pdr.h', - 'Return' => '80456', - 'ShortName' => 'pldm_entity_association_tree_init' + 'Param' => { + '0' => { + 'name' => 'tree', + 'type' => '81922' + } + }, + 'Return' => '1', + 'ShortName' => 'pldm_entity_association_tree_destroy' }, - '87159' => { + '90041' => { 'Header' => 'pdr.h', 'Param' => { '0' => { - 'name' => 'node', - 'type' => '79598' + 'name' => 'tree', + 'type' => '81922' + }, + '1' => { + 'name' => 'entities', + 'type' => '81826' + }, + '2' => { + 'name' => 'size', + 'type' => '8822' } }, - 'Return' => '78765', - 'ShortName' => 'pldm_entity_extract' + 'Return' => '1', + 'ShortName' => 'pldm_entity_association_tree_visit' }, - '87512' => { + '90587' => { 'Header' => 'pdr.h', 'Param' => { '0' => { - 'name' => 'repo', - 'type' => '87837' + 'name' => 'tree', + 'type' => '81922' }, '1' => { - 'name' => 'terminus_handle', - 'type' => '4895' + 'name' => 'entity', + 'type' => '81831' }, '2' => { - 'name' => 'tid', - 'type' => '168' + 'name' => 'entity_instance_number', + 'type' => '4895' }, '3' => { - 'name' => 'tl_eid', - 'type' => '168' + 'name' => 'parent', + 'type' => '80852' }, '4' => { - 'name' => 'valid_bit', + 'name' => 'association_type', + 'type' => '168' + }, + '5' => { + 'name' => 'is_remote', + 'type' => '6265' + }, + '6' => { + 'name' => 'is_update_container_id', 'type' => '6265' + }, + '7' => { + 'name' => 'container_id', + 'type' => '4895' } }, - 'Return' => '1', - 'ShortName' => 'pldm_pdr_update_TL_pdr' + 'Return' => '80852', + 'ShortName' => 'pldm_entity_association_tree_add_entity' }, - '87857' => { + '91184' => { 'Header' => 'pdr.h', 'Param' => { '0' => { - 'name' => 'repo', - 'type' => '87837' + 'name' => 'tree', + 'type' => '81922' }, '1' => { - 'name' => 'fru_rsi', - 'type' => '4895' + 'name' => 'entity', + 'type' => '81831' }, '2' => { - 'name' => 'terminus_handle', - 'type' => '8294' + 'name' => 'entity_instance_number', + 'type' => '4895' }, '3' => { - 'name' => 'entity_type', - 'type' => '8294' + 'name' => 'parent', + 'type' => '80852' }, '4' => { - 'name' => 'entity_instance_num', - 'type' => '8294' + 'name' => 'association_type', + 'type' => '168' }, '5' => { + 'name' => 'is_remote', + 'type' => '6265' + }, + '6' => { + 'name' => 'is_update_container_id', + 'type' => '6265' + }, + '7' => { 'name' => 'container_id', - 'type' => '8294' + 'type' => '4895' } }, - 'Return' => '87842', - 'ShortName' => 'pldm_pdr_fru_record_set_find_by_rsi' + 'Return' => '80852', + 'ShortName' => 'pldm_entity_association_tree_add' }, - '8832' => { + '91686' => { + 'Header' => 'pdr.h', + 'Return' => '81922', + 'ShortName' => 'pldm_entity_association_tree_init' + }, + '9179' => { 'Header' => 'bios.h', 'Param' => { '0' => { - 'name' => 'msg', - 'type' => '2029' + 'name' => 'instance_id', + 'type' => '168' }, '1' => { - 'name' => 'payload_length', - 'type' => '123' + 'name' => 'completion_code', + 'type' => '168' }, '2' => { - 'name' => 'transfer_handle', - 'type' => '2039' + 'name' => 'next_transfer_handle', + 'type' => '180' }, '3' => { - 'name' => 'transfer_op_flag', - 'type' => '2034' + 'name' => 'transfer_flag', + 'type' => '168' }, '4' => { - 'name' => 'table_type', + 'name' => 'table_data', 'type' => '2034' + }, + '5' => { + 'name' => 'payload_length', + 'type' => '123' + }, + '6' => { + 'name' => 'msg', + 'type' => '1615' } }, 'Return' => '74', - 'ShortName' => 'decode_get_bios_table_req' + 'ShortName' => 'encode_get_bios_table_resp' }, - '88451' => { + '91843' => { 'Header' => 'pdr.h', 'Param' => { '0' => { - 'name' => 'repo', - 'type' => '81535' + 'name' => 'entity', + 'type' => '91913' }, '1' => { - 'name' => 'terminus_handle', - 'type' => '4895' - }, - '2' => { - 'name' => 'fru_rsi', - 'type' => '4895' - }, - '3' => { - 'name' => 'entity_type', - 'type' => '4895' - }, - '4' => { - 'name' => 'entity_instance_num', - 'type' => '4895' - }, - '5' => { - 'name' => 'container_id', - 'type' => '4895' - }, - '6' => { - 'name' => 'bmc_record_handle', - 'type' => '180' + 'name' => 'cid', + 'type' => '8294' } }, - 'Return' => '180', - 'ShortName' => 'pldm_pdr_add_fru_record_set' + 'Return' => '74', + 'ShortName' => 'pldm_entity_node_get_remote_container_id' }, - '88768' => { + '91918' => { 'Header' => 'pdr.h', 'Param' => { '0' => { - 'name' => 'record', - 'type' => '87842' + 'name' => 'entity', + 'type' => '91913' } }, - 'Return' => '6265', - 'ShortName' => 'pldm_pdr_record_is_remote' + 'Return' => '4895', + 'ShortName' => 'pldm_extract_host_container_id' }, - '88923' => { + '92120' => { 'Header' => 'pdr.h', 'Param' => { '0' => { - 'name' => 'repo', - 'type' => '87837' - }, - '1' => { - 'name' => 'record', - 'type' => '87842' + 'name' => 'node', + 'type' => '80852' } }, - 'Return' => '180', - 'ShortName' => 'pldm_pdr_get_record_handle' + 'Return' => '78778', + 'ShortName' => 'pldm_entity_extract' }, - '89136' => { + '92190' => { 'Header' => 'pdr.h', 'Param' => { '0' => { - 'name' => 'repo', - 'type' => '87837' + 'name' => 'tree', + 'type' => '81922' } }, - 'Return' => '180', - 'ShortName' => 'pldm_pdr_get_repo_size' + 'Return' => '4895', + 'ShortName' => 'next_container_id' }, - '89267' => { + '92388' => { 'Header' => 'pdr.h', 'Param' => { '0' => { 'name' => 'repo', - 'type' => '87837' + 'type' => '83649' + }, + '1' => { + 'name' => 'sensor_id', + 'type' => '4895' + }, + '2' => { + 'name' => 'is_remote', + 'type' => '6265' } }, - 'Return' => '180', - 'ShortName' => 'pldm_pdr_get_record_count' + 'Return' => '4895', + 'ShortName' => 'pldm_delete_by_sensor_id' }, - '89398' => { + '92769' => { 'Header' => 'pdr.h', 'Param' => { '0' => { 'name' => 'repo', - 'type' => '87837' + 'type' => '83649' }, '1' => { - 'name' => 'pdr_type', - 'type' => '168' + 'name' => 'effecter_id', + 'type' => '4895' }, '2' => { - 'name' => 'curr_record', - 'type' => '87842' - }, - '3' => { - 'name' => 'data', - 'type' => '71011' - }, - '4' => { - 'name' => 'size', - 'type' => '2039' + 'name' => 'is_remote', + 'type' => '6265' } }, - 'Return' => '87842', - 'ShortName' => 'pldm_pdr_find_record_by_type' + 'Return' => '4895', + 'ShortName' => 'pldm_delete_by_effecter_id' }, - '89663' => { + '93129' => { 'Header' => 'pdr.h', 'Param' => { '0' => { 'name' => 'repo', - 'type' => '87837' + 'type' => '80930' }, '1' => { - 'name' => 'curr_record', - 'type' => '87842' + 'name' => 'sensorId', + 'type' => '4895' }, '2' => { - 'name' => 'data', - 'type' => '71011' - }, - '3' => { - 'name' => 'size', - 'type' => '2039' - }, - '4' => { - 'name' => 'next_record_handle', - 'type' => '2039' + 'name' => 'instanceNumber', + 'type' => '4895' } }, - 'Return' => '87842', - 'ShortName' => 'pldm_pdr_get_next_record' + 'Return' => '1', + 'ShortName' => 'pldm_change_instance_number_of_sensor' }, - '8973' => { - 'Header' => 'bios.h', - 'Param' => { - '0' => { - 'name' => 'instance_id', - 'type' => '168' - }, - '1' => { - 'name' => 'transfer_handle', - 'type' => '180' - }, - '2' => { - 'name' => 'transfer_op_flag', - 'type' => '168' - }, - '3' => { - 'name' => 'table_type', - 'type' => '168' - }, - '4' => { - 'name' => 'msg', - 'type' => '1615' - } - }, - 'Return' => '74', - 'ShortName' => 'encode_get_bios_table_req' - }, - '90192' => { + '93407' => { 'Header' => 'pdr.h', 'Param' => { '0' => { 'name' => 'repo', - 'type' => '87837' + 'type' => '80930' }, '1' => { - 'name' => 'record_handle', - 'type' => '180' + 'name' => 'effecterId', + 'type' => '4895' }, '2' => { - 'name' => 'data', - 'type' => '71011' - }, - '3' => { - 'name' => 'size', - 'type' => '2039' - }, - '4' => { - 'name' => 'next_record_handle', - 'type' => '2039' + 'name' => 'instanceNumber', + 'type' => '4895' } }, - 'Return' => '87842', - 'ShortName' => 'pldm_pdr_find_record' + 'Return' => '1', + 'ShortName' => 'pldm_change_instance_number_of_effecter' }, - '90652' => { + '93664' => { 'Header' => 'pdr.h', 'Param' => { '0' => { 'name' => 'repo', - 'type' => '81535' + 'type' => '80930' + }, + '1' => { + 'name' => 'sensorId', + 'type' => '4895' + }, + '2' => { + 'name' => 'containerId', + 'type' => '4895' } }, 'Return' => '1', - 'ShortName' => 'pldm_pdr_destroy' - }, - '90910' => { - 'Header' => 'pdr.h', - 'Return' => '81535', - 'ShortName' => 'pldm_pdr_init' + 'ShortName' => 'pldm_change_container_id_of_sensor' }, - '91085' => { + '93921' => { 'Header' => 'pdr.h', 'Param' => { '0' => { 'name' => 'repo', - 'type' => '81535' + 'type' => '80930' }, '1' => { - 'name' => 'data', - 'type' => '6087' + 'name' => 'effecterId', + 'type' => '4895' }, '2' => { - 'name' => 'size', - 'type' => '180' + 'name' => 'containerId', + 'type' => '4895' + } + }, + 'Return' => '1', + 'ShortName' => 'pldm_change_container_id_of_effecter' + }, + '94213' => { + 'Header' => 'pdr.h', + 'Param' => { + '0' => { + 'name' => 'repo', + 'type' => '80930' }, - '3' => { + '1' => { 'name' => 'record_handle', 'type' => '180' - }, - '4' => { - 'name' => 'is_remote', - 'type' => '6265' - }, - '5' => { - 'name' => 'terminus_handle', - 'type' => '4895' } }, - 'Return' => '180', - 'ShortName' => 'pldm_pdr_add' + 'Return' => '78778', + 'ShortName' => 'pldm_get_entity_from_record_handle' }, - '9179' => { + '9456' => { 'Header' => 'bios.h', 'Param' => { '0' => { - 'name' => 'instance_id', - 'type' => '168' + 'name' => 'msg', + 'type' => '2029' }, '1' => { - 'name' => 'completion_code', - 'type' => '168' - }, - '2' => { - 'name' => 'next_transfer_handle', - 'type' => '180' - }, - '3' => { - 'name' => 'transfer_flag', - 'type' => '168' - }, - '4' => { - 'name' => 'table_data', - 'type' => '2034' - }, - '5' => { 'name' => 'payload_length', 'type' => '123' }, - '6' => { - 'name' => 'msg', - 'type' => '1615' + '2' => { + 'name' => 'completion_code', + 'type' => '2034' } }, 'Return' => '74', - 'ShortName' => 'encode_get_bios_table_resp' + 'ShortName' => 'decode_set_date_time_resp' }, - '93621' => { - 'Header' => 'utils.h', - 'Param' => { - '0' => { - 'name' => 'dec', - 'type' => '180' - } - }, - 'Return' => '180', - 'ShortName' => 'dec2bcd32' - }, - '93713' => { - 'Header' => 'utils.h', + '94601' => { + 'Header' => 'pdr.h', 'Param' => { '0' => { - 'name' => 'bcd', + 'name' => 'repo', + 'type' => '83649' + }, + '1' => { + 'name' => 'record_handle', 'type' => '180' + }, + '2' => { + 'name' => 'is_remote', + 'type' => '6265' } }, - 'Return' => '180', - 'ShortName' => 'bcd2dec32' + 'Return' => '1', + 'ShortName' => 'pldm_delete_by_record_handle' }, - '94123' => { - 'Header' => 'utils.h', + '94893' => { + 'Header' => 'pdr.h', 'Param' => { '0' => { - 'name' => 'version', - 'type' => '3250' + 'name' => 'repo', + 'type' => '80930' }, '1' => { - 'name' => 'buffer', - 'type' => '11261' + 'name' => 'entity_type', + 'type' => '4895' }, '2' => { - 'name' => 'buffer_size', - 'type' => '123' + 'name' => 'entity_instance', + 'type' => '4895' + }, + '3' => { + 'name' => 'range_exclude_start_handle', + 'type' => '180' + }, + '4' => { + 'name' => 'range_exclude_end_handle', + 'type' => '180' + }, + '5' => { + 'name' => 'container_id', + 'type' => '8294' } }, - 'Return' => '12204', - 'ShortName' => 'ver2str' + 'Return' => '74', + 'ShortName' => 'pldm_pdr_find_container_id_range_exclude' }, - '94251' => { - 'Header' => 'utils.h', + '95321' => { + 'Header' => 'pdr.h', 'Param' => { '0' => { - 'name' => 'data', - 'type' => '1434' + 'name' => 'repo', + 'type' => '80930' }, '1' => { - 'name' => 'size', - 'type' => '123' + 'name' => 'terminus_handle', + 'type' => '4895' + }, + '2' => { + 'name' => 'tid', + 'type' => '168' + }, + '3' => { + 'name' => 'tl_eid', + 'type' => '168' + }, + '4' => { + 'name' => 'valid_bit', + 'type' => '6265' } }, - 'Return' => '168', - 'ShortName' => 'crc8' + 'Return' => '1', + 'ShortName' => 'pldm_pdr_update_TL_pdr' }, - '9456' => { - 'Header' => 'bios.h', - 'Param' => { - '0' => { - 'name' => 'msg', - 'type' => '2029' - }, - '1' => { - 'name' => 'payload_length', - 'type' => '123' - }, - '2' => { - 'name' => 'completion_code', - 'type' => '2034' - } - }, - 'Return' => '74', - 'ShortName' => 'decode_set_date_time_resp' - }, '9534' => { 'Header' => 'bios.h', 'Param' => { @@ -7278,80 +8104,124 @@ $VAR1 = { 'Return' => '74', 'ShortName' => 'encode_set_date_time_resp' }, - '95522' => { - 'Header' => 'instance-id.h', + '95661' => { + 'Header' => 'pdr.h', 'Param' => { '0' => { - 'name' => 'ctx', - 'type' => '95730' + 'name' => 'repo', + 'type' => '83649' }, '1' => { - 'name' => 'tid', - 'type' => '94847' + 'name' => 'fru_rsi', + 'type' => '4895' }, '2' => { - 'name' => 'iid', - 'type' => '94859' + 'name' => 'is_remote', + 'type' => '6265' + } + }, + 'Return' => '180', + 'ShortName' => 'pldm_pdr_remove_fru_record_set_by_rsi' + }, + '96016' => { + 'Header' => 'pdr.h', + 'Param' => { + '0' => { + 'name' => 'repo', + 'type' => '80930' + }, + '1' => { + 'name' => 'fru_rsi', + 'type' => '4895' + }, + '2' => { + 'name' => 'terminus_handle', + 'type' => '8294' + }, + '3' => { + 'name' => 'entity_type', + 'type' => '8294' + }, + '4' => { + 'name' => 'entity_instance_num', + 'type' => '8294' + }, + '5' => { + 'name' => 'container_id', + 'type' => '8294' + }, + '6' => { + 'name' => 'is_remote', + 'type' => '6265' } }, - 'Return' => '74', - 'ShortName' => 'pldm_instance_id_free' + 'Return' => '95646', + 'ShortName' => 'pldm_pdr_fru_record_set_find_by_rsi' }, - '95735' => { - 'Header' => 'instance-id.h', + '96625' => { + 'Header' => 'pdr.h', 'Param' => { '0' => { - 'name' => 'ctx', - 'type' => '95730' + 'name' => 'repo', + 'type' => '83649' }, '1' => { - 'name' => 'tid', - 'type' => '94847' + 'name' => 'terminus_handle', + 'type' => '4895' }, '2' => { - 'name' => 'iid', - 'type' => '96136' - } - }, - 'Return' => '74', - 'ShortName' => 'pldm_instance_id_alloc' - }, - '96141' => { - 'Header' => 'instance-id.h', - 'Param' => { - '0' => { - 'name' => 'ctx', - 'type' => '95730' + 'name' => 'fru_rsi', + 'type' => '4895' + }, + '3' => { + 'name' => 'entity_type', + 'type' => '4895' + }, + '4' => { + 'name' => 'entity_instance_num', + 'type' => '4895' + }, + '5' => { + 'name' => 'container_id', + 'type' => '4895' + }, + '6' => { + 'name' => 'bmc_record_handle', + 'type' => '180' + }, + '7' => { + 'name' => 'hotplug', + 'type' => '6265' } }, - 'Return' => '74', - 'ShortName' => 'pldm_instance_db_destroy' + 'Return' => '180', + 'ShortName' => 'pldm_pdr_add_fru_record_set' }, - '96226' => { - 'Header' => 'instance-id.h', + '97038' => { + 'Header' => 'pdr.h', 'Param' => { '0' => { - 'name' => 'ctx', - 'type' => '96312' + 'name' => 'record', + 'type' => '95646' } }, - 'Return' => '74', - 'ShortName' => 'pldm_instance_db_init_default' + 'Return' => '6265', + 'ShortName' => 'pldm_pdr_record_is_remote' }, - '96317' => { - 'Header' => 'instance-id.h', + '97193' => { + 'Header' => 'pdr.h', 'Param' => { '0' => { - 'name' => 'ctx', - 'type' => '96312' + 'name' => 'repo', + 'type' => '80930' }, '1' => { - 'name' => 'dbpath', - 'type' => '12199' + 'name' => 'record', + 'type' => '95646' } }, - 'Return' => '74', - 'ShortName' => 'pldm_instance_db_init' + 'Return' => '180', + 'ShortName' => 'pldm_pdr_get_record_handle' }, '9723' => { 'Header' => 'bios.h', @@ -7392,114 +8262,178 @@ $VAR1 = { 'Return' => '74', 'ShortName' => 'decode_set_date_time_req' }, - '97428' => { - 'Header' => 'pldm.h', + '97411' => { + 'Header' => 'pdr.h', + 'Param' => { + '0' => { + 'name' => 'repo', + 'type' => '80930' + } + }, + 'Return' => '180', + 'ShortName' => 'pldm_pdr_get_repo_size' + }, + '97545' => { + 'Header' => 'pdr.h', + 'Param' => { + '0' => { + 'name' => 'repo', + 'type' => '80930' + } + }, + 'Return' => '180', + 'ShortName' => 'pldm_pdr_get_record_count' + }, + '97679' => { + 'Header' => 'pdr.h', 'Param' => { '0' => { - 'name' => 'eid', - 'type' => '96798' + 'name' => 'repo', + 'type' => '80930' }, '1' => { - 'name' => 'mctp_fd', - 'type' => '74' + 'name' => 'pdr_type', + 'type' => '168' }, '2' => { - 'name' => 'pldm_req_msg', - 'type' => '6087' + 'name' => 'curr_record', + 'type' => '95646' }, '3' => { - 'name' => 'req_msg_len', - 'type' => '123' + 'name' => 'data', + 'type' => '70937' + }, + '4' => { + 'name' => 'size', + 'type' => '2039' } }, - 'Return' => '96907', - 'ShortName' => 'pldm_send' + 'Return' => '95646', + 'ShortName' => 'pldm_pdr_find_record_by_type' }, - '97809' => { - 'Header' => 'pldm.h', + '97953' => { + 'Header' => 'pdr.h', 'Param' => { '0' => { - 'name' => 'eid', - 'type' => '96798' + 'name' => 'repo', + 'type' => '80930' }, '1' => { - 'name' => 'mctp_fd', - 'type' => '74' + 'name' => 'curr_record', + 'type' => '95646' }, '2' => { - 'name' => 'pldm_req_msg', - 'type' => '6087' + 'name' => 'data', + 'type' => '70937' }, '3' => { - 'name' => 'req_msg_len', - 'type' => '123' + 'name' => 'size', + 'type' => '2039' }, '4' => { - 'name' => 'pldm_resp_msg', - 'type' => '71011' + 'name' => 'next_record_handle', + 'type' => '2039' + } + }, + 'Return' => '95646', + 'ShortName' => 'pldm_pdr_get_next_record' + }, + '98472' => { + 'Header' => 'pdr.h', + 'Param' => { + '0' => { + 'name' => 'repo', + 'type' => '83649' }, - '5' => { - 'name' => 'resp_msg_len', - 'type' => '8822' + '1' => { + 'name' => 'record_handle', + 'type' => '180' + }, + '2' => { + 'name' => 'prev_record_handle', + 'type' => '2039' } }, - 'Return' => '96907', - 'ShortName' => 'pldm_send_recv' + 'Return' => '6265', + 'ShortName' => 'pldm_pdr_find_prev_record_handle' }, - '98238' => { - 'Header' => 'pldm.h', + '98707' => { + 'Header' => 'pdr.h', 'Param' => { '0' => { - 'name' => 'eid', - 'type' => '96798' + 'name' => 'repo', + 'type' => '80930' }, '1' => { - 'name' => 'mctp_fd', - 'type' => '74' + 'name' => 'record_handle', + 'type' => '180' }, '2' => { - 'name' => 'instance_id', - 'type' => '168' + 'name' => 'data', + 'type' => '70937' }, '3' => { - 'name' => 'pldm_resp_msg', - 'type' => '71011' + 'name' => 'size', + 'type' => '2039' }, '4' => { - 'name' => 'resp_msg_len', - 'type' => '8822' + 'name' => 'next_record_handle', + 'type' => '2039' + } + }, + 'Return' => '95646', + 'ShortName' => 'pldm_pdr_find_record' + }, + '99178' => { + 'Header' => 'pdr.h', + 'Param' => { + '0' => { + 'name' => 'repo', + 'type' => '83649' } }, - 'Return' => '96907', - 'ShortName' => 'pldm_recv' + 'Return' => '1', + 'ShortName' => 'pldm_pdr_destroy' + }, + '99436' => { + 'Header' => 'pdr.h', + 'Return' => '83649', + 'ShortName' => 'pldm_pdr_init' }, - '98466' => { - 'Header' => 'pldm.h', + '99611' => { + 'Header' => 'pdr.h', 'Param' => { '0' => { - 'name' => 'eid', - 'type' => '96798' + 'name' => 'repo', + 'type' => '83649' }, '1' => { - 'name' => 'mctp_fd', - 'type' => '74' + 'name' => 'data', + 'type' => '6087' }, '2' => { - 'name' => 'pldm_resp_msg', - 'type' => '71011' + 'name' => 'size', + 'type' => '180' }, '3' => { - 'name' => 'resp_msg_len', - 'type' => '8822' + 'name' => 'record_handle', + 'type' => '180' + }, + '4' => { + 'name' => 'is_remote', + 'type' => '6265' + }, + '5' => { + 'name' => 'prev_record_handle', + 'type' => '180' + }, + '6' => { + 'name' => 'terminus_handle', + 'type' => '4895' } }, - 'Return' => '96907', - 'ShortName' => 'pldm_recv_any' - }, - '98835' => { - 'Header' => 'pldm.h', - 'Return' => '96907', - 'ShortName' => 'pldm_open' + 'Return' => '180', + 'ShortName' => 'pldm_pdr_add_after_prev_record' } }, 'SymbolVersion' => {}, @@ -7569,6 +8503,7 @@ $VAR1 = { 'decode_platform_event_message_req' => 1, 'decode_platform_event_message_resp' => 1, 'decode_pldm_comp_image_info' => 1, + 'decode_pldm_message_poll_event_data' => 1, 'decode_pldm_package_header_info' => 1, 'decode_pldm_pdr_repository_change_record_data' => 1, 'decode_pldm_pdr_repository_chg_event_data' => 1, @@ -7663,6 +8598,7 @@ $VAR1 = { 'encode_platform_event_message_req' => 1, 'encode_platform_event_message_resp' => 1, 'encode_pldm_header_only' => 1, + 'encode_pldm_message_poll_event_data' => 1, 'encode_pldm_pdr_repository_chg_event_data' => 1, 'encode_poll_for_platform_event_message_req' => 1, 'encode_poll_for_platform_event_message_resp' => 1, @@ -7701,10 +8637,14 @@ $VAR1 = { 'encode_write_file_resp' => 1, 'entity_association_tree_find' => 1, 'find_entity_ref_in_tree' => 1, + 'find_record_handle_by_contained_entity' => 1, 'get_fru_record_by_option' => 1, + 'init_pldm_entity_node' => 1, + 'isHBRange' => 1, 'is_present' => 1, 'is_time_legal' => 1, 'is_transfer_flag_valid' => 1, + 'next_container_id' => 1, 'pack_pldm_header' => 1, 'pldm_bios_table_append_pad_checksum' => 1, 'pldm_bios_table_attr_entry_decode_attribute_handle' => 1, @@ -7773,15 +8713,28 @@ $VAR1 = { 'pldm_bios_table_string_entry_encode_length' => 1, 'pldm_bios_table_string_find_by_handle' => 1, 'pldm_bios_table_string_find_by_string' => 1, + 'pldm_change_container_id_of_effecter' => 1, + 'pldm_change_container_id_of_sensor' => 1, + 'pldm_change_instance_number_of_effecter' => 1, + 'pldm_change_instance_number_of_sensor' => 1, 'pldm_close' => 1, + 'pldm_delete_by_effecter_id' => 1, + 'pldm_delete_by_record_handle' => 1, + 'pldm_delete_by_sensor_id' => 1, 'pldm_entity_association_pdr_add' => 1, + 'pldm_entity_association_pdr_add_contained_entity' => 1, 'pldm_entity_association_pdr_add_from_node' => 1, + 'pldm_entity_association_pdr_add_from_node_with_record_handle' => 1, 'pldm_entity_association_pdr_extract' => 1, + 'pldm_entity_association_pdr_remove_contained_entity' => 1, 'pldm_entity_association_tree_add' => 1, + 'pldm_entity_association_tree_add_entity' => 1, 'pldm_entity_association_tree_copy_root' => 1, + 'pldm_entity_association_tree_delete_node' => 1, 'pldm_entity_association_tree_destroy' => 1, 'pldm_entity_association_tree_destroy_root' => 1, 'pldm_entity_association_tree_find' => 1, + 'pldm_entity_association_tree_find_if_remote' => 1, 'pldm_entity_association_tree_init' => 1, 'pldm_entity_association_tree_visit' => 1, 'pldm_entity_extract' => 1, @@ -7789,7 +8742,11 @@ $VAR1 = { 'pldm_entity_get_parent' => 1, 'pldm_entity_is_exist_parent' => 1, 'pldm_entity_is_node_parent' => 1, + 'pldm_entity_node_get_remote_container_id' => 1, + 'pldm_extract_host_container_id' => 1, + 'pldm_find_container_id' => 1, 'pldm_find_entity_ref_in_tree' => 1, + 'pldm_get_entity_from_record_handle' => 1, 'pldm_instance_db_destroy' => 1, 'pldm_instance_db_init' => 1, 'pldm_instance_db_init_default' => 1, @@ -7799,8 +8756,14 @@ $VAR1 = { 'pldm_is_empty_entity_assoc_tree' => 1, 'pldm_open' => 1, 'pldm_pdr_add' => 1, + 'pldm_pdr_add_after_prev_record' => 1, 'pldm_pdr_add_fru_record_set' => 1, + 'pldm_pdr_add_hotplug_record' => 1, 'pldm_pdr_destroy' => 1, + 'pldm_pdr_find_container_id_range_exclude' => 1, + 'pldm_pdr_find_last_in_range' => 1, + 'pldm_pdr_find_last_local_record' => 1, + 'pldm_pdr_find_prev_record_handle' => 1, 'pldm_pdr_find_record' => 1, 'pldm_pdr_find_record_by_type' => 1, 'pldm_pdr_fru_record_set_find_by_rsi' => 1, @@ -7810,6 +8773,7 @@ $VAR1 = { 'pldm_pdr_get_repo_size' => 1, 'pldm_pdr_init' => 1, 'pldm_pdr_record_is_remote' => 1, + 'pldm_pdr_remove_fru_record_set_by_rsi' => 1, 'pldm_pdr_remove_pdrs_by_terminus_handle' => 1, 'pldm_pdr_remove_remote_pdrs' => 1, 'pldm_pdr_update_TL_pdr' => 1, @@ -7817,6 +8781,24 @@ $VAR1 = { 'pldm_recv_any' => 1, 'pldm_send' => 1, 'pldm_send_recv' => 1, + 'pldm_transport_af_mctp_core' => 1, + 'pldm_transport_af_mctp_destroy' => 1, + 'pldm_transport_af_mctp_init' => 1, + 'pldm_transport_af_mctp_init_pollfd' => 1, + 'pldm_transport_af_mctp_map_tid' => 1, + 'pldm_transport_af_mctp_unmap_tid' => 1, + 'pldm_transport_mctp_demux_core' => 1, + 'pldm_transport_mctp_demux_destroy' => 1, + 'pldm_transport_mctp_demux_get_socket_fd' => 1, + 'pldm_transport_mctp_demux_init' => 1, + 'pldm_transport_mctp_demux_init_pollfd' => 1, + 'pldm_transport_mctp_demux_init_with_fd' => 1, + 'pldm_transport_mctp_demux_map_tid' => 1, + 'pldm_transport_mctp_demux_unmap_tid' => 1, + 'pldm_transport_poll' => 1, + 'pldm_transport_recv_msg' => 1, + 'pldm_transport_send_msg' => 1, + 'pldm_transport_send_recv_msg' => 1, 'unpack_pldm_header' => 1, 'ver2str' => 1 } @@ -7832,11 +8814,409 @@ $VAR1 = { 'Size' => '8', 'Type' => 'Intrinsic' }, + '105131' => { + 'BaseType' => '168', + 'Header' => 'base.h', + 'Line' => '14', + 'Name' => 'pldm_tid_t', + 'Size' => '1', + 'Type' => 'Typedef' + }, + '105143' => { + 'BaseType' => '168', + 'Header' => 'instance-id.h', + 'Line' => '11', + 'Name' => 'pldm_instance_id_t', + 'Size' => '1', + 'Type' => 'Typedef' + }, + '105520' => { + 'Header' => undef, + 'Line' => '18', + 'Memb' => { + '0' => { + 'name' => 'prev', + 'offset' => '0', + 'type' => '105143' + }, + '1' => { + 'name' => 'allocations', + 'offset' => '4', + 'type' => '180' + } + }, + 'Name' => 'struct pldm_tid_state', + 'PrivateABI' => 1, + 'Size' => '8', + 'Type' => 'Struct' + }, + '105559' => { + 'Header' => undef, + 'Line' => '23', + 'Memb' => { + '0' => { + 'name' => 'state', + 'offset' => '0', + 'type' => '105601' + }, + '1' => { + 'name' => 'lock_db_fd', + 'offset' => '8264', + 'type' => '74' + } + }, + 'Name' => 'struct pldm_instance_db', + 'PrivateABI' => 1, + 'Size' => '2052', + 'Type' => 'Struct' + }, + '105601' => { + 'BaseType' => '105520', + 'Name' => 'struct pldm_tid_state[256]', + 'Size' => '2048', + 'Type' => 'Array' + }, + '106014' => { + 'BaseType' => '105559', + 'Name' => 'struct pldm_instance_db*', + 'Size' => '8', + 'Type' => 'Pointer' + }, + '106420' => { + 'BaseType' => '105143', + 'Name' => 'pldm_instance_id_t*', + 'Size' => '8', + 'Type' => 'Pointer' + }, + '106596' => { + 'BaseType' => '106014', + 'Name' => 'struct pldm_instance_db**', + 'Size' => '8', + 'Type' => 'Pointer' + }, + '107082' => { + 'BaseType' => '168', + 'Header' => 'pldm.h', + 'Line' => '12', + 'Name' => 'mctp_eid_t', + 'Size' => '1', + 'Type' => 'Typedef' + }, + '107094' => { + 'Header' => 'pldm.h', + 'Line' => '14', + 'Memb' => { + '0' => { + 'name' => 'PLDM_REQUESTER_SUCCESS', + 'value' => '0' + }, + '1' => { + 'name' => 'PLDM_REQUESTER_OPEN_FAIL', + 'value' => '18446744073709551615 (-1)' + }, + '10' => { + 'name' => 'PLDM_REQUESTER_SETUP_FAIL', + 'value' => '18446744073709551606 (-10)' + }, + '11' => { + 'name' => 'PLDM_REQUESTER_INVALID_SETUP', + 'value' => '18446744073709551605 (-11)' + }, + '12' => { + 'name' => 'PLDM_REQUESTER_POLL_FAIL', + 'value' => '18446744073709551604 (-12)' + }, + '2' => { + 'name' => 'PLDM_REQUESTER_NOT_PLDM_MSG', + 'value' => '18446744073709551614 (-2)' + }, + '3' => { + 'name' => 'PLDM_REQUESTER_NOT_RESP_MSG', + 'value' => '18446744073709551613 (-3)' + }, + '4' => { + 'name' => 'PLDM_REQUESTER_NOT_REQ_MSG', + 'value' => '18446744073709551612 (-4)' + }, + '5' => { + 'name' => 'PLDM_REQUESTER_RESP_MSG_TOO_SMALL', + 'value' => '18446744073709551611 (-5)' + }, + '6' => { + 'name' => 'PLDM_REQUESTER_INSTANCE_ID_MISMATCH', + 'value' => '18446744073709551610 (-6)' + }, + '7' => { + 'name' => 'PLDM_REQUESTER_SEND_FAIL', + 'value' => '18446744073709551609 (-7)' + }, + '8' => { + 'name' => 'PLDM_REQUESTER_RECV_FAIL', + 'value' => '18446744073709551608 (-8)' + }, + '9' => { + 'name' => 'PLDM_REQUESTER_INVALID_RECV_LEN', + 'value' => '18446744073709551607 (-9)' + } + }, + 'Name' => 'enum pldm_requester_error_codes', + 'Size' => '4', + 'Type' => 'Enum' + }, + '107191' => { + 'BaseType' => '107094', + 'Header' => 'pldm.h', + 'Line' => '28', + 'Name' => 'pldm_requester_rc_t', + 'Size' => '4', + 'Type' => 'Typedef' + }, + '107334' => { + 'Header' => undef, + 'Line' => '22', + 'Memb' => { + '0' => { + 'name' => 'transport', + 'offset' => '0', + 'type' => '107407' + }, + '1' => { + 'name' => 'socket', + 'offset' => '64', + 'type' => '74' + }, + '2' => { + 'name' => 'tid_eid_map', + 'offset' => '68', + 'type' => '110614' + }, + '3' => { + 'name' => 'socket_send_buf', + 'offset' => '768', + 'type' => '109761' + } + }, + 'Name' => 'struct pldm_transport_mctp_demux', + 'PrivateABI' => 1, + 'Size' => '312', + 'Type' => 'Struct' + }, + '107360' => { + 'BaseType' => '107334', + 'Name' => 'struct pldm_transport_mctp_demux*', + 'Size' => '8', + 'Type' => 'Pointer' + }, + '107402' => { + 'BaseType' => '107407', + 'Name' => 'struct pldm_transport*', + 'Size' => '8', + 'Type' => 'Pointer' + }, + '107407' => { + 'Header' => undef, + 'Line' => '21', + 'Memb' => { + '0' => { + 'name' => 'name', + 'offset' => '0', + 'type' => '12199' + }, + '1' => { + 'name' => 'version', + 'offset' => '8', + 'type' => '168' + }, + '2' => { + 'name' => 'recv', + 'offset' => '22', + 'type' => '109941' + }, + '3' => { + 'name' => 'send', + 'offset' => '36', + 'type' => '109982' + }, + '4' => { + 'name' => 'init_pollfd', + 'offset' => '50', + 'type' => '110063' + } + }, + 'Name' => 'struct pldm_transport', + 'PrivateABI' => 1, + 'Size' => '40', + 'Type' => 'Struct' + }, + '107641' => { + 'BaseType' => '107360', + 'Name' => 'struct pldm_transport_mctp_demux**', + 'Size' => '8', + 'Type' => 'Pointer' + }, '109' => { 'Name' => 'long', 'Size' => '8', 'Type' => 'Intrinsic' }, + '109761' => { + 'Header' => undef, + 'Line' => '4', + 'Memb' => { + '0' => { + 'name' => 'size', + 'offset' => '0', + 'type' => '74' + }, + '1' => { + 'name' => 'socket', + 'offset' => '4', + 'type' => '74' + }, + '2' => { + 'name' => 'max_size', + 'offset' => '8', + 'type' => '74' + } + }, + 'Name' => 'struct pldm_socket_sndbuf', + 'PrivateABI' => 1, + 'Size' => '12', + 'Type' => 'Struct' + }, + '109941' => { + 'Name' => 'pldm_requester_rc_t(*)(struct pldm_transport*, pldm_tid_t, void**, size_t*)', + 'Param' => { + '0' => { + 'type' => '107402' + }, + '1' => { + 'type' => '105131' + }, + '2' => { + 'type' => '16592' + }, + '3' => { + 'type' => '8822' + } + }, + 'Return' => '107191', + 'Size' => '8', + 'Type' => 'FuncPtr' + }, + '109982' => { + 'Name' => 'pldm_requester_rc_t(*)(struct pldm_transport*, pldm_tid_t, void const*, size_t)', + 'Param' => { + '0' => { + 'type' => '107402' + }, + '1' => { + 'type' => '105131' + }, + '2' => { + 'type' => '1434' + }, + '3' => { + 'type' => '123' + } + }, + 'Return' => '107191', + 'Size' => '8', + 'Type' => 'FuncPtr' + }, + '110007' => { + 'BaseType' => '110012', + 'Name' => 'struct pollfd*', + 'Size' => '8', + 'Type' => 'Pointer' + }, + '110012' => { + 'Header' => undef, + 'Line' => '36', + 'Memb' => { + '0' => { + 'name' => 'fd', + 'offset' => '0', + 'type' => '74' + }, + '1' => { + 'name' => 'events', + 'offset' => '4', + 'type' => '60' + }, + '2' => { + 'name' => 'revents', + 'offset' => '6', + 'type' => '60' + } + }, + 'Name' => 'struct pollfd', + 'PrivateABI' => 1, + 'Size' => '8', + 'Type' => 'Struct' + }, + '110063' => { + 'Name' => 'int(*)(struct pldm_transport*, struct pollfd*)', + 'Param' => { + '0' => { + 'type' => '107402' + }, + '1' => { + 'type' => '110007' + } + }, + 'Return' => '74', + 'Size' => '8', + 'Type' => 'FuncPtr' + }, + '110546' => { + 'Header' => undef, + 'Line' => '21', + 'Memb' => { + '0' => { + 'name' => 'transport', + 'offset' => '0', + 'type' => '107407' + }, + '1' => { + 'name' => 'socket', + 'offset' => '64', + 'type' => '74' + }, + '2' => { + 'name' => 'tid_eid_map', + 'offset' => '68', + 'type' => '110614' + }, + '3' => { + 'name' => 'socket_send_buf', + 'offset' => '768', + 'type' => '109761' + } + }, + 'Name' => 'struct pldm_transport_af_mctp', + 'PrivateABI' => 1, + 'Size' => '312', + 'Type' => 'Struct' + }, + '110614' => { + 'BaseType' => '105131', + 'Name' => 'pldm_tid_t[256]', + 'Size' => '256', + 'Type' => 'Array' + }, + '110986' => { + 'BaseType' => '110546', + 'Name' => 'struct pldm_transport_af_mctp*', + 'Size' => '8', + 'Type' => 'Pointer' + }, + '111214' => { + 'BaseType' => '110986', + 'Name' => 'struct pldm_transport_af_mctp**', + 'Size' => '8', + 'Type' => 'Pointer' + }, '11261' => { 'BaseType' => '116', 'Name' => 'char*', @@ -7939,9 +9319,9 @@ $VAR1 = { 'Size' => '8', 'Type' => 'Typedef' }, - '12740' => { + '12747' => { 'Header' => 'platform.h', - 'Line' => '237', + 'Line' => '243', 'Memb' => { '0' => { 'name' => 'PLDM_SENSOR_OP_STATE', @@ -7960,15 +9340,15 @@ $VAR1 = { 'Size' => '4', 'Type' => 'Enum' }, - '12774' => { - 'BaseType' => '12740', + '12781' => { + 'BaseType' => '12747', 'Name' => 'enum sensor_event_class_states const', 'Size' => '4', 'Type' => 'Const' }, - '12997' => { + '13004' => { 'Header' => 'platform.h', - 'Line' => '454', + 'Line' => '461', 'Memb' => { '0' => { 'name' => 'record_handle', @@ -8000,14 +9380,14 @@ $VAR1 = { 'Size' => '10', 'Type' => 'Struct' }, - '13076' => { + '13083' => { 'Header' => 'platform.h', - 'Line' => '526', + 'Line' => '533', 'Memb' => { '0' => { 'name' => 'hdr', 'offset' => '0', - 'type' => '12997' + 'type' => '13004' }, '1' => { 'name' => 'terminus_handle', @@ -8059,9 +9439,9 @@ $VAR1 = { 'Size' => '24', 'Type' => 'Struct' }, - '13220' => { + '13227' => { 'Header' => 'platform.h', - 'Line' => '543', + 'Line' => '550', 'Memb' => { '0' => { 'name' => 'state_set_id', @@ -8076,27 +9456,27 @@ $VAR1 = { '2' => { 'name' => 'states', 'offset' => '3', - 'type' => '13278' + 'type' => '13285' } }, 'Name' => 'struct state_sensor_possible_states', 'Size' => '4', 'Type' => 'Struct' }, - '13273' => { - 'BaseType' => '13220', + '13280' => { + 'BaseType' => '13227', 'Name' => 'struct state_sensor_possible_states const', 'Size' => '4', 'Type' => 'Const' }, - '13294' => { + '13301' => { 'Header' => 'platform.h', - 'Line' => '553', + 'Line' => '560', 'Memb' => { '0' => { 'name' => 'hdr', 'offset' => '0', - 'type' => '12997' + 'type' => '13004' }, '1' => { 'name' => 'terminus_handle', @@ -8153,9 +9533,9 @@ $VAR1 = { 'Size' => '26', 'Type' => 'Struct' }, - '13647' => { + '13654' => { 'Header' => 'platform.h', - 'Line' => '708', + 'Line' => '715', 'Memb' => { '0' => { 'name' => 'record_handle', @@ -8187,14 +9567,14 @@ $VAR1 = { 'Size' => '12', 'Type' => 'Struct' }, - '13726' => { + '13733' => { 'Header' => 'platform.h', - 'Line' => '721', + 'Line' => '728', 'Memb' => { '0' => { 'name' => 'hdr', 'offset' => '0', - 'type' => '13647' + 'type' => '13654' }, '1' => { 'name' => 'terminus_handle', @@ -8279,7 +9659,7 @@ $VAR1 = { '24' => { 'name' => 'hysteresis', 'offset' => '72', - 'type' => '13635' + 'type' => '13642' }, '25' => { 'name' => 'supported_thresholds', @@ -8304,7 +9684,7 @@ $VAR1 = { '29' => { 'name' => 'max_readable', 'offset' => '100', - 'type' => '13635' + 'type' => '13642' }, '3' => { 'name' => 'entity_type', @@ -8314,7 +9694,7 @@ $VAR1 = { '30' => { 'name' => 'min_readable', 'offset' => '104', - 'type' => '13635' + 'type' => '13642' }, '31' => { 'name' => 'range_field_format', @@ -8329,37 +9709,37 @@ $VAR1 = { '33' => { 'name' => 'nominal_value', 'offset' => '118', - 'type' => '13543' + 'type' => '13550' }, '34' => { 'name' => 'normal_max', 'offset' => '128', - 'type' => '13543' + 'type' => '13550' }, '35' => { 'name' => 'normal_min', 'offset' => '132', - 'type' => '13543' + 'type' => '13550' }, '36' => { 'name' => 'warning_high', 'offset' => '136', - 'type' => '13543' + 'type' => '13550' }, '37' => { 'name' => 'warning_low', 'offset' => '146', - 'type' => '13543' + 'type' => '13550' }, '38' => { 'name' => 'critical_high', 'offset' => '150', - 'type' => '13543' + 'type' => '13550' }, '39' => { 'name' => 'critical_low', 'offset' => '256', - 'type' => '13543' + 'type' => '13550' }, '4' => { 'name' => 'entity_instance_num', @@ -8369,12 +9749,12 @@ $VAR1 = { '40' => { 'name' => 'fatal_high', 'offset' => '260', - 'type' => '13543' + 'type' => '13550' }, '41' => { 'name' => 'fatal_low', 'offset' => '264', - 'type' => '13543' + 'type' => '13550' }, '5' => { 'name' => 'container_id', @@ -8415,9 +9795,9 @@ $VAR1 = { 'Size' => '1', 'Type' => 'Typedef' }, - '14286' => { + '14293' => { 'Header' => 'platform.h', - 'Line' => '770', + 'Line' => '777', 'Memb' => { '0' => { 'name' => 'state_set_id', @@ -8432,28 +9812,28 @@ $VAR1 = { '2' => { 'name' => 'states', 'offset' => '3', - 'type' => '13278' + 'type' => '13285' } }, 'Name' => 'struct state_effecter_possible_states', 'Size' => '4', 'Type' => 'Struct' }, - '14339' => { - 'BaseType' => '14286', - 'Name' => 'struct state_effecter_possible_states const', - 'Size' => '4', - 'Type' => 'Const' - }, '1434' => { 'BaseType' => '1439', 'Name' => 'void const*', 'Size' => '8', 'Type' => 'Pointer' }, - '14344' => { + '14346' => { + 'BaseType' => '14293', + 'Name' => 'struct state_effecter_possible_states const', + 'Size' => '4', + 'Type' => 'Const' + }, + '14351' => { 'Header' => 'platform.h', - 'Line' => '818', + 'Line' => '825', 'Memb' => { '0' => { 'name' => 'set_request', @@ -8470,22 +9850,22 @@ $VAR1 = { 'Size' => '2', 'Type' => 'Struct' }, - '14384' => { - 'BaseType' => '14344', - 'Header' => 'platform.h', - 'Line' => '821', - 'Name' => 'set_effecter_state_field', - 'Size' => '2', - 'Type' => 'Typedef' - }, '1439' => { 'BaseType' => '1', 'Name' => 'void const', 'Type' => 'Const' }, - '14396' => { + '14391' => { + 'BaseType' => '14351', + 'Header' => 'platform.h', + 'Line' => '828', + 'Name' => 'set_effecter_state_field', + 'Size' => '2', + 'Type' => 'Typedef' + }, + '14403' => { 'Header' => 'platform.h', - 'Line' => '827', + 'Line' => '834', 'Memb' => { '0' => { 'name' => 'sensor_op_state', @@ -8512,23 +9892,23 @@ $VAR1 = { 'Size' => '4', 'Type' => 'Struct' }, - '14462' => { - 'BaseType' => '14396', + '14469' => { + 'BaseType' => '14403', 'Header' => 'platform.h', - 'Line' => '835', + 'Line' => '842', 'Name' => 'get_sensor_state_field', 'Size' => '4', 'Type' => 'Typedef' }, - '14661' => { + '14668' => { 'BaseType' => '168', 'Name' => 'uint8_t[13]', 'Size' => '13', 'Type' => 'Array' }, - '15143' => { + '15150' => { 'Header' => 'platform.h', - 'Line' => '972', + 'Line' => '979', 'Memb' => { '0' => { 'name' => 'sensor_id', @@ -8550,9 +9930,9 @@ $VAR1 = { 'Size' => '4', 'Type' => 'Struct' }, - '15355' => { + '15362' => { 'Header' => 'platform.h', - 'Line' => '1053', + 'Line' => '1060', 'Memb' => { '0' => { 'name' => 'event_data_format', @@ -8589,7 +9969,7 @@ $VAR1 = { 'Size' => '8', 'Type' => 'Pointer' }, - '16585' => { + '16592' => { 'BaseType' => '166', 'Name' => 'void**', 'Size' => '8', @@ -8637,32 +10017,32 @@ $VAR1 = { 'Size' => '8', 'Type' => 'Pointer' }, - '20609' => { + '20616' => { 'BaseType' => '8822', 'Name' => 'size_t*const', 'Size' => '8', 'Type' => 'Const' }, - '22152' => { - 'BaseType' => '22162', + '22159' => { + 'BaseType' => '22169', 'Name' => 'uint32_t const*const*', 'Size' => '8', 'Type' => 'Pointer' }, - '22157' => { + '22164' => { 'BaseType' => '11475', 'Name' => 'uint32_t const*', 'Size' => '8', 'Type' => 'Pointer' }, - '22162' => { - 'BaseType' => '22157', + '22169' => { + 'BaseType' => '22164', 'Name' => 'uint32_t const*const', 'Size' => '8', 'Type' => 'Const' }, - '22167' => { - 'BaseType' => '15355', + '22174' => { + 'BaseType' => '15362', 'Name' => 'struct pldm_pdr_repository_chg_event_data*', 'Size' => '8', 'Type' => 'Pointer' @@ -8673,8 +10053,8 @@ $VAR1 = { 'Size' => '8', 'Type' => 'Pointer' }, - '28491' => { - 'BaseType' => '13726', + '28498' => { + 'BaseType' => '13733', 'Name' => 'struct pldm_numeric_sensor_value_pdr*', 'Size' => '8', 'Type' => 'Pointer' @@ -8685,20 +10065,20 @@ $VAR1 = { 'Size' => '8', 'Type' => 'Pointer' }, - '34801' => { - 'BaseType' => '15143', + '34808' => { + 'BaseType' => '15150', 'Name' => 'struct pldm_sensor_event_data*', 'Size' => '8', 'Type' => 'Pointer' }, - '34806' => { - 'BaseType' => '34801', + '34813' => { + 'BaseType' => '34808', 'Name' => 'struct pldm_sensor_event_data*const', 'Size' => '8', 'Type' => 'Const' }, - '35771' => { - 'BaseType' => '14462', + '35778' => { + 'BaseType' => '14469', 'Name' => 'get_sensor_state_field*', 'Size' => '8', 'Type' => 'Pointer' @@ -8708,22 +10088,22 @@ $VAR1 = { 'Line' => '24', 'Memb' => { '0' => { - 'name' => 'alpha', + 'name' => 'major', 'offset' => '0', 'type' => '168' }, '1' => { - 'name' => 'update', + 'name' => 'minor', 'offset' => '1', 'type' => '168' }, '2' => { - 'name' => 'minor', + 'name' => 'update', 'offset' => '2', 'type' => '168' }, '3' => { - 'name' => 'major', + 'name' => 'alpha', 'offset' => '3', 'type' => '168' } @@ -8732,56 +10112,56 @@ $VAR1 = { 'Size' => '4', 'Type' => 'Struct' }, - '40809' => { - 'BaseType' => '14384', + '40816' => { + 'BaseType' => '14391', 'Name' => 'set_effecter_state_field*', 'Size' => '8', 'Type' => 'Pointer' }, - '41609' => { - 'BaseType' => '13076', + '41616' => { + 'BaseType' => '13083', 'Name' => 'struct pldm_state_sensor_pdr*', 'Size' => '8', 'Type' => 'Pointer' }, - '41614' => { - 'BaseType' => '41609', + '41621' => { + 'BaseType' => '41616', 'Name' => 'struct pldm_state_sensor_pdr*const', 'Size' => '8', 'Type' => 'Const' }, - '41619' => { - 'BaseType' => '13273', + '41626' => { + 'BaseType' => '13280', 'Name' => 'struct state_sensor_possible_states const*', 'Size' => '8', 'Type' => 'Pointer' }, - '41624' => { - 'BaseType' => '41619', + '41631' => { + 'BaseType' => '41626', 'Name' => 'struct state_sensor_possible_states const*const', 'Size' => '8', 'Type' => 'Const' }, - '41941' => { - 'BaseType' => '13294', + '41948' => { + 'BaseType' => '13301', 'Name' => 'struct pldm_state_effecter_pdr*', 'Size' => '8', 'Type' => 'Pointer' }, - '41946' => { - 'BaseType' => '41941', + '41953' => { + 'BaseType' => '41948', 'Name' => 'struct pldm_state_effecter_pdr*const', 'Size' => '8', 'Type' => 'Const' }, - '41951' => { - 'BaseType' => '14339', + '41958' => { + 'BaseType' => '14346', 'Name' => 'struct state_effecter_possible_states const*', 'Size' => '8', 'Type' => 'Pointer' }, - '41956' => { - 'BaseType' => '41951', + '41963' => { + 'BaseType' => '41958', 'Name' => 'struct state_effecter_possible_states const*const', 'Size' => '8', 'Type' => 'Const' @@ -8805,7 +10185,7 @@ $VAR1 = { 'Size' => '4', 'Type' => 'Intrinsic' }, - '45466' => { + '45473' => { 'BaseType' => '102', 'Header' => undef, 'Line' => '45', @@ -8814,8 +10194,8 @@ $VAR1 = { 'Size' => '8', 'Type' => 'Typedef' }, - '45543' => { - 'BaseType' => '45466', + '45550' => { + 'BaseType' => '45473', 'Header' => undef, 'Line' => '27', 'Name' => 'uint64_t', @@ -8823,7 +10203,7 @@ $VAR1 = { 'Size' => '8', 'Type' => 'Typedef' }, - '45555' => { + '45562' => { 'Header' => 'bios.h', 'Line' => '38', 'Memb' => { @@ -8850,7 +10230,7 @@ $VAR1 = { 'Size' => '8', 'Type' => 'Pointer' }, - '45589' => { + '45596' => { 'Header' => 'bios.h', 'Line' => '47', 'Memb' => { @@ -8867,7 +10247,7 @@ $VAR1 = { '2' => { 'name' => 'name', 'offset' => '4', - 'type' => '45646' + 'type' => '45653' } }, 'Name' => 'struct pldm_bios_string_table_entry', @@ -8880,19 +10260,19 @@ $VAR1 = { 'Size' => '8', 'Type' => 'Pointer' }, - '45641' => { - 'BaseType' => '45589', + '45648' => { + 'BaseType' => '45596', 'Name' => 'struct pldm_bios_string_table_entry const', 'Size' => '5', 'Type' => 'Const' }, - '45646' => { + '45653' => { 'BaseType' => '116', 'Name' => 'char[1]', 'Size' => '1', 'Type' => 'Array' }, - '45662' => { + '45669' => { 'Header' => 'bios.h', 'Line' => '53', 'Memb' => { @@ -8921,13 +10301,13 @@ $VAR1 = { 'Size' => '6', 'Type' => 'Struct' }, - '45727' => { - 'BaseType' => '45662', + '45734' => { + 'BaseType' => '45669', 'Name' => 'struct pldm_bios_attr_table_entry const', 'Size' => '6', 'Type' => 'Const' }, - '45748' => { + '45755' => { 'Header' => 'bios.h', 'Line' => '65', 'Memb' => { @@ -8951,15 +10331,15 @@ $VAR1 = { 'Size' => '4', 'Type' => 'Struct' }, - '45800' => { - 'BaseType' => '45748', + '45807' => { + 'BaseType' => '45755', 'Name' => 'struct pldm_bios_attr_val_table_entry const', 'Size' => '4', 'Type' => 'Const' }, - '45869' => { + '45876' => { 'Header' => 'bios_table.h', - 'Line' => '215', + 'Line' => '224', 'Memb' => { '0' => { 'name' => 'name_handle', @@ -8979,7 +10359,7 @@ $VAR1 = { '3' => { 'name' => 'pv_handle', 'offset' => '8', - 'type' => '45972' + 'type' => '45979' }, '4' => { 'name' => 'def_num', @@ -8996,21 +10376,21 @@ $VAR1 = { 'Size' => '32', 'Type' => 'Struct' }, - '45960' => { - 'BaseType' => '45869', + '45967' => { + 'BaseType' => '45876', 'Name' => 'struct pldm_bios_table_attr_entry_enum_info const', 'Size' => '32', 'Type' => 'Const' }, - '45972' => { + '45979' => { 'BaseType' => '11458', 'Name' => 'uint16_t const*', 'Size' => '8', 'Type' => 'Pointer' }, - '45982' => { + '45989' => { 'Header' => 'bios_table.h', - 'Line' => '328', + 'Line' => '347', 'Memb' => { '0' => { 'name' => 'name_handle', @@ -9057,15 +10437,15 @@ $VAR1 = { 'Size' => '1', 'Type' => 'Intrinsic' }, - '46094' => { - 'BaseType' => '45982', + '46101' => { + 'BaseType' => '45989', 'Name' => 'struct pldm_bios_table_attr_entry_string_info const', 'Size' => '24', 'Type' => 'Const' }, - '46104' => { + '46111' => { 'Header' => 'bios_table.h', - 'Line' => '431', + 'Line' => '454', 'Memb' => { '0' => { 'name' => 'name_handle', @@ -9080,12 +10460,12 @@ $VAR1 = { '2' => { 'name' => 'lower_bound', 'offset' => '8', - 'type' => '45543' + 'type' => '45550' }, '3' => { 'name' => 'upper_bound', 'offset' => '22', - 'type' => '45543' + 'type' => '45550' }, '4' => { 'name' => 'scalar_increment', @@ -9095,15 +10475,15 @@ $VAR1 = { '5' => { 'name' => 'default_value', 'offset' => '50', - 'type' => '45543' + 'type' => '45550' } }, 'Name' => 'struct pldm_bios_table_attr_entry_integer_info', 'Size' => '40', 'Type' => 'Struct' }, - '46202' => { - 'BaseType' => '46104', + '46209' => { + 'BaseType' => '46111', 'Name' => 'struct pldm_bios_table_attr_entry_integer_info const', 'Size' => '40', 'Type' => 'Const' @@ -9114,7 +10494,7 @@ $VAR1 = { 'Size' => '8', 'Type' => 'Pointer' }, - '46546' => { + '46553' => { 'Name' => 'size_t(*)(void const*)', 'Param' => { '0' => { @@ -9131,9 +10511,9 @@ $VAR1 = { 'Size' => '8', 'Type' => 'Pointer' }, - '46614' => { + '46621' => { 'Header' => undef, - 'Line' => '964', + 'Line' => '959', 'Memb' => { '0' => { 'name' => 'table_data', @@ -9153,7 +10533,7 @@ $VAR1 = { '3' => { 'name' => 'entry_length_handler', 'offset' => '36', - 'type' => '46546' + 'type' => '46553' } }, 'Name' => 'struct pldm_bios_table_iter', @@ -9161,26 +10541,26 @@ $VAR1 = { 'Size' => '32', 'Type' => 'Struct' }, - '46684' => { - 'BaseType' => '46614', + '46691' => { + 'BaseType' => '46621', 'Name' => 'struct pldm_bios_table_iter const', 'Size' => '32', 'Type' => 'Const' }, - '47714' => { - 'BaseType' => '46614', + '47721' => { + 'BaseType' => '46621', 'Name' => 'struct pldm_bios_table_iter*', 'Size' => '8', 'Type' => 'Pointer' }, - '47719' => { - 'BaseType' => '45800', + '47726' => { + 'BaseType' => '45807', 'Name' => 'struct pldm_bios_attr_val_table_entry const*', 'Size' => '8', 'Type' => 'Pointer' }, - '48134' => { - 'BaseType' => '45727', + '48141' => { + 'BaseType' => '45734', 'Name' => 'struct pldm_bios_attr_table_entry const*', 'Size' => '8', 'Type' => 'Pointer' @@ -9194,8 +10574,8 @@ $VAR1 = { 'Size' => '2', 'Type' => 'Typedef' }, - '48723' => { - 'BaseType' => '45641', + '48730' => { + 'BaseType' => '45648', 'Name' => 'struct pldm_bios_string_table_entry const*', 'Size' => '8', 'Type' => 'Pointer' @@ -9215,8 +10595,8 @@ $VAR1 = { 'Size' => '2', 'Type' => 'Typedef' }, - '49856' => { - 'BaseType' => '46684', + '49863' => { + 'BaseType' => '46691', 'Name' => 'struct pldm_bios_table_iter const*', 'Size' => '8', 'Type' => 'Pointer' @@ -9226,36 +10606,41 @@ $VAR1 = { 'Size' => '1', 'Type' => 'Intrinsic' }, - '54682' => { - 'BaseType' => '45543', + '54689' => { + 'BaseType' => '45550', 'Name' => 'uint64_t*', 'Size' => '8', 'Type' => 'Pointer' }, - '54886' => { - 'BaseType' => '46202', + '54893' => { + 'BaseType' => '46209', 'Name' => 'struct pldm_bios_table_attr_entry_integer_info const*', 'Size' => '8', 'Type' => 'Pointer' }, - '55148' => { + '55155' => { 'BaseType' => '12199', 'Name' => 'char const**', 'Size' => '8', 'Type' => 'Pointer' }, - '56399' => { - 'BaseType' => '46094', + '56406' => { + 'BaseType' => '46101', 'Name' => 'struct pldm_bios_table_attr_entry_string_info const*', 'Size' => '8', 'Type' => 'Pointer' }, - '58306' => { - 'BaseType' => '45960', + '58272' => { + 'BaseType' => '45967', 'Name' => 'struct pldm_bios_table_attr_entry_enum_info const*', 'Size' => '8', 'Type' => 'Pointer' }, + '60' => { + 'Name' => 'short', + 'Size' => '2', + 'Type' => 'Intrinsic' + }, '6048' => { 'Header' => 'utils.h', 'Line' => '18', @@ -9286,14 +10671,14 @@ $VAR1 = { 'Size' => '1', 'Type' => 'Intrinsic' }, - '64188' => { + '64114' => { 'Header' => 'firmware_update.h', 'Line' => '329', 'Memb' => { '0' => { 'name' => 'uuid', 'offset' => '0', - 'type' => '64292' + 'type' => '64218' }, '1' => { 'name' => 'package_header_format_version', @@ -9308,7 +10693,7 @@ $VAR1 = { '3' => { 'name' => 'package_release_date_time', 'offset' => '25', - 'type' => '14661' + 'type' => '14668' }, '4' => { 'name' => 'component_bitmap_bit_length', @@ -9330,13 +10715,13 @@ $VAR1 = { 'Size' => '36', 'Type' => 'Struct' }, - '64292' => { + '64218' => { 'BaseType' => '168', 'Name' => 'uint8_t[16]', 'Size' => '16', 'Type' => 'Array' }, - '64324' => { + '64250' => { 'Header' => 'firmware_update.h', 'Line' => '343', 'Memb' => { @@ -9353,7 +10738,7 @@ $VAR1 = { '2' => { 'name' => 'device_update_option_flags', 'offset' => '3', - 'type' => '61691' + 'type' => '61617' }, '3' => { 'name' => 'comp_image_set_version_string_type', @@ -9375,7 +10760,7 @@ $VAR1 = { 'Size' => '11', 'Type' => 'Struct' }, - '64519' => { + '64445' => { 'Header' => 'firmware_update.h', 'Line' => '377', 'Memb' => { @@ -9397,12 +10782,12 @@ $VAR1 = { '3' => { 'name' => 'comp_options', 'offset' => '8', - 'type' => '61193' + 'type' => '61119' }, '4' => { 'name' => 'requested_comp_activation_method', 'offset' => '16', - 'type' => '61193' + 'type' => '61119' }, '5' => { 'name' => 'comp_location_offset', @@ -9429,7 +10814,7 @@ $VAR1 = { 'Size' => '22', 'Type' => 'Struct' }, - '64701' => { + '64627' => { 'Header' => 'firmware_update.h', 'Line' => '403', 'Memb' => { @@ -9441,7 +10826,7 @@ $VAR1 = { '1' => { 'name' => 'capabilities_during_update', 'offset' => '1', - 'type' => '61691' + 'type' => '61617' }, '2' => { 'name' => 'comp_count', @@ -9473,7 +10858,7 @@ $VAR1 = { 'Size' => '11', 'Type' => 'Struct' }, - '64805' => { + '64731' => { 'Header' => 'firmware_update.h', 'Line' => '417', 'Memb' => { @@ -9490,17 +10875,17 @@ $VAR1 = { '10' => { 'name' => 'pending_comp_release_date', 'offset' => '37', - 'type' => '64987' + 'type' => '64913' }, '11' => { 'name' => 'comp_activation_methods', 'offset' => '51', - 'type' => '61193' + 'type' => '61119' }, '12' => { 'name' => 'capabilities_during_update', 'offset' => '53', - 'type' => '61691' + 'type' => '61617' }, '2' => { 'name' => 'comp_classification_index', @@ -9525,7 +10910,7 @@ $VAR1 = { '6' => { 'name' => 'active_comp_release_date', 'offset' => '17', - 'type' => '64987' + 'type' => '64913' }, '7' => { 'name' => 'pending_comp_comparison_stamp', @@ -9553,19 +10938,19 @@ $VAR1 = { 'Size' => '8', 'Type' => 'Pointer' }, - '64987' => { + '64913' => { 'BaseType' => '168', 'Name' => 'uint8_t[8]', 'Size' => '8', 'Type' => 'Array' }, - '65847' => { + '65773' => { 'BaseType' => '6048', 'Name' => 'struct variable_field const', 'Size' => '16', 'Type' => 'Const' }, - '66192' => { + '66118' => { 'BaseType' => '11646', 'Name' => 'bool8_t*', 'Size' => '8', @@ -9576,32 +10961,32 @@ $VAR1 = { 'Size' => '2', 'Type' => 'Intrinsic' }, - '69202' => { - 'BaseType' => '65847', + '69128' => { + 'BaseType' => '65773', 'Name' => 'struct variable_field const*', 'Size' => '8', 'Type' => 'Pointer' }, - '70483' => { - 'BaseType' => '64805', + '70409' => { + 'BaseType' => '64731', 'Name' => 'struct pldm_component_parameter_entry*', 'Size' => '8', 'Type' => 'Pointer' }, - '70713' => { - 'BaseType' => '64701', + '70639' => { + 'BaseType' => '64627', 'Name' => 'struct pldm_get_firmware_parameters_resp*', 'Size' => '8', 'Type' => 'Pointer' }, - '71011' => { + '70937' => { 'BaseType' => '2034', 'Name' => 'uint8_t**', 'Size' => '8', 'Type' => 'Pointer' }, - '71305' => { - 'BaseType' => '64519', + '71231' => { + 'BaseType' => '64445', 'Name' => 'struct pldm_component_image_information*', 'Size' => '8', 'Type' => 'Pointer' @@ -9620,14 +11005,14 @@ $VAR1 = { 'Size' => '3', 'Type' => 'Struct' }, - '71928' => { - 'BaseType' => '64324', + '71854' => { + 'BaseType' => '64250', 'Name' => 'struct pldm_firmware_device_id_record*', 'Size' => '8', 'Type' => 'Pointer' }, - '72080' => { - 'BaseType' => '64188', + '72006' => { + 'BaseType' => '64114', 'Name' => 'struct pldm_package_header_information*', 'Size' => '8', 'Type' => 'Pointer' @@ -9637,27 +11022,12 @@ $VAR1 = { 'Size' => '4', 'Type' => 'Intrinsic' }, - '78523' => { - 'BaseType' => '78540', - 'Header' => undef, - 'Line' => '15', - 'Name' => 'pldm_pdr', - 'PrivateABI' => 1, - 'Size' => '24', - 'Type' => 'Typedef' - }, - '78535' => { - 'BaseType' => '78523', - 'Name' => 'pldm_pdr const', - 'Size' => '24', - 'Type' => 'Const' - }, - '78540' => { - 'Header' => undef, - 'Line' => '18', + '78521' => { + 'Header' => 'pdr_data.h', + 'Line' => '12', 'Memb' => { '0' => { - 'name' => 'record_count', + 'name' => 'record_handle', 'offset' => '0', 'type' => '180' }, @@ -9667,42 +11037,56 @@ $VAR1 = { 'type' => '180' }, '2' => { - 'name' => 'first', + 'name' => 'data', 'offset' => '8', - 'type' => '79593' + 'type' => '2034' }, '3' => { - 'name' => 'last', + 'name' => 'next', 'offset' => '22', - 'type' => '79593' + 'type' => '78610' + }, + '4' => { + 'name' => 'is_remote', + 'offset' => '36', + 'type' => '6265' + }, + '5' => { + 'name' => 'terminus_handle', + 'offset' => '38', + 'type' => '4895' } }, - 'Name' => 'struct pldm_pdr', - 'PrivateABI' => 1, - 'Size' => '24', + 'Name' => 'struct pldm_pdr_record', + 'Size' => '32', 'Type' => 'Struct' }, - '78605' => { - 'BaseType' => '78622', - 'Header' => undef, - 'Line' => '20', + '78610' => { + 'BaseType' => '78521', + 'Name' => 'struct pldm_pdr_record*', + 'Size' => '8', + 'Type' => 'Pointer' + }, + '78622' => { + 'BaseType' => '78521', + 'Header' => 'pdr_data.h', + 'Line' => '19', 'Name' => 'pldm_pdr_record', - 'PrivateABI' => 1, 'Size' => '32', 'Type' => 'Typedef' }, - '78617' => { - 'BaseType' => '78605', + '78634' => { + 'BaseType' => '78622', 'Name' => 'pldm_pdr_record const', 'Size' => '32', 'Type' => 'Const' }, - '78622' => { - 'Header' => undef, - 'Line' => '9', + '78639' => { + 'Header' => 'pdr_data.h', + 'Line' => '21', 'Memb' => { '0' => { - 'name' => 'record_handle', + 'name' => 'record_count', 'offset' => '0', 'type' => '180' }, @@ -9712,34 +11096,43 @@ $VAR1 = { 'type' => '180' }, '2' => { - 'name' => 'data', + 'name' => 'first', 'offset' => '8', - 'type' => '2034' + 'type' => '78699' }, '3' => { - 'name' => 'next', + 'name' => 'last', 'offset' => '22', - 'type' => '79581' - }, - '4' => { - 'name' => 'is_remote', - 'offset' => '36', - 'type' => '6265' - }, - '5' => { - 'name' => 'terminus_handle', - 'offset' => '38', - 'type' => '4895' + 'type' => '78699' } }, - 'Name' => 'struct pldm_pdr_record', - 'PrivateABI' => 1, - 'Size' => '32', + 'Name' => 'struct pldm_pdr', + 'Size' => '24', 'Type' => 'Struct' }, - '78713' => { + '78699' => { + 'BaseType' => '78622', + 'Name' => 'pldm_pdr_record*', + 'Size' => '8', + 'Type' => 'Pointer' + }, + '78704' => { + 'BaseType' => '78639', + 'Header' => 'pdr_data.h', + 'Line' => '26', + 'Name' => 'pldm_pdr', + 'Size' => '24', + 'Type' => 'Typedef' + }, + '78716' => { + 'BaseType' => '78704', + 'Name' => 'pldm_pdr const', + 'Size' => '24', + 'Type' => 'Const' + }, + '78721' => { 'Header' => 'pdr.h', - 'Line' => '217', + 'Line' => '354', 'Memb' => { '0' => { 'name' => 'entity_type', @@ -9761,31 +11154,31 @@ $VAR1 = { 'Size' => '6', 'Type' => 'Struct' }, - '78765' => { - 'BaseType' => '78713', + '78778' => { + 'BaseType' => '78721', 'Header' => 'pdr.h', - 'Line' => '221', + 'Line' => '358', 'Name' => 'pldm_entity', 'Size' => '6', 'Type' => 'Typedef' }, - '78805' => { - 'BaseType' => '78817', + '78820' => { + 'BaseType' => '78833', 'Header' => undef, - 'Line' => '231', + 'Line' => '368', 'Name' => 'pldm_entity_association_tree', 'PrivateABI' => 1, 'Size' => '16', 'Type' => 'Typedef' }, - '78817' => { + '78833' => { 'Header' => undef, - 'Line' => '368', + 'Line' => '908', 'Memb' => { '0' => { 'name' => 'root', 'offset' => '0', - 'type' => '79598' + 'type' => '80852' }, '1' => { 'name' => 'last_used_container_id', @@ -9798,40 +11191,51 @@ $VAR1 = { 'Size' => '16', 'Type' => 'Struct' }, - '78860' => { - 'BaseType' => '78872', + '78876' => { + 'BaseType' => '78894', 'Header' => undef, - 'Line' => '236', + 'Line' => '373', 'Name' => 'pldm_entity_node', 'PrivateABI' => 1, 'Size' => '40', 'Type' => 'Typedef' }, - '78872' => { + '78889' => { + 'BaseType' => '78876', + 'Name' => 'pldm_entity_node const', + 'Size' => '40', + 'Type' => 'Const' + }, + '78894' => { 'Header' => undef, - 'Line' => '373', + 'Line' => '913', 'Memb' => { '0' => { 'name' => 'entity', 'offset' => '0', - 'type' => '78765' + 'type' => '78778' }, '1' => { 'name' => 'parent', 'offset' => '6', - 'type' => '78765' + 'type' => '78778' }, '2' => { + 'name' => 'remote_container_id', + 'offset' => '18', + 'type' => '4895' + }, + '3' => { 'name' => 'first_child', 'offset' => '22', - 'type' => '79598' + 'type' => '80852' }, - '3' => { + '4' => { 'name' => 'next_sibling', 'offset' => '36', - 'type' => '79598' + 'type' => '80852' }, - '4' => { + '5' => { 'name' => 'association_type', 'offset' => '50', 'type' => '168' @@ -9842,59 +11246,47 @@ $VAR1 = { 'Size' => '40', 'Type' => 'Struct' }, - '79581' => { - 'BaseType' => '78622', - 'Name' => 'struct pldm_pdr_record*', - 'Size' => '8', - 'Type' => 'Pointer' - }, - '79593' => { - 'BaseType' => '78605', - 'Name' => 'pldm_pdr_record*', + '80852' => { + 'BaseType' => '78876', + 'Name' => 'pldm_entity_node*', 'Size' => '8', 'Type' => 'Pointer' }, - '79598' => { - 'BaseType' => '78860', - 'Name' => 'pldm_entity_node*', + '80930' => { + 'BaseType' => '78716', + 'Name' => 'pldm_pdr const*', 'Size' => '8', 'Type' => 'Pointer' }, - '80360' => { - 'BaseType' => '80365', + '81' => { + 'Name' => 'unsigned int', + 'Size' => '4', + 'Type' => 'Intrinsic' + }, + '81826' => { + 'BaseType' => '81831', 'Name' => 'pldm_entity**', 'Size' => '8', 'Type' => 'Pointer' }, - '80365' => { - 'BaseType' => '78765', + '81831' => { + 'BaseType' => '78778', 'Name' => 'pldm_entity*', 'Size' => '8', 'Type' => 'Pointer' }, - '80456' => { - 'BaseType' => '78805', + '81922' => { + 'BaseType' => '78820', 'Name' => 'pldm_entity_association_tree*', 'Size' => '8', 'Type' => 'Pointer' }, - '80835' => { - 'BaseType' => '79598', + '82301' => { + 'BaseType' => '80852', 'Name' => 'pldm_entity_node**', 'Size' => '8', 'Type' => 'Pointer' }, - '81' => { - 'Name' => 'unsigned int', - 'Size' => '4', - 'Type' => 'Intrinsic' - }, - '81535' => { - 'BaseType' => '78523', - 'Name' => 'pldm_pdr*', - 'Size' => '8', - 'Type' => 'Pointer' - }, '825' => { 'BaseType' => '714', 'Name' => 'struct pldm_msg_hdr const', @@ -9926,6 +11318,12 @@ $VAR1 = { 'Size' => '4', 'Type' => 'Struct' }, + '83649' => { + 'BaseType' => '78704', + 'Name' => 'pldm_pdr*', + 'Size' => '8', + 'Type' => 'Pointer' + }, '869' => { 'BaseType' => '830', 'Name' => 'struct pldm_msg const', @@ -9938,18 +11336,6 @@ $VAR1 = { 'Size' => '1', 'Type' => 'Array' }, - '87837' => { - 'BaseType' => '78535', - 'Name' => 'pldm_pdr const*', - 'Size' => '8', - 'Type' => 'Pointer' - }, - '87842' => { - 'BaseType' => '78617', - 'Name' => 'pldm_pdr_record const*', - 'Size' => '8', - 'Type' => 'Pointer' - }, '8822' => { 'BaseType' => '123', 'Name' => 'size_t*', @@ -9990,169 +11376,24 @@ $VAR1 = { 'Size' => '8', 'Type' => 'Struct' }, - '94847' => { - 'BaseType' => '168', - 'Header' => 'base.h', - 'Line' => '14', - 'Name' => 'pldm_tid_t', - 'Size' => '1', - 'Type' => 'Typedef' - }, - '94859' => { - 'BaseType' => '168', - 'Header' => 'instance-id.h', - 'Line' => '11', - 'Name' => 'pldm_instance_id_t', - 'Size' => '1', - 'Type' => 'Typedef' - }, - '95236' => { - 'Header' => undef, - 'Line' => '19', - 'Memb' => { - '0' => { - 'name' => 'prev', - 'offset' => '0', - 'type' => '94859' - }, - '1' => { - 'name' => 'allocations', - 'offset' => '4', - 'type' => '180' - } - }, - 'Name' => 'struct pldm_tid_state', - 'PrivateABI' => 1, - 'Size' => '8', - 'Type' => 'Struct' - }, - '95275' => { - 'Header' => undef, - 'Line' => '24', - 'Memb' => { - '0' => { - 'name' => 'state', - 'offset' => '0', - 'type' => '95317' - }, - '1' => { - 'name' => 'lock_db_fd', - 'offset' => '8264', - 'type' => '74' - } - }, - 'Name' => 'struct pldm_instance_db', - 'PrivateABI' => 1, - 'Size' => '2052', - 'Type' => 'Struct' - }, - '95317' => { - 'BaseType' => '95236', - 'Name' => 'struct pldm_tid_state[256]', - 'Size' => '2048', - 'Type' => 'Array' - }, - '95730' => { - 'BaseType' => '95275', - 'Name' => 'struct pldm_instance_db*', + '91913' => { + 'BaseType' => '78889', + 'Name' => 'pldm_entity_node const*', 'Size' => '8', 'Type' => 'Pointer' }, - '96136' => { - 'BaseType' => '94859', - 'Name' => 'pldm_instance_id_t*', - 'Size' => '8', - 'Type' => 'Pointer' - }, - '96312' => { - 'BaseType' => '95730', - 'Name' => 'struct pldm_instance_db**', + '95646' => { + 'BaseType' => '78634', + 'Name' => 'pldm_pdr_record const*', 'Size' => '8', 'Type' => 'Pointer' }, - '96798' => { - 'BaseType' => '168', - 'Header' => 'pldm.h', - 'Line' => '12', - 'Name' => 'mctp_eid_t', - 'Size' => '1', - 'Type' => 'Typedef' - }, - '96810' => { - 'Header' => 'pldm.h', - 'Line' => '14', - 'Memb' => { - '0' => { - 'name' => 'PLDM_REQUESTER_SUCCESS', - 'value' => '0' - }, - '1' => { - 'name' => 'PLDM_REQUESTER_OPEN_FAIL', - 'value' => '18446744073709551615 (-1)' - }, - '10' => { - 'name' => 'PLDM_REQUESTER_SETUP_FAIL', - 'value' => '18446744073709551606 (-10)' - }, - '11' => { - 'name' => 'PLDM_REQUESTER_INVALID_SETUP', - 'value' => '18446744073709551605 (-11)' - }, - '12' => { - 'name' => 'PLDM_REQUESTER_POLL_FAIL', - 'value' => '18446744073709551604 (-12)' - }, - '2' => { - 'name' => 'PLDM_REQUESTER_NOT_PLDM_MSG', - 'value' => '18446744073709551614 (-2)' - }, - '3' => { - 'name' => 'PLDM_REQUESTER_NOT_RESP_MSG', - 'value' => '18446744073709551613 (-3)' - }, - '4' => { - 'name' => 'PLDM_REQUESTER_NOT_REQ_MSG', - 'value' => '18446744073709551612 (-4)' - }, - '5' => { - 'name' => 'PLDM_REQUESTER_RESP_MSG_TOO_SMALL', - 'value' => '18446744073709551611 (-5)' - }, - '6' => { - 'name' => 'PLDM_REQUESTER_INSTANCE_ID_MISMATCH', - 'value' => '18446744073709551610 (-6)' - }, - '7' => { - 'name' => 'PLDM_REQUESTER_SEND_FAIL', - 'value' => '18446744073709551609 (-7)' - }, - '8' => { - 'name' => 'PLDM_REQUESTER_RECV_FAIL', - 'value' => '18446744073709551608 (-8)' - }, - '9' => { - 'name' => 'PLDM_REQUESTER_INVALID_RECV_LEN', - 'value' => '18446744073709551607 (-9)' - } - }, - 'Name' => 'enum pldm_requester_error_codes', - 'Size' => '4', - 'Type' => 'Enum' - }, '969' => { 'BaseType' => '890', 'Name' => 'struct pldm_header_info const', 'Size' => '8', 'Type' => 'Const' - }, - '96907' => { - 'BaseType' => '96810', - 'Header' => 'pldm.h', - 'Line' => '28', - 'Name' => 'pldm_requester_rc_t', - 'Size' => '4', - 'Type' => 'Typedef' - } + } }, 'UndefinedSymbols' => { 'libpldm.so.0.2.0' => { @@ -10167,8 +11408,12 @@ $VAR1 = { 'close@GLIBC_2.17' => 0, 'connect@GLIBC_2.17' => 0, 'dup@GLIBC_2.17' => 0, + 'fclose@GLIBC_2.17' => 0, 'fcntl64@GLIBC_2.28' => 0, + 'fgets@GLIBC_2.17' => 0, + 'fopen64@GLIBC_2.17' => 0, 'free@GLIBC_2.17' => 0, + 'getsockopt@GLIBC_2.17' => 0, 'malloc@GLIBC_2.17' => 0, 'memcmp@GLIBC_2.17' => 0, 'memcpy@GLIBC_2.17' => 0, @@ -10178,9 +11423,11 @@ $VAR1 = { 'recvmsg@GLIBC_2.17' => 0, 'sendmsg@GLIBC_2.17' => 0, 'sendto@GLIBC_2.17' => 0, + 'setsockopt@GLIBC_2.17' => 0, 'socket@GLIBC_2.17' => 0, 'stat64@GLIBC_2.33' => 0, 'strlen@GLIBC_2.17' => 0, + 'strtol@GLIBC_2.17' => 0, 'write@GLIBC_2.17' => 0 } }, diff --git a/include/libpldm/meson.build b/include/libpldm/meson.build index 4ff250c3d..2604b11ce 100644 --- a/include/libpldm/meson.build +++ b/include/libpldm/meson.build @@ -8,6 +8,7 @@ libpldm_headers += files( 'firmware_update.h', 'fru.h', 'instance-id.h', + 'pdr_data.h', 'pdr.h', 'platform.h', 'pldm_types.h', @@ -31,6 +32,7 @@ if get_option('oem-ibm').allowed() 'oem/ibm/libpldm/fru_oem_ibm.h', 'oem/ibm/libpldm/host.h', 'oem/ibm/libpldm/platform_oem_ibm.h', + 'oem/ibm/libpldm/pdr_oem_ibm.h', 'oem/ibm/libpldm/state_set_oem_ibm.h' ) endif diff --git a/include/libpldm/oem/ibm/libpldm/fru_oem_ibm.h b/include/libpldm/oem/ibm/libpldm/fru_oem_ibm.h index c97f8b080..22df9ad83 100644 --- a/include/libpldm/oem/ibm/libpldm/fru_oem_ibm.h +++ b/include/libpldm/oem/ibm/libpldm/fru_oem_ibm.h @@ -12,6 +12,8 @@ enum pldm_oem_ibm_fru_field_type { PLDM_OEM_FRU_FIELD_TYPE_IANA = 0X01, PLDM_OEM_FRU_FIELD_TYPE_RT = 0X02, PLDM_OEM_FRU_FIELD_TYPE_LOCATION_CODE = 0XFE, + PLDM_OEM_FRU_FIELD_TYPE_PCIE_CONFIG_SPACE_DATA = 0XFD, + PLDM_OEM_FRU_FIELD_TYPE_FIRMWARE_UAK = 0XFC, }; #ifdef __cplusplus diff --git a/include/libpldm/oem/ibm/libpldm/pdr_oem_ibm.h b/include/libpldm/oem/ibm/libpldm/pdr_oem_ibm.h new file mode 100755 index 000000000..f46c1bbf2 --- /dev/null +++ b/include/libpldm/oem/ibm/libpldm/pdr_oem_ibm.h @@ -0,0 +1,42 @@ +#ifndef PDR_OEM_IBM_H +#define PDR_OEM_IBM_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include "pdr_data.h" +#include "platform.h" +#include +#include +#include + +/** @brief Find the last local record + * + * @param[in] repo - opaque pointer acting as a PDR repo handle + * + * @return opaque pointer to the PDR record,will be NULL if record was not + * found + */ +pldm_pdr_record *pldm_pdr_find_last_local_record(const pldm_pdr *repo); + +/** @brief method to check if the record handle is within the HostBoot range + * or not + * + * @param[in] record_handle - record handle of the pdr + */ +bool isHBRange(const uint32_t record_handle); + +/** @brief find the container ID of the contained entity + * + * @param[in] repo - opaque pointer acting as a PDR repo handle + * @param[in] entityType - entity type + * @param[in] entityInstance - instance of the entity + */ +uint16_t pldm_find_container_id(const pldm_pdr *repo, uint16_t entityType, + uint16_t entityInstance); +#ifdef __cplusplus +} +#endif + +#endif /* PDR_OEM_IBM_H */ diff --git a/include/libpldm/oem/ibm/libpldm/state_set_oem_ibm.h b/include/libpldm/oem/ibm/libpldm/state_set_oem_ibm.h index 5c8378b5c..09f3b726e 100644 --- a/include/libpldm/oem/ibm/libpldm/state_set_oem_ibm.h +++ b/include/libpldm/oem/ibm/libpldm/state_set_oem_ibm.h @@ -12,7 +12,27 @@ enum ibm_oem_pldm_state_set_ids { PLDM_OEM_IBM_VERIFICATION_STATE = 32770, PLDM_OEM_IBM_SYSTEM_POWER_STATE = 32771, PLDM_OEM_IBM_SBE_MAINTENANCE_STATE = 32772, + PLDM_OEM_IBM_BOOT_SIDE_RENAME = 32773, + PLDM_OEM_IBM_SBE_SEMANTIC_ID = 32775, PLDM_OEM_IBM_SBE_HRESET_STATE = 32776, + + PLDM_OEM_IBM_PANEL_TRIGGER_STATE = 32778, + PLDM_OEM_IBM_SLOT_ENABLE_EFFECTER_STATE = 32779, + PLDM_OEM_IBM_SLOT_ENABLE_SENSOR_STATE = 32780, + PLDM_OEM_IBM_PCIE_TOPOLOGY_ACTIONS = 32781, +}; + +enum ibm_slot_enable_effecter_state { + ADD = 0x1, + REMOVE = 0x2, + REPLACE = 0x3, +}; + +enum ibm_slot_enable_sensor_state { + SLOT_STATE_UNKOWN = 0x0, + SLOT_STATE_ENABLED = 0x1, + SLOT_STATE_DISABLED = 0x2, + SLOT_STATE_ERROR = 0x03, }; enum ibm_oem_pldm_state_set_firmware_update_state_values { @@ -45,12 +65,22 @@ enum ibm_oem_pldm_state_set_sbe_dump_state_values { SBE_RETRY_REQUIRED = 0x2, }; +enum ibm_oem_pldm_state_set_boot_side_rename_state_values { + PLDM_BOOT_SIDE_NOT_RENAMED = 1, + PLDM_BOOT_SIDE_HAS_BEEN_RENAMED = 2, +}; enum ibm_oem_pldm_state_set_sbe_hreset_state_values { SBE_HRESET_NOT_READY = 0x1, SBE_HRESET_READY = 0x2, SBE_HRESET_FAILED = 0x3, }; +enum pldm_oem_pcie_topology_actions { + GET_PCIE_TOPOLOGY = 0x1, + GET_CABLE_INFO = 0x2, + SAVE_PCIE_TOPLOGY = 0x03, +}; + #ifdef __cplusplus } #endif diff --git a/include/libpldm/pdr.h b/include/libpldm/pdr.h index 27ad6f1e7..52627f8b6 100644 --- a/include/libpldm/pdr.h +++ b/include/libpldm/pdr.h @@ -9,15 +9,7 @@ extern "C" { #include #include -/** @struct pldm_pdr - * opaque structure that acts as a handle to a PDR repository - */ -typedef struct pldm_pdr pldm_pdr; - -/** @struct pldm_pdr_record - * opaque structure that acts as a handle to a PDR record - */ -typedef struct pldm_pdr_record pldm_pdr_record; +#include "pdr_data.h" /* ====================== */ /* Common PDR access APIs */ @@ -73,6 +65,29 @@ uint32_t pldm_pdr_add(pldm_pdr *repo, const uint8_t *data, uint32_t size, uint32_t record_handle, bool is_remote, uint16_t terminus_handle); +uint32_t pldm_pdr_add_hotplug_record(pldm_pdr *repo, const uint8_t *data, + uint32_t size, uint32_t record_handle, + bool is_remote, + uint32_t prev_record_handle, + uint16_t terminus_handle); +/** @brief Add a PDR record after the record handle sent as input + * + * @param[in/out] repo - opaque pointer acting as a PDR repo handle + * @param[in] data - pointer to a PDR record, pointing to a PDR definition as + * per DSP0248. This data is memcpy'd. + * @param[in] size - size of input PDR record in bytes + * @param[in] record_handle - record handle of input PDR record + * @param[in] is_remote - if true, then the PDR is not from this terminus + * @param[in] prev_record_handle - the record handle after which the input + * record handle should be added in the repo + * + * @return uint32_t - record handle assigned to PDR record*/ +uint32_t pldm_pdr_add_after_prev_record(pldm_pdr *repo, const uint8_t *data, + uint32_t size, uint32_t record_handle, + bool is_remote, + uint32_t prev_record_handle, + uint16_t terminus_handle); + /** @brief Get record handle of a PDR record * * @param[in] repo - opaque pointer acting as a PDR repo handle @@ -102,6 +117,18 @@ const pldm_pdr_record *pldm_pdr_find_record(const pldm_pdr *repo, uint8_t **data, uint32_t *size, uint32_t *next_record_handle); +/** @brief Find the previous record handle of a PDR record + * + * @param[in] repo - opaque pointer acting as a PDR repo handle + * @param[in] record_handle - record handle of input PDR record + * @param[out] prev_record_handle - record handle of the previous + * PDR + * + * @return true if record found, false otherwise + */ +bool pldm_pdr_find_prev_record_handle(pldm_pdr *repo, uint32_t record_handle, + uint32_t *prev_record_handle); + /** @brief Get PDR record next to input PDR record * * @param[in] repo - opaque pointer acting as a PDR repo handle @@ -200,6 +227,71 @@ int pldm_pdr_find_container_id_range_exclude( uint32_t range_exclude_start_handle, uint32_t range_exclude_end_handle, uint16_t *container_id); +/** @brief Delete record using its record handle + * + * @param[in] repo - opaque pointer acting as a PDR repo handle + * @param[in] record_handle - record handle of input PDR record + * @param[in] is_remote - if true, then the PDR is not from this terminus + */ +void pldm_delete_by_record_handle(pldm_pdr *repo, uint32_t record_handle, + bool is_remote); + +/** @brief update the container id of an effecter + * + * @param[in] repo - opaque pointer acting as a PDR repo handle + * @param[in] effecterId - effecter ID + * @param[in] containerId - conatiner ID to be updated + */ +void pldm_change_container_id_of_effecter(const pldm_pdr *repo, + uint16_t effecterId, + uint16_t containerId); + +/** @brief update the container id of a sensor + * + * @param[in] repo - opaque pointer acting as a PDR repo handle + * @param[in] sensorId - sensor ID + * @param[in] containerId - conatiner ID to be updated + */ +void pldm_change_container_id_of_sensor(const pldm_pdr *repo, uint16_t sensorId, + uint16_t containerId); + +/** @brief update the instance number of an effecter + * + * @param[in] repo - opaque pointer acting as a PDR repo handle + * @param[in] effecterId - effecter ID + * @param[in] instanceNumber - instance number to be updated + */ +void pldm_change_instance_number_of_effecter(const pldm_pdr *repo, + uint16_t effecterId, + uint16_t instanceNumber); + +/** @brief update the instance number of a sensor + * + * @param[in] repo - opaque pointer acting as a PDR repo handle + * @param[in] sensorId - sensor ID + * @param[in] instanceNumber - instance number to be updated + */ +void pldm_change_instance_number_of_sensor(const pldm_pdr *repo, + uint16_t sensorId, + uint16_t instanceNumber); +/** @brief delete the pdr by effecter id + * + * @param[in] repo - opaque pointer acting as a PDR repo handle + * @param[in] effecter_id - effecter ID + * @param[in] is_remote - indicates which PDR to remove, local or remote + */ +uint16_t pldm_delete_by_effecter_id(pldm_pdr *repo, uint16_t effecter_id, + bool is_remote); + +/** @brief delete the pdr by sensor id + * + * @param[in] repo - opaque pointer acting as a PDR repo handle + * @param[in] sensor_id - sensor ID + * @param[in] is_remote - indicates which PDR to remove, local or remote + */ +uint16_t pldm_delete_by_sensor_id(pldm_pdr *repo, uint16_t sensor_id, + bool is_remote); + /* ======================= */ /* FRU Record Set PDR APIs */ /* ======================= */ @@ -214,6 +306,7 @@ int pldm_pdr_find_container_id_range_exclude( * @param[in] entity_instance_num - entity instance number of FRU * @param[in] container_id - container id of FRU * @param[in] bmc_record_handle - handle used to construct the next record + * @param[in] hotplug - indicates if its a hotplug PDR or not * * @return uint32_t - record handle assigned to PDR record */ @@ -221,7 +314,7 @@ uint32_t pldm_pdr_add_fru_record_set(pldm_pdr *repo, uint16_t terminus_handle, uint16_t fru_rsi, uint16_t entity_type, uint16_t entity_instance_num, uint16_t container_id, - uint32_t bmc_record_handle); + uint32_t bmc_record_handle, bool hotplug); /** @brief Find a FRU record set PDR by FRU record set identifier * @@ -235,13 +328,24 @@ uint32_t pldm_pdr_add_fru_record_set(pldm_pdr *repo, uint16_t terminus_handle, * instance number of found PDR, or 0 if not found * @param[in] container_id - *cintainer_id will be FRU container id of found * PDR, or 0 if not found + * @param[in] is_remote - indicates which PDR to search * * @return uint32_t - record handle assigned to PDR record */ const pldm_pdr_record *pldm_pdr_fru_record_set_find_by_rsi( const pldm_pdr *repo, uint16_t fru_rsi, uint16_t *terminus_handle, uint16_t *entity_type, uint16_t *entity_instance_num, - uint16_t *container_id); + uint16_t *container_id, bool is_remote); + +/** @brief deletes a FRU record set PDR by FRU record set identifier + * @param[in] repo - opaque pointer acting as a PDR repo handle + * @param[in] fru_rsi - FRU record set identifier + * @param[in] is_remote - indicates which PDR to remove, local or remote + * + * @return uint32_t the FRU rsi that was removed + */ +uint32_t pldm_pdr_remove_fru_record_set_by_rsi(pldm_pdr *repo, uint16_t fru_rsi, + bool is_remote); /* =========================== */ /* Entity Association PDR APIs */ @@ -275,6 +379,14 @@ typedef struct pldm_entity_node pldm_entity_node; */ pldm_entity_association_tree *pldm_entity_association_tree_init(void); +/** @brief Next Container ID from the association tree + * + * @param[in] tree - opaque pointer acting as a handle to the tree + * + * @return next container id - container id of the entity + */ +uint16_t next_container_id(pldm_entity_association_tree *tree); + /** @brief Add a local entity into the entity association tree * * @param[in/out] tree - opaque pointer acting as a handle to the tree @@ -288,12 +400,30 @@ pldm_entity_association_tree *pldm_entity_association_tree_init(void); * entity. If this is NULL, then the entity is the root * @param[in] association_type - relation with the parent : logical or physical * + * @param[in] is_remote - used to denote whether we are adding a BMC entity to + * the tree or a host entity + * @param[in] is_update_contanier_id - Used to determine whether need to update + * contanier id. + * true: should be changed + * false: should not be changed + * @param[in] conatiner_id - container id of the entity added + * * @return pldm_entity_node* - opaque pointer to added entity */ pldm_entity_node *pldm_entity_association_tree_add( pldm_entity_association_tree *tree, pldm_entity *entity, uint16_t entity_instance_number, pldm_entity_node *parent, - uint8_t association_type); + uint8_t association_type, bool is_remote, bool is_update_contanier_id, + uint16_t container_id); + +/** @brief deletes a node and it's children from the entity association tree + * @param[in] tree - opaque pointer acting as a handle to the tree + * @param[in] entity - the pldm entity to be deleted + * + * @return none + */ +void pldm_entity_association_tree_delete_node( + pldm_entity_association_tree *tree, pldm_entity entity); /** @brief Add an entity into the entity association tree based on remote field * set or unset. @@ -351,6 +481,14 @@ pldm_entity pldm_entity_extract(pldm_entity_node *node); int pldm_entity_node_get_remote_container_id(const pldm_entity_node *entity, uint16_t *cid); +/** @brief Extract host container id by the pldm_entity_node + * + * @param[in] entity - opaque pointer to added entity + * + * @return host container id - host container id + */ +uint16_t pldm_extract_host_container_id(const pldm_entity_node *entity); + /** @brief Destroy entity association tree * * @param[in] tree - opaque pointer acting as a handle to the tree @@ -397,10 +535,43 @@ void pldm_entity_association_pdr_add(pldm_entity_association_tree *tree, * @param[in] repo - PDR repo where entity association records should be added * @param[in] is_remote - if true, then the PDR is not from this terminus * @param[in] terminus_handle - terminus handle of the terminus + * @param[in] record_handle - is used to decide in which range pdr will be + * added 0 - Added next to recently added PDR in the repository 0xFFFFFFFF - + * Added in BMC range */ void pldm_entity_association_pdr_add_from_node( pldm_entity_node *node, pldm_pdr *repo, pldm_entity **entities, - size_t num_entities, bool is_remote, uint16_t terminus_handle); + size_t num_entities, bool is_remote, uint16_t terminus_handle, + uint32_t record_handle); + +/** @brief Remove a contained entity from an entity association PDR + * @param[in] repo - opaque pointer to pldm PDR repo + * @param[in] entity - the pldm entity to be deleted + * @param[in] event_data_op - the event data operation that happens on the + * record + * @param[in] is_remote - whether to delete from a remote pDR or local PDR + * + * @return uint32_t the PDR record handle that was updated + */ +uint32_t pldm_entity_association_pdr_remove_contained_entity( + pldm_pdr *repo, pldm_entity entity, uint8_t *event_data_op, + bool is_remote); + +/** @brief Add a contained entity into an entity association PDR + * @param[in] repo - opaque pointer to pldm PDR repo + * @param[in] entity - the pldm entity to be added + * @param[in] parent - the parent entity + * @param[in] event_data_op - the event data operation that happens on the + * record + * @param[in] is_remote - whether to add in the local or remote PDR + * + * @param[in] bmc_record_handle - handle to be added to the pdr + * + * @return uint32_t the updated PDR record handle + */ +uint32_t pldm_entity_association_pdr_add_contained_entity( + pldm_pdr *repo, pldm_entity entity, pldm_entity parent, + uint8_t *event_data_op, bool is_remote, uint32_t bmc_record_handle); /** @brief Add entity association pdr record based on record handle * earlier the records where added in a sequential way alone, with @@ -451,11 +622,14 @@ bool pldm_is_current_parent_child(pldm_entity_node *parent, pldm_entity *node); * @param[in] tree - pointer to entity association tree * @param[in/out] entity - entity type and instance id set on input, container * id set on output + * @param[in] is_remote - variable to denote whether we are finding a host + * entity or a BMC entity + * * @return pldm_entity_node* pointer to entity if found, NULL otherwise */ pldm_entity_node * pldm_entity_association_tree_find(pldm_entity_association_tree *tree, - pldm_entity *entity); + pldm_entity *entity, bool is_remote); /** @brief Find an entity in the entity association tree if remote * @@ -506,6 +680,23 @@ bool pldm_is_empty_entity_assoc_tree(pldm_entity_association_tree *tree); void pldm_entity_association_pdr_extract(const uint8_t *pdr, uint16_t pdr_len, size_t *num_entities, pldm_entity **entities); +pldm_entity pldm_get_entity_from_record_handle(const pldm_pdr *repo, + uint32_t record_handle); + +/** @brief Initialize the pldm_entity_node structure, just for deserialization + * + * @param[in] entity - node of pldm entity + * @param[in] parent - parent of pldm entity + * @param[in] host_container_id - host container id + * @param[in] first_child - first child of pldm entity + * @param[in] next_sibling - net sibling of pldm entity + * @param[in] association_type - association type + */ +pldm_entity_node *init_pldm_entity_node(pldm_entity entity, pldm_entity parent, + uint16_t host_container_id, + pldm_entity_node *first_child, + pldm_entity_node *next_sibling, + uint8_t association_type); #ifdef __cplusplus } diff --git a/include/libpldm/pdr_data.h b/include/libpldm/pdr_data.h new file mode 100755 index 000000000..ec66caaf7 --- /dev/null +++ b/include/libpldm/pdr_data.h @@ -0,0 +1,41 @@ +#ifndef PDR_DATA_H +#define PDR_DATA_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include +#include + +typedef struct pldm_pdr_record { + uint32_t record_handle; + uint32_t size; + uint8_t *data; + struct pldm_pdr_record *next; + bool is_remote; + uint16_t terminus_handle; +} pldm_pdr_record; + +typedef struct pldm_pdr { + uint32_t record_count; + uint32_t size; + pldm_pdr_record *first; + pldm_pdr_record *last; +} pldm_pdr; + +/** @struct pldm_pdr + * * opaque structure that acts as a handle to a PDR repository + * */ +typedef struct pldm_pdr pldm_pdr; + +/** @struct pldm_pdr_record + * * opaque structure that acts as a handle to a PDR record + * */ +typedef struct pldm_pdr_record pldm_pdr_record; +#ifdef __cplusplus +} +#endif + +#endif /* PDR_DATA_H */ diff --git a/include/libpldm/platform.h b/include/libpldm/platform.h index 26d47c532..856a841f6 100644 --- a/include/libpldm/platform.h +++ b/include/libpldm/platform.h @@ -126,6 +126,12 @@ enum pldm_sensor_present_state { PLDM_SENSOR_UPPERFATAL = 0x0a }; +enum pldm_operational_fault_status { + PLDM_OPERATIONAL_NORMAL = 0x1, + PLDM_OPERATIONAL_ERROR = 0x2, + PLDM_OPERATIONAL_NON_RECOVERABLE_ERROR = 0x3 +}; + enum pldm_sensor_event_message_enable { PLDM_NO_EVENT_GENERATION, PLDM_EVENTS_DISABLED, @@ -268,7 +274,8 @@ enum pldm_pdr_repository_chg_event_change_record_event_data_operation { PLDM_REFRESH_ALL_RECORDS, PLDM_RECORDS_DELETED, PLDM_RECORDS_ADDED, - PLDM_RECORDS_MODIFIED + PLDM_RECORDS_MODIFIED, + PLDM_INVALID_OP }; /** @brief PLDM NumericSensorStatePresentReading data type @@ -515,7 +522,7 @@ struct pldm_pdr_fru_record_set { uint16_t terminus_handle; uint16_t fru_rsi; uint16_t entity_type; - uint16_t entity_instance_num; + uint16_t entity_instance; uint16_t container_id; } __attribute__((packed)); diff --git a/include/libpldm/pldm_types.h b/include/libpldm/pldm_types.h index e48cb8c38..3c5f08642 100644 --- a/include/libpldm/pldm_types.h +++ b/include/libpldm/pldm_types.h @@ -22,10 +22,10 @@ typedef union { * */ typedef struct pldm_version { - uint8_t alpha; - uint8_t update; - uint8_t minor; uint8_t major; + uint8_t minor; + uint8_t update; + uint8_t alpha; } __attribute__((packed)) ver32_t; typedef uint8_t bool8_t; diff --git a/include/libpldm/state_set.h b/include/libpldm/state_set.h index 38f5aa14d..9e8b927bb 100644 --- a/include/libpldm/state_set.h +++ b/include/libpldm/state_set.h @@ -223,7 +223,15 @@ enum pldm_state_set_boot_progress_state_values { /* @brief List of states for the System Power State set (ID 260). */ enum pldm_state_set_system_power_state_values { - PLDM_STATE_SET_SYS_POWER_STATE_OFF_SOFT_GRACEFUL = 9 + PLDM_STATE_SET_SYS_POWER_CYCLE_OFF_SOFT_GRACEFUL = 7, + PLDM_STATE_SET_SYS_POWER_STATE_OFF_SOFT_GRACEFUL = 9, + PLDM_STATE_SET_SYS_POWER_STATE_OFF_HARD_GRACEFUL = 10, +}; + +enum pldm_state_set_device_power_state_values { + PLDM_STATE_SET_DEVICE_POWER_STATE_UNKNOWN = 0, + PLDM_STATE_SET_DEVICE_POWER_STATE_FULLY_ON = 1, + PLDM_STATE_SET_DEVICE_POWER_STATE_OFF = 4, }; /* OEM ranges */ diff --git a/include/libpldm/states.h b/include/libpldm/states.h index a89648dfa..f42af7904 100644 --- a/include/libpldm/states.h +++ b/include/libpldm/states.h @@ -20,6 +20,12 @@ enum pldm_system_power_states { PLDM_OFF_SOFT_GRACEFUL = 9, }; +/** @brief PLDM enums for availability states + */ +enum pldm_availability_states { + PLDM_RESETTING = 9, +}; + #ifdef __cplusplus } #endif diff --git a/src/meson.build b/src/meson.build index 350611328..cc699b507 100644 --- a/src/meson.build +++ b/src/meson.build @@ -13,5 +13,7 @@ subdir('requester') subdir('transport') if get_option('oem-ibm').allowed() + add_project_arguments('-DOEM_IBM', language : 'c') + add_project_arguments('-DOEM_IBM', language : 'cpp') subdir('oem/ibm') endif diff --git a/src/oem/ibm/meson.build b/src/oem/ibm/meson.build index 04bb24f19..47db31e7b 100644 --- a/src/oem/ibm/meson.build +++ b/src/oem/ibm/meson.build @@ -1,5 +1,6 @@ libpldm_sources += files( 'file_io.c', 'host.c', - 'platform.c' + 'platform.c', + 'pdr.c' ) diff --git a/src/oem/ibm/pdr.c b/src/oem/ibm/pdr.c new file mode 100644 index 000000000..2549f614f --- /dev/null +++ b/src/oem/ibm/pdr.c @@ -0,0 +1,72 @@ +#include "libpldm/pdr.h" +#include "libpldm/pdr_oem_ibm.h" + +#include + +LIBPLDM_ABI_STABLE +pldm_pdr_record *pldm_pdr_find_last_local_record(const pldm_pdr *repo) +{ + assert(repo != NULL); + pldm_pdr_record *curr = repo->first; + pldm_pdr_record *prev = repo->first; + pldm_pdr_record *record = curr; + uint32_t recent_record_handle = curr->record_handle; + + while (curr != NULL) { + if ((curr->record_handle > 0x00000000) && + (curr->record_handle < 0x00FFFFFF)) { + if (recent_record_handle < curr->record_handle) { + recent_record_handle = curr->record_handle; + record = curr; + } + } + prev = curr; + curr = curr->next; + } + if (curr == NULL && prev != NULL) { + return record; + } + return NULL; +} + +LIBPLDM_ABI_STABLE +bool isHBRange(const uint32_t record_handle) +{ + if (record_handle >= 0x01000000 && record_handle < 0x01FFFFFF) { + return true; + } + return false; +} + +LIBPLDM_ABI_STABLE +uint16_t pldm_find_container_id(const pldm_pdr *repo, uint16_t entityType, + uint16_t entityInstance) +{ + assert(repo != NULL); + + pldm_pdr_record *record = repo->first; + + while (record != NULL) { + struct pldm_pdr_hdr *hdr = (struct pldm_pdr_hdr *)record->data; + if (hdr->type == PLDM_PDR_ENTITY_ASSOCIATION && + !(isHBRange(record->record_handle))) { + struct pldm_pdr_entity_association *pdr = + (struct pldm_pdr_entity_association + *)((uint8_t *)record->data + + sizeof(struct pldm_pdr_hdr)); + struct pldm_entity *child = + (struct pldm_entity *)(&pdr->children[0]); + for (int i = 0; i < pdr->num_children; ++i) { + if (pdr->container.entity_type == entityType && + pdr->container.entity_instance_num == + entityInstance) { + uint16_t id = + child->entity_container_id; + return id; + } + } + } + record = record->next; + } + return 0; +} diff --git a/src/pdr.c b/src/pdr.c index a78593c63..1304646c0 100644 --- a/src/pdr.c +++ b/src/pdr.c @@ -6,21 +6,11 @@ #include #include -typedef struct pldm_pdr_record { - uint32_t record_handle; - uint32_t size; - uint8_t *data; - struct pldm_pdr_record *next; - bool is_remote; - uint16_t terminus_handle; -} pldm_pdr_record; - -typedef struct pldm_pdr { - uint32_t record_count; - uint32_t size; - pldm_pdr_record *first; - pldm_pdr_record *last; -} pldm_pdr; +#include + +#ifdef OEM_IBM +#include "oem/ibm/libpldm/pdr_oem_ibm.h" +#endif static inline uint32_t get_next_record_handle(const pldm_pdr *repo, const pldm_pdr_record *record) @@ -51,6 +41,84 @@ static void add_record(pldm_pdr *repo, pldm_pdr_record *record) ++repo->record_count; } +static void add_hotplug_record(pldm_pdr *repo, pldm_pdr_record *record, + uint32_t prev_record_handle) +{ + // the new record + // needs to be added after prev_record_handle + assert(repo != NULL); + assert(record != NULL); + record->next = NULL; + bool recordAdded = false; + if (repo->first == NULL) { + assert(repo->last == NULL); + repo->first = record; + repo->last = record; + recordAdded = true; + } else { + pldm_pdr_record *curr = repo->first; + while (curr != NULL) { + if (curr->record_handle == prev_record_handle) { + record->next = curr->next; + curr->next = record; + if (record->next == NULL) { + repo->last->next = record; + repo->last = record; + } + recordAdded = true; + break; + } + curr = curr->next; + } + // printf("\nadding the fru hotplug here + // curr->record_handle=%d",curr->record_handle); + // printf("repo-last=%x, curr=%x, curr-next=%x",(unsigned + // int)repo->last, (unsigned int)curr, (unsigned + // int)curr->next); + } + if (recordAdded == false) { + free(record); + assert(recordAdded != false); + } + repo->size += record->size; + ++repo->record_count; +} + +static void add_record_after_record_handle(pldm_pdr *repo, + pldm_pdr_record *record, + uint32_t prev_record_handle) +{ + assert(repo != NULL); + assert(record != NULL); + bool recordAdded = false; + if (repo->first == NULL) { + assert(repo->last == NULL); + repo->first = record; + repo->last = record; + recordAdded = true; + } else { + pldm_pdr_record *curr = repo->first; + while (curr != NULL) { + if (curr->record_handle == prev_record_handle) { + record->next = curr->next; + curr->next = record; + if (record->next == NULL) { + repo->last = record; + } + recordAdded = true; + break; + } + curr = curr->next; + } + } + if (recordAdded == false) { + free(record); + assert(recordAdded != false); + } + repo->size += record->size; + ++repo->record_count; +} + static inline uint32_t get_new_record_handle(const pldm_pdr *repo) { assert(repo != NULL); @@ -71,9 +139,18 @@ static pldm_pdr_record *make_new_record(const pldm_pdr *repo, pldm_pdr_record *record = malloc(sizeof(pldm_pdr_record)); assert(record != NULL); - record->record_handle = record_handle == 0 ? - get_new_record_handle(repo) : - record_handle; + if (record_handle == 0) { + record->record_handle = get_new_record_handle(repo); + } +#ifdef OEM_IBM + else if (record_handle == 0xFFFFFFFF) { + pldm_pdr_record *rec = pldm_pdr_find_last_local_record(repo); + record->record_handle = rec->record_handle + 1; + } +#endif + else { + record->record_handle = record_handle; + } record->size = size; record->is_remote = is_remote; record->terminus_handle = terminus_handle; @@ -87,11 +164,9 @@ static pldm_pdr_record *make_new_record(const pldm_pdr *repo, * caller supplied the record handle, it would exist in the * header already. */ - if (!record_handle) { - struct pldm_pdr_hdr *hdr = - (struct pldm_pdr_hdr *)(record->data); - hdr->record_handle = htole32(record->record_handle); - } + struct pldm_pdr_hdr *hdr = + (struct pldm_pdr_hdr *)(record->data); + hdr->record_handle = htole32(record->record_handle); } record->next = NULL; @@ -113,6 +188,39 @@ uint32_t pldm_pdr_add(pldm_pdr *repo, const uint8_t *data, uint32_t size, return record->record_handle; } +LIBPLDM_ABI_STABLE +uint32_t pldm_pdr_add_hotplug_record(pldm_pdr *repo, const uint8_t *data, + uint32_t size, uint32_t record_handle, + bool is_remote, + uint32_t prev_record_handle, + uint16_t terminus_handle) +{ + assert(size != 0); + assert(data != NULL); + + pldm_pdr_record *record = make_new_record( + repo, data, size, record_handle, is_remote, terminus_handle); + add_hotplug_record(repo, record, prev_record_handle); + return record->record_handle; +} + +LIBPLDM_ABI_STABLE +uint32_t pldm_pdr_add_after_prev_record(pldm_pdr *repo, const uint8_t *data, + uint32_t size, uint32_t record_handle, + bool is_remote, + uint32_t prev_record_handle, + uint16_t terminus_handle) +{ + assert(size != 0); + assert(data != NULL); + + pldm_pdr_record *record = make_new_record( + repo, data, size, record_handle, is_remote, terminus_handle); + add_record_after_record_handle(repo, record, prev_record_handle); + + return record->record_handle; +} + LIBPLDM_ABI_STABLE pldm_pdr *pldm_pdr_init(void) { @@ -175,6 +283,24 @@ const pldm_pdr_record *pldm_pdr_find_record(const pldm_pdr *repo, return NULL; } +LIBPLDM_ABI_STABLE +bool pldm_pdr_find_prev_record_handle(pldm_pdr *repo, uint32_t record_handle, + uint32_t *prev_record_handle) +{ + assert(repo != NULL); + pldm_pdr_record *curr = repo->first; + pldm_pdr_record *prev = repo->first; + while (curr != NULL) { + if (curr->record_handle == record_handle) { + *prev_record_handle = prev->record_handle; + return true; + } + prev = curr; + curr = curr->next; + } + return false; +} + LIBPLDM_ABI_STABLE const pldm_pdr_record * pldm_pdr_get_next_record(const pldm_pdr *repo, @@ -269,7 +395,7 @@ uint32_t pldm_pdr_add_fru_record_set(pldm_pdr *repo, uint16_t terminus_handle, uint16_t fru_rsi, uint16_t entity_type, uint16_t entity_instance_num, uint16_t container_id, - uint32_t bmc_record_handle) + uint32_t bmc_record_handle, bool hotplug) { uint32_t size = sizeof(struct pldm_pdr_hdr) + sizeof(struct pldm_pdr_fru_record_set); @@ -287,18 +413,27 @@ uint32_t pldm_pdr_add_fru_record_set(pldm_pdr *repo, uint16_t terminus_handle, fru->terminus_handle = htole16(terminus_handle); fru->fru_rsi = htole16(fru_rsi); fru->entity_type = htole16(entity_type); - fru->entity_instance_num = htole16(entity_instance_num); + fru->entity_instance = htole16(entity_instance_num); fru->container_id = htole16(container_id); - return pldm_pdr_add(repo, data, size, bmc_record_handle, false, - terminus_handle); + uint32_t prev_record_handle = bmc_record_handle - 1; + if (hotplug) { + return pldm_pdr_add_hotplug_record(repo, data, size, + bmc_record_handle, false, + prev_record_handle, + fru->terminus_handle); + + } else { + return pldm_pdr_add(repo, data, size, bmc_record_handle, false, + fru->terminus_handle); + } } LIBPLDM_ABI_STABLE const pldm_pdr_record *pldm_pdr_fru_record_set_find_by_rsi( const pldm_pdr *repo, uint16_t fru_rsi, uint16_t *terminus_handle, uint16_t *entity_type, uint16_t *entity_instance_num, - uint16_t *container_id) + uint16_t *container_id, bool is_remote) { assert(terminus_handle != NULL); assert(entity_type != NULL); @@ -313,11 +448,11 @@ const pldm_pdr_record *pldm_pdr_fru_record_set_find_by_rsi( struct pldm_pdr_fru_record_set *fru = (struct pldm_pdr_fru_record_set *)(data + sizeof(struct pldm_pdr_hdr)); - if (fru->fru_rsi == htole16(fru_rsi)) { + if (fru->fru_rsi == htole16(fru_rsi) && + curr_record->is_remote == is_remote) { *terminus_handle = le16toh(fru->terminus_handle); *entity_type = le16toh(fru->entity_type); - *entity_instance_num = - le16toh(fru->entity_instance_num); + *entity_instance_num = le16toh(fru->entity_instance); *container_id = le16toh(fru->container_id); return curr_record; } @@ -335,6 +470,55 @@ const pldm_pdr_record *pldm_pdr_fru_record_set_find_by_rsi( return NULL; } +LIBPLDM_ABI_STABLE +uint32_t pldm_pdr_remove_fru_record_set_by_rsi(pldm_pdr *repo, uint16_t fru_rsi, + bool is_remote) +{ + assert(repo != NULL); + + uint32_t delete_hdl = 0; + pldm_pdr_record *record = repo->first; + pldm_pdr_record *prev = NULL; + while (record != NULL) { + pldm_pdr_record *next = record->next; + struct pldm_pdr_hdr *hdr = (struct pldm_pdr_hdr *)record->data; + if ((record->is_remote == is_remote) && + hdr->type == PLDM_PDR_FRU_RECORD_SET) { + struct pldm_pdr_fru_record_set *fru = + (struct pldm_pdr_fru_record_set + *)((uint8_t *)record->data + + sizeof(struct pldm_pdr_hdr)); + if (fru->fru_rsi == fru_rsi) { + delete_hdl = hdr->record_handle; + if (repo->first == record) { + repo->first = next; + } else { + prev->next = next; + } + if (repo->last == record) { + repo->last = prev; + if (prev != NULL) { + prev->next = NULL; // sm00 + } + } + --repo->record_count; + repo->size -= record->size; + if (record->data) { + free(record->data); + } + free(record); + break; + } else { + prev = record; + } + } else { + prev = record; + } + record = next; + } + return delete_hdl; +} + LIBPLDM_ABI_STABLE /* NOLINTNEXTLINE(readability-identifier-naming) */ void pldm_pdr_update_TL_pdr(const pldm_pdr *repo, uint16_t terminus_handle, @@ -424,6 +608,303 @@ int pldm_pdr_find_container_id_range_exclude( return -ENOKEY; } +LIBPLDM_ABI_STABLE +void pldm_delete_by_record_handle(pldm_pdr *repo, uint32_t record_handle, + bool is_remote) +{ + assert(repo != NULL); + + pldm_pdr_record *record = repo->first; + pldm_pdr_record *prev = NULL; + while (record != NULL) { + pldm_pdr_record *next = record->next; + struct pldm_pdr_hdr *hdr = (struct pldm_pdr_hdr *)record->data; + if ((record->is_remote == is_remote) && + (hdr->record_handle == record_handle)) { + if (repo->first == record) { + repo->first = next; + } else { + prev->next = next; + } + if (repo->last == record) { + repo->last = prev; + } + if (record->data) { + free(record->data); + } + --repo->record_count; + repo->size -= record->size; + free(record); + break; + } else { + prev = record; + } + record = next; + } +} + +LIBPLDM_ABI_STABLE +pldm_entity pldm_get_entity_from_record_handle(const pldm_pdr *repo, + uint32_t record_handle) +{ + assert(repo != NULL); + pldm_entity element = { 0, 0, 0 }; + + pldm_pdr_record *record = repo->first; + + while (record != NULL) { + struct pldm_pdr_hdr *hdr = (struct pldm_pdr_hdr *)record->data; + if (hdr->record_handle == record_handle) { + switch (hdr->type) { + case (PLDM_PDR_FRU_RECORD_SET): { + struct pldm_pdr_fru_record_set *pdr = + (struct pldm_pdr_fru_record_set + *)((uint8_t *)record->data + + sizeof(struct pldm_pdr_hdr)); + element.entity_type = pdr->entity_type; + element.entity_instance_num = + pdr->entity_instance; + element.entity_container_id = pdr->container_id; + return element; + } + case (PLDM_STATE_SENSOR_PDR): { + struct pldm_state_sensor_pdr *pdr = + (struct pldm_state_sensor_pdr + *)((uint8_t *)record->data); + element.entity_type = pdr->entity_type; + element.entity_instance_num = + pdr->entity_instance; + element.entity_container_id = pdr->container_id; + return element; + } + case (PLDM_STATE_EFFECTER_PDR): { + struct pldm_state_effecter_pdr *pdr = + (struct pldm_state_effecter_pdr + *)((uint8_t *)record->data); + element.entity_type = pdr->entity_type; + element.entity_instance_num = + pdr->entity_instance; + element.entity_container_id = pdr->container_id; + return element; + } + case (PLDM_NUMERIC_EFFECTER_PDR): { + struct pldm_numeric_effecter_value_pdr *pdr = + (struct pldm_numeric_effecter_value_pdr + *)((uint8_t *)record->data); + element.entity_type = pdr->entity_type; + element.entity_instance_num = + pdr->entity_instance; + element.entity_container_id = pdr->container_id; + return element; + } + default: + break; + } + } + record = record->next; + } + return element; +} + +LIBPLDM_ABI_STABLE +void pldm_change_container_id_of_effecter(const pldm_pdr *repo, + uint16_t effecterId, + uint16_t containerId) +{ + assert(repo != NULL); + + pldm_pdr_record *record = repo->first; + + while (record != NULL) { + struct pldm_pdr_hdr *hdr = (struct pldm_pdr_hdr *)record->data; + if (hdr->type == PLDM_NUMERIC_EFFECTER_PDR) { + struct pldm_numeric_effecter_value_pdr *pdr = + (struct pldm_numeric_effecter_value_pdr + *)((uint8_t *)record->data); + if (pdr->effecter_id == effecterId) { + pdr->container_id = containerId; + break; + } + } else if (hdr->type == PLDM_STATE_EFFECTER_PDR) { + struct pldm_state_effecter_pdr *pdr = + (struct pldm_state_effecter_pdr + *)((uint8_t *)record->data); + if (pdr->effecter_id == effecterId) { + pdr->container_id = containerId; + break; + } + } + record = record->next; + } +} + +LIBPLDM_ABI_STABLE +void pldm_change_container_id_of_sensor(const pldm_pdr *repo, uint16_t sensorId, + uint16_t containerId) +{ + assert(repo != NULL); + + pldm_pdr_record *record = repo->first; + + while (record != NULL) { + struct pldm_pdr_hdr *hdr = (struct pldm_pdr_hdr *)record->data; + if (hdr->type == PLDM_STATE_SENSOR_PDR) { + struct pldm_state_sensor_pdr *pdr = + (struct pldm_state_sensor_pdr + *)((uint8_t *)record->data); + if (pdr->sensor_id == sensorId) { + pdr->container_id = containerId; + break; + } + } + record = record->next; + } +} + +LIBPLDM_ABI_STABLE +void pldm_change_instance_number_of_effecter(const pldm_pdr *repo, + uint16_t effecterId, + uint16_t instanceNumber) +{ + assert(repo != NULL); + + pldm_pdr_record *record = repo->first; + + while (record != NULL) { + struct pldm_pdr_hdr *hdr = (struct pldm_pdr_hdr *)record->data; + if (hdr->type == PLDM_STATE_EFFECTER_PDR) { + struct pldm_state_effecter_pdr *pdr = + (struct pldm_state_effecter_pdr + *)((uint8_t *)record->data); + if (pdr->effecter_id == effecterId) { + pdr->entity_instance = instanceNumber; + break; + } + } + record = record->next; + } +} + +LIBPLDM_ABI_STABLE +void pldm_change_instance_number_of_sensor(const pldm_pdr *repo, + uint16_t sensorId, + uint16_t instanceNumber) +{ + assert(repo != NULL); + + pldm_pdr_record *record = repo->first; + + while (record != NULL) { + struct pldm_pdr_hdr *hdr = (struct pldm_pdr_hdr *)record->data; + if (hdr->type == PLDM_STATE_SENSOR_PDR) { + struct pldm_state_sensor_pdr *pdr = + (struct pldm_state_sensor_pdr + *)((uint8_t *)record->data); + if (pdr->sensor_id == sensorId) { + pdr->entity_instance = instanceNumber; + break; + } + } + record = record->next; + } +} + +LIBPLDM_ABI_STABLE +uint16_t pldm_delete_by_effecter_id(pldm_pdr *repo, uint16_t effecter_id, + bool is_remote) +{ + assert(repo != NULL); + + uint32_t delete_handle = 0; + pldm_pdr_record *record = repo->first; + pldm_pdr_record *prev = NULL; + while (record != NULL) { + pldm_pdr_record *next = record->next; + struct pldm_pdr_hdr *hdr = (struct pldm_pdr_hdr *)record->data; + if ((record->is_remote == is_remote) && + hdr->type == PLDM_STATE_EFFECTER_PDR) { + struct pldm_state_effecter_pdr *pdr = + (struct pldm_state_effecter_pdr + *)((uint8_t *)record->data); + if (pdr->effecter_id == effecter_id) { + delete_handle = hdr->record_handle; + if (repo->first == record) { + repo->first = next; + } else { + prev->next = next; + } + if (repo->last == record) { + repo->last = prev; + if (prev != NULL) { + prev->next = NULL; + } + } + --repo->record_count; + repo->size -= record->size; + if (record->data) { + free(record->data); + } + free(record); + break; + } else { + prev = record; + } + } else { + prev = record; + } + record = next; + } + return delete_handle; +} + +LIBPLDM_ABI_STABLE +uint16_t pldm_delete_by_sensor_id(pldm_pdr *repo, uint16_t sensor_id, + bool is_remote) +{ + assert(repo != NULL); + + uint32_t delete_handle = 0; + pldm_pdr_record *record = repo->first; + pldm_pdr_record *prev = NULL; + while (record != NULL) { + pldm_pdr_record *next = record->next; + struct pldm_pdr_hdr *hdr = (struct pldm_pdr_hdr *)record->data; + if ((record->is_remote == is_remote) && + hdr->type == PLDM_STATE_SENSOR_PDR) { + struct pldm_state_sensor_pdr *pdr = + (struct pldm_state_sensor_pdr + *)((uint8_t *)record->data); + if (pdr->sensor_id == sensor_id) { + delete_handle = hdr->record_handle; + if (repo->first == record) { + repo->first = next; + } else { + prev->next = next; + } + if (repo->last == record) { + repo->last = prev; + if (prev != NULL) { + prev->next = NULL; + } + } + --repo->record_count; + repo->size -= record->size; + if (record->data) { + free(record->data); + } + free(record); + break; + } else { + prev = record; + } + } else { + prev = record; + } + record = next; + } + return delete_handle; +} + typedef struct pldm_entity_association_tree { pldm_entity_node *root; uint16_t last_used_container_id; @@ -438,7 +919,8 @@ typedef struct pldm_entity_node { uint8_t association_type; } pldm_entity_node; -static inline uint16_t next_container_id(pldm_entity_association_tree *tree) +LIBPLDM_ABI_STABLE +uint16_t next_container_id(pldm_entity_association_tree *tree) { assert(tree != NULL); assert(tree->last_used_container_id != UINT16_MAX); @@ -449,9 +931,24 @@ static inline uint16_t next_container_id(pldm_entity_association_tree *tree) LIBPLDM_ABI_STABLE pldm_entity pldm_entity_extract(pldm_entity_node *node) { - assert(node != NULL); + if (node != NULL) { + return node->entity; + } + + pldm_entity entity = { 0, 0, 0 }; + return entity; +} + +LIBPLDM_ABI_STABLE +uint16_t pldm_extract_host_container_id(const pldm_entity_node *entity) +{ + uint16_t cid = 0; + + assert(entity != NULL); + + pldm_entity_node_get_remote_container_id(entity, &cid); - return node->entity; + return cid; } LIBPLDM_ABI_TESTING @@ -478,9 +975,12 @@ pldm_entity_association_tree *pldm_entity_association_tree_init(void) return tree; } -static pldm_entity_node *find_insertion_at(pldm_entity_node *start, - uint16_t entity_type) +static pldm_entity_node * +find_insertion_at(pldm_entity_node *start, + uint16_t entity_type) //,uint16_t *instance) //sm00 { + /*printf("\nenter find_insertion_at start->entity.entity_type=%d and + entity_type=%d", start->entity.entity_type,entity_type); */ assert(start != NULL); /* Insert after the the last node that matches the input entity type, or @@ -495,7 +995,16 @@ static pldm_entity_node *find_insertion_at(pldm_entity_node *start, } start = start->next_sibling; } - + /*while (start->next_sibling != NULL) //sm00 + { + uint16_t this_type = start->entity.entity_type; + if (this_type == entity_type) + { + *instance = start->entity.entity_instance_num; + } + start = start->next_sibling; + }*/ + // printf("\nfrom find_insertion_at returning instance=%d",*instance); return start; } @@ -503,12 +1012,14 @@ LIBPLDM_ABI_STABLE pldm_entity_node *pldm_entity_association_tree_add( pldm_entity_association_tree *tree, pldm_entity *entity, uint16_t entity_instance_number, pldm_entity_node *parent, - uint8_t association_type) + uint8_t association_type, bool is_remote, bool is_update_container_id, + uint16_t container_id) { return pldm_entity_association_tree_add_entity(tree, entity, entity_instance_number, parent, association_type, - false, true, 0xFFFF); + is_remote, is_update_container_id, + container_id); } LIBPLDM_ABI_TESTING @@ -522,6 +1033,19 @@ pldm_entity_node *pldm_entity_association_tree_add_entity( return NULL; } + /*printf("\nenter pldm_entity_association_tree_add"); */ + if (parent) { + /* printf("\nenter pldm_entity_association_tree_add with + * parent entity_type=%d, + * entity_instance_num=%d,ntity_container_id=%d", + * parent->entity.entity_type, + * parent->entity.entity_instance_num, + * parent->entity.entity_container_id);*/ + } + assert(tree != NULL); + assert(entity != NULL); + // uint16_t instance = 0; //sm00 + if (entity_instance_number != 0xFFFF && parent != NULL) { pldm_entity node; node.entity_type = entity->entity_type; @@ -560,31 +1084,45 @@ pldm_entity_node *pldm_entity_association_tree_add_entity( } else if (parent != NULL && parent->first_child == NULL) { parent->first_child = node; node->parent = parent->entity; - if (is_remote) { node->remote_container_id = entity->entity_container_id; - } - if (is_update_container_id) { - if (container_id != 0xFFFF) { - node->entity.entity_container_id = container_id; + if (is_update_container_id) { + if (container_id != 0xFFFF) { + node->entity.entity_container_id = + container_id; + } else { + node->entity.entity_container_id = + next_container_id(tree); + } } else { node->entity.entity_container_id = - next_container_id(tree); + entity->entity_container_id; } } else { - node->entity.entity_container_id = - entity->entity_container_id; - } - - if (!is_remote) { + if (is_update_container_id) { + if (container_id != 0xFFFF) { + node->entity.entity_container_id = + container_id; + } else { + node->entity.entity_container_id = + next_container_id(tree); + } + } else { + node->entity.entity_container_id = + entity->entity_container_id; + } node->remote_container_id = node->entity.entity_container_id; } } else { + /* printf("\ncreating the node now\n"); */ pldm_entity_node *start = parent == NULL ? tree->root : parent->first_child; pldm_entity_node *prev = - find_insertion_at(start, entity->entity_type); + find_insertion_at(start, entity->entity_type); // sm00 + // find_insertion_at(start, entity->entity_type,&instance); + // printf("\nreturned from find_insertion_at with + // instance=%d",instance); if (!prev) { free(node); return NULL; @@ -600,6 +1138,11 @@ pldm_entity_node *pldm_entity_association_tree_add_entity( entity_instance_number : prev->entity.entity_instance_num + 1; } + /*else //sm00 + { + printf("\ncm node add \n"); + node->entity.entity_instance_num = instance + 1; + }*/ prev->next_sibling = node; node->parent = prev->parent; node->next_sibling = next; @@ -611,6 +1154,8 @@ pldm_entity_node *pldm_entity_association_tree_add_entity( if (is_update_container_id) { entity->entity_container_id = node->entity.entity_container_id; } + + /*printf("\nexit pldm_entity_association_tree_add"); */ return node; } @@ -679,6 +1224,52 @@ void pldm_entity_association_tree_destroy(pldm_entity_association_tree *tree) free(tree); } +LIBPLDM_ABI_STABLE +void pldm_entity_association_tree_delete_node( + pldm_entity_association_tree *tree, pldm_entity entity) +{ + // printf("\nenter pldm_entity_association_tree_delete_node"); + pldm_entity_node *node = NULL; + pldm_find_entity_ref_in_tree(tree, entity, &node); + assert(node != NULL); + // sm00 + /* printf( + "\nfound node to delete " + "node->entity.entity_type=%d,node->entity.entity_instance_num=%d", + node->entity.entity_type, + node->entity.entity_instance_num);*/ + pldm_entity_node *parent = NULL; + pldm_find_entity_ref_in_tree(tree, node->parent, &parent); + // printf("\nfound parent"); + assert(parent != NULL); + pldm_entity_node *start = parent->first_child; + pldm_entity_node *prev = parent->first_child; + while (start != NULL) { + pldm_entity current_entity; + current_entity.entity_type = start->entity.entity_type; + current_entity.entity_instance_num = + start->entity.entity_instance_num; + current_entity.entity_container_id = + start->entity.entity_container_id; + if (current_entity.entity_type == entity.entity_type && + current_entity.entity_instance_num == + entity.entity_instance_num && + current_entity.entity_container_id == + entity.entity_container_id) { + if (start == parent->first_child) { + parent->first_child = start->next_sibling; + } else { + prev->next_sibling = start->next_sibling; + } + start->next_sibling = NULL; + break; + } + prev = start; + start = start->next_sibling; + } + entity_association_tree_destroy(node); +} + LIBPLDM_ABI_STABLE bool pldm_entity_is_node_parent(pldm_entity_node *node) { @@ -887,13 +1478,14 @@ void pldm_entity_association_pdr_add(pldm_entity_association_tree *tree, LIBPLDM_ABI_STABLE void pldm_entity_association_pdr_add_from_node( pldm_entity_node *node, pldm_pdr *repo, pldm_entity **entities, - size_t num_entities, bool is_remote, uint16_t terminus_handle) + size_t num_entities, bool is_remote, uint16_t terminus_handle, + uint32_t record_handle) { assert(repo != NULL); pldm_entity_association_pdr_add_from_node_with_record_handle( node, repo, entities, num_entities, is_remote, terminus_handle, - 0); + record_handle); } LIBPLDM_ABI_TESTING @@ -912,6 +1504,438 @@ int pldm_entity_association_pdr_add_from_node_with_record_handle( return 0; } +LIBPLDM_ABI_STABLE +uint32_t find_record_handle_by_contained_entity(pldm_pdr *repo, + pldm_entity entity, + bool is_remote) +{ + /*printf("\nenter find_record_handle_by_contained_entity with " + "entity_type=%d, entity_instance_num=%d, " + "entity_container_id=%d,is_remote=%d", + entity.entity_type, entity.entity_instance_num, + entity.entity_container_id, is_remote);*/ + uint32_t record_handle = 0; + bool found = false; + assert(repo != NULL); + pldm_pdr_record *record = repo->first; + while (record != NULL && !found) { + pldm_pdr_record *next = record->next; + struct pldm_pdr_hdr *hdr = (struct pldm_pdr_hdr *)record->data; + if ((record->is_remote == is_remote) && + hdr->type == PLDM_PDR_ENTITY_ASSOCIATION) { + /* printf("\ngot one PLDM_PDR_ENTITY_ASSOCIATION " + "record_handle=%d", + record->record_handle);*/ + struct pldm_pdr_entity_association *pdr = + (struct pldm_pdr_entity_association + *)((uint8_t *)record->data + + sizeof(struct pldm_pdr_hdr)); + /* printf("\npdr->container_id=%d,pdr->num_children=%d", + pdr->container_id, pdr->num_children);*/ + struct pldm_entity *child = + (struct pldm_entity *)(&pdr->children[0]); + for (int i = 0; i < pdr->num_children; ++i) { + if (child->entity_type == entity.entity_type && + child->entity_instance_num == + entity.entity_instance_num && + child->entity_container_id == + entity.entity_container_id) { + /* printf("\nFOUND + record_handle=%d", + record->record_handle);*/ + found = true; + record_handle = record->record_handle; + break; + } + child++; + } + } // end if PLDM_PDR_ENTITY_ASSOCIATION + // record = record->next; + record = next; + } // end while + return record_handle; +} + +LIBPLDM_ABI_STABLE +uint32_t pldm_entity_association_pdr_remove_contained_entity( + pldm_pdr *repo, pldm_entity entity, uint8_t *event_data_op, + bool is_remote) +{ + assert(repo != NULL); + uint32_t updated_hdl = 0; + bool removed = false; + *event_data_op = PLDM_RECORDS_MODIFIED; + updated_hdl = + find_record_handle_by_contained_entity(repo, entity, is_remote); + if (!updated_hdl || !entity.entity_type) { + *event_data_op = PLDM_INVALID_OP; + return updated_hdl; + } + + /* printf("\npldm_entity_association_pdr_remove_contained_entity + found " "the record handle to delete %d", updated_hdl);*/ + + pldm_pdr_record *record = repo->first; + pldm_pdr_record *prev = repo->first; + pldm_pdr_record *new_record = malloc(sizeof(pldm_pdr_record)); + new_record->data = NULL; // sm00 + // new_record->data = malloc(record->size - sizeof(pldm_entity)); //sm00 + // new_record->next = NULL; //sm00 + // uint8_t *new_data = new_record->data; //sm00 + while (record != NULL) { + pldm_pdr_record *next = record->next; + struct pldm_pdr_hdr *hdr = (struct pldm_pdr_hdr *)record->data; + if (record->record_handle == + updated_hdl) /*(record->is_remote == is_remote) &&*/ + /*hdr->type == PLDM_PDR_ENTITY_ASSOCIATION)*/ { + new_record->data = malloc(record->size - + sizeof(pldm_entity)); // sm00 + new_record->next = NULL; // sm00 + new_record->record_handle = + htole32(record->record_handle); + new_record->size = htole32(record->size - + sizeof(pldm_entity)); // sm00 + new_record->is_remote = record->is_remote; + uint8_t *new_start = new_record->data; // sm00 new_data; + struct pldm_pdr_hdr *new_hdr = + (struct pldm_pdr_hdr *) + new_record->data; // sm00 new_data; + new_hdr->version = hdr->version; + new_hdr->record_handle = htole32(hdr->record_handle); + new_hdr->type = PLDM_PDR_ENTITY_ASSOCIATION; + new_hdr->record_change_num = + htole16(hdr->record_change_num); + /*new_hdr->length = + htole16(record->size - sizeof(struct pldm_pdr_hdr) - + sizeof(pldm_entity));*/ + new_hdr->length = htole16(hdr->length - + sizeof(pldm_entity)); // sm00 + new_start += sizeof(struct pldm_pdr_hdr); + struct pldm_pdr_entity_association *new_pdr = + (struct pldm_pdr_entity_association *)new_start; + + struct pldm_pdr_entity_association *pdr = + (struct pldm_pdr_entity_association + *)((uint8_t *)record->data + + sizeof(struct pldm_pdr_hdr)); + struct pldm_entity *child = + (struct pldm_entity *)(&pdr->children[0]); + + new_pdr->container_id = pdr->container_id; + new_pdr->association_type = pdr->association_type; + new_pdr->container.entity_type = + pdr->container.entity_type; + new_pdr->container.entity_instance_num = + pdr->container.entity_instance_num; + new_pdr->container.entity_container_id = + pdr->container.entity_container_id; + new_pdr->num_children = + pdr->num_children - + 1; // if this becomes 0 then just delete. no new + // entity assoc pdr is needed PENDING. can test + // once pcie cards are placed under slots + struct pldm_entity *new_child = + (struct pldm_entity *)(&new_pdr->children[0]); + + for (int i = 0; i < pdr->num_children; ++i) { + if (child->entity_type == entity.entity_type && + child->entity_instance_num == + entity.entity_instance_num && + child->entity_container_id == + entity.entity_container_id) { + removed = true; + // updated_hdl = + // hdr->record_handle; sm00 not needed + // as we are getting earlier + // skip this child.do not add in the + // new pdr + } else { + new_child->entity_type = + child->entity_type; + new_child->entity_instance_num = + child->entity_instance_num; + new_child->entity_container_id = + child->entity_container_id; + new_child++; + } + + ++child; + } + if (!new_pdr->num_children) // record will be deleted and + // new_record will not be added + { + removed = false; + *event_data_op = PLDM_RECORDS_DELETED; + if (repo->first == record) { + repo->first = record->next; + record->next = NULL; + } else if (repo->last == record) { + repo->last = prev; + prev->next = NULL; + } else { + prev->next = record->next; + record->next = NULL; + } + repo->size -= record->size; + repo->record_count--; + if (record->data) { + free(record->data); + } + free(record); + break; + } else if (removed) { + if (repo->first == record) { + repo->first = new_record; + new_record->next = record->next; + } else { + prev->next = new_record; + new_record->next = record->next; + record->next = NULL; // sm00 + } + if (repo->last == record) { + repo->last = new_record; + new_record->next = NULL; // sm00 + } + repo->size -= record->size; + repo->size += new_record->size; + + if (record->data) { + free(record->data); + } + free(record); + break; + } + } + prev = record; + record = next; + } + if (!removed) { + if (new_record->data) // sm00 + { + free(new_record->data); // sm00 + } + if (new_record) { + free(new_record); + } + // free(new_data); sm00 + } + return updated_hdl; +} + +LIBPLDM_ABI_STABLE +uint32_t pldm_entity_association_pdr_add_contained_entity( + pldm_pdr *repo, pldm_entity entity, pldm_entity parent, + uint8_t *event_data_op, bool is_remote, uint32_t bmc_record_handle) +{ + /*printf("\nenter pldm_entity_association_pdr_add_contained_entity + entity type=%d entity ins=%d container id=%d", entity.entity_type, + entity.entity_instance_num, entity.entity_container_id); printf("\n and + parent entity type=%d entity ins=%d container id=%d",parent.entity_type, + parent.entity_instance_num, parent.entity_container_id);*/ + // testing pending with pcie slot-card. can test once cards are placed + // under slots in DBus. usecase: will not find the PDR and need to + // create a new entity assoc PDR since the number of child is always 1 + // if the PDR is not found then search for the PDR having parent as a + // child if found then parent is valid and create a new enitity assoc + // PDR with parent-entity + uint32_t updated_hdl = 0; + bool added = false; + *event_data_op = PLDM_RECORDS_MODIFIED; + pldm_pdr_record *record = repo->first; + pldm_pdr_record *prev = repo->first; + pldm_pdr_record *new_record = malloc(sizeof(pldm_pdr_record)); + new_record->data = NULL; // sm00 + // new_record->data = malloc(record->size + sizeof(pldm_entity)); //sm00 + // new_record->next = NULL; //sm00 + uint8_t *new_data = NULL; // new_record->data; //sm00 + bool found = false; + while (record != NULL) { + pldm_pdr_record *next = record->next; + struct pldm_pdr_hdr *hdr = (struct pldm_pdr_hdr *)record->data; + if ((record->is_remote == is_remote) && + hdr->type == PLDM_PDR_ENTITY_ASSOCIATION) { + struct pldm_pdr_entity_association *pdr = + (struct pldm_pdr_entity_association + *)((uint8_t *)record->data + + sizeof(struct pldm_pdr_hdr)); + if (pdr->container.entity_type == parent.entity_type && + pdr->container.entity_instance_num == + parent.entity_instance_num && + pdr->container.entity_container_id == + parent.entity_container_id) { + found = true; + new_record->data = + malloc(record->size + + sizeof(pldm_entity)); // sm00 + new_record->next = NULL; // sm00 + new_data = new_record->data; // sm00 + updated_hdl = record->record_handle; + new_record->record_handle = + htole32(record->record_handle); + new_record->size = htole32(record->size + + sizeof(pldm_entity)); + new_record->is_remote = record->is_remote; + uint8_t *new_start = new_data; + struct pldm_pdr_hdr *new_hdr = + (struct pldm_pdr_hdr *)new_data; + new_hdr->version = hdr->version; + new_hdr->record_handle = + htole32(hdr->record_handle); + new_hdr->type = PLDM_PDR_ENTITY_ASSOCIATION; + new_hdr->record_change_num = + htole16(hdr->record_change_num); + /* new_hdr->length = htole16( + record->size - sizeof(struct + pldm_pdr_hdr) + sizeof(pldm_entity)); */ + new_hdr->length = + htole16(hdr->length + + sizeof(pldm_entity)); // sm00 + new_start += sizeof(struct pldm_pdr_hdr); + struct pldm_pdr_entity_association *new_pdr = + (struct pldm_pdr_entity_association *) + new_start; + + struct pldm_entity *child = + (struct pldm_entity + *)(&pdr->children[0]); + + new_pdr->container_id = pdr->container_id; + new_pdr->association_type = + pdr->association_type; + new_pdr->container.entity_type = + pdr->container.entity_type; + new_pdr->container.entity_instance_num = + pdr->container.entity_instance_num; + new_pdr->container.entity_container_id = + pdr->container.entity_container_id; + new_pdr->num_children = pdr->num_children + 1; + struct pldm_entity *new_child = + (struct pldm_entity + *)(&new_pdr->children[0]); + for (int i = 0; i < pdr->num_children; ++i) { + new_child->entity_type = + child->entity_type; + new_child->entity_instance_num = + child->entity_instance_num; + new_child->entity_container_id = + child->entity_container_id; + new_child++; + child++; + } + new_child->entity_type = entity.entity_type; + new_child->entity_instance_num = + entity.entity_instance_num; + new_child->entity_container_id = + entity.entity_container_id; + + added = true; + if (repo->first == record) { + repo->first = new_record; + new_record->next = record->next; + } else { + prev->next = new_record; + new_record->next = record->next; + } + if (repo->last == record) { + repo->last = new_record; + } + repo->size -= record->size; + repo->size += new_record->size; + + if (record->data) { + free(record->data); + } + free(record); + break; + } + } + + prev = record; + record = next; + } + if (!found && !is_remote) // need to create a new entity assoc pdr + { + // printf("\ncreating a new entity assoc pdr for slot \n"); + uint8_t num_children = 1; + added = false; + *event_data_op = PLDM_RECORDS_ADDED; + prev = repo->first; + pldm_pdr_record *curr = repo->first; + while (curr != NULL) { + if (curr->record_handle == bmc_record_handle) { + // printf("\nfound the place \n"); + added = true; + break; + } + prev = curr; + curr = curr->next; + } + + if (added) { + uint16_t new_pdr_size = + sizeof(struct pldm_pdr_hdr) + sizeof(uint16_t) + + sizeof(uint8_t) + sizeof(pldm_entity) + + sizeof(uint8_t) + + num_children * sizeof(pldm_entity); + new_record->data = malloc(new_pdr_size); + new_record->record_handle = bmc_record_handle + 1; + new_record->size = new_pdr_size; + new_record->is_remote = false; + new_record->next = curr->next; + curr->next = new_record; + if (repo->last == prev) { + repo->last = new_record; + } + repo->size += new_record->size; + ++repo->record_count; + + updated_hdl = new_record->record_handle; + + struct pldm_pdr_hdr *new_hdr = + (struct pldm_pdr_hdr *)new_record->data; + new_hdr->version = 1; + new_hdr->record_handle = new_record->record_handle; + new_hdr->type = PLDM_PDR_ENTITY_ASSOCIATION; + new_hdr->record_change_num = 0; + new_hdr->length = htole16(new_pdr_size - + sizeof(struct pldm_pdr_hdr)); + + struct pldm_pdr_entity_association *new_pdr = + (struct pldm_pdr_entity_association + *)((uint8_t *)new_record->data + + sizeof(struct pldm_pdr_hdr)); + new_pdr->container.entity_type = parent.entity_type; + new_pdr->container.entity_instance_num = + parent.entity_instance_num; + new_pdr->container.entity_container_id = + parent.entity_container_id; + new_pdr->container_id = entity.entity_container_id; + new_pdr->association_type = + PLDM_ENTITY_ASSOCIAION_PHYSICAL; + new_pdr->num_children = 1; + struct pldm_entity *new_child = + (struct pldm_entity *)(&new_pdr->children[0]); + new_child->entity_type = entity.entity_type; + new_child->entity_instance_num = + entity.entity_instance_num; + new_child->entity_container_id = + entity.entity_container_id; + } + } + if (!added) { + if (new_record->data) // sm00 + { + free(new_record->data); // sm00 + } + if (new_record) // sm00 + { + free(new_record); // sm00 + } + } + // printf("\nreturning updated_hdl=%d", updated_hdl); + return updated_hdl; +} + LIBPLDM_ABI_STABLE void find_entity_ref_in_tree(pldm_entity_node *tree_node, pldm_entity entity, pldm_entity_node **node) @@ -952,8 +1976,6 @@ void pldm_pdr_remove_pdrs_by_terminus_handle(pldm_pdr *repo, uint16_t terminus_handle) { assert(repo != NULL); - bool removed = false; - pldm_pdr_record *record = repo->first; pldm_pdr_record *prev = NULL; while (record != NULL) { @@ -973,27 +1995,11 @@ void pldm_pdr_remove_pdrs_by_terminus_handle(pldm_pdr *repo, --repo->record_count; repo->size -= record->size; free(record); - removed = true; } else { prev = record; } record = next; } - - if (removed == true) { - record = repo->first; - uint32_t record_handle = 0; - while (record != NULL) { - record->record_handle = ++record_handle; - if (record->data != NULL) { - struct pldm_pdr_hdr *hdr = - (struct pldm_pdr_hdr *)(record->data); - hdr->record_handle = - htole32(record->record_handle); - } - record = record->next; - } - } } LIBPLDM_ABI_STABLE @@ -1113,31 +2119,45 @@ pldm_entity_association_tree_find_if_remote(pldm_entity_association_tree *tree, LIBPLDM_ABI_STABLE void entity_association_tree_find(pldm_entity_node *node, pldm_entity *entity, - pldm_entity_node **out) + pldm_entity_node **out, bool is_remote) { if (node == NULL) { return; } + if (is_remote) { + if (node->entity.entity_type == entity->entity_type && + node->entity.entity_instance_num == + entity->entity_instance_num && + node->remote_container_id == entity->entity_container_id) { + entity->entity_container_id = + node->entity.entity_container_id; - if (node->entity.entity_type == entity->entity_type && - node->entity.entity_instance_num == entity->entity_instance_num) { - entity->entity_container_id = node->entity.entity_container_id; - *out = node; - return; + *out = node; + return; + } + } else { + if (node->entity.entity_type == entity->entity_type && + node->entity.entity_instance_num == + entity->entity_instance_num) { + entity->entity_container_id = + node->entity.entity_container_id; + *out = node; + return; + } } - entity_association_tree_find(node->next_sibling, entity, out); - entity_association_tree_find(node->first_child, entity, out); + entity_association_tree_find(node->next_sibling, entity, out, is_remote); + entity_association_tree_find(node->first_child, entity, out, is_remote); } LIBPLDM_ABI_STABLE pldm_entity_node * pldm_entity_association_tree_find(pldm_entity_association_tree *tree, - pldm_entity *entity) + pldm_entity *entity, bool is_remote) { assert(tree != NULL); pldm_entity_node *node = NULL; - entity_association_tree_find(tree->root, entity, &node); + entity_association_tree_find(tree->root, entity, &node, is_remote); return node; } @@ -1229,3 +2249,21 @@ void pldm_entity_association_pdr_extract(const uint8_t *pdr, uint16_t pdr_len, ++i; } } + +LIBPLDM_ABI_STABLE +pldm_entity_node *init_pldm_entity_node(pldm_entity entity, pldm_entity parent, + uint16_t remote_container_id, + pldm_entity_node *first_child, + pldm_entity_node *next_sibling, + uint8_t association_type) +{ + pldm_entity_node *node = malloc(sizeof(pldm_entity_node)); + node->entity = entity; + node->parent = parent; + node->remote_container_id = remote_container_id; + node->first_child = first_child; + node->next_sibling = next_sibling; + node->association_type = association_type; + + return node; +} diff --git a/tests/libpldm_pdr_test.cpp b/tests/libpldm_pdr_test.cpp index 48e8dfa53..d21bafd8a 100644 --- a/tests/libpldm_pdr_test.cpp +++ b/tests/libpldm_pdr_test.cpp @@ -269,7 +269,8 @@ TEST(PDRAccess, testGet) EXPECT_NE(hdl, nullptr); EXPECT_EQ(size, sizeof(in)); EXPECT_EQ(nextRecHdl, 0u); - EXPECT_EQ(memcmp(outData, in.data(), sizeof(in)), 0); + EXPECT_EQ(memcmp(outData + 4, in.data() + 1, sizeof(in) - 4), 0); + EXPECT_EQ(reinterpret_cast(outData)[0], hdl->record_handle); outData = nullptr; auto hdl2 = pldm_pdr_find_record(repo, 1, &outData, &size, &nextRecHdl); @@ -277,7 +278,8 @@ TEST(PDRAccess, testGet) EXPECT_NE(hdl, nullptr); EXPECT_EQ(size, sizeof(in)); EXPECT_EQ(nextRecHdl, 0u); - EXPECT_EQ(memcmp(outData, in.data(), sizeof(in)), 0); + EXPECT_EQ(memcmp(outData + 4, in.data() + 1, sizeof(in) - 4), 0); + EXPECT_EQ(reinterpret_cast(outData)[0], hdl2->record_handle); outData = nullptr; hdl = pldm_pdr_find_record(repo, htole32(0xdeaddead), &outData, &size, @@ -299,37 +301,47 @@ TEST(PDRAccess, testGet) EXPECT_EQ(pldm_pdr_get_record_count(repo), 4u); EXPECT_EQ(pldm_pdr_get_repo_size(repo), sizeof(in2) * 4); hdl = pldm_pdr_find_record(repo, 0, &outData, &size, &nextRecHdl); + EXPECT_NE(hdl, nullptr); EXPECT_EQ(size, sizeof(in)); EXPECT_EQ(nextRecHdl, 2u); - EXPECT_EQ(memcmp(outData, in.data(), sizeof(in)), 0); + EXPECT_EQ(memcmp(outData + 4, in.data() + 1, sizeof(in) - 4), 0); + EXPECT_EQ(reinterpret_cast(outData)[0], hdl->record_handle); outData = nullptr; + hdl2 = pldm_pdr_find_record(repo, 1, &outData, &size, &nextRecHdl); EXPECT_EQ(hdl, hdl2); EXPECT_NE(hdl, nullptr); EXPECT_EQ(size, sizeof(in)); EXPECT_EQ(nextRecHdl, 2u); - EXPECT_EQ(memcmp(outData, in.data(), sizeof(in)), 0); + EXPECT_EQ(memcmp(outData + 4, in.data() + 1, sizeof(in) - 4), 0); + EXPECT_EQ(reinterpret_cast(outData)[0], hdl2->record_handle); outData = nullptr; + hdl = pldm_pdr_find_record(repo, 2, &outData, &size, &nextRecHdl); EXPECT_NE(hdl, nullptr); EXPECT_EQ(size, sizeof(in2)); EXPECT_EQ(nextRecHdl, 3u); - EXPECT_EQ(memcmp(outData, in2.data(), sizeof(in2)), 0); + EXPECT_EQ(memcmp(outData + 4, in2.data() + 1, sizeof(in2) - 4), 0); + EXPECT_EQ(reinterpret_cast(outData)[0], hdl->record_handle); outData = nullptr; + hdl = pldm_pdr_find_record(repo, 3, &outData, &size, &nextRecHdl); EXPECT_NE(hdl, nullptr); EXPECT_EQ(pldm_pdr_record_is_remote(hdl), false); EXPECT_EQ(size, sizeof(in2)); EXPECT_EQ(nextRecHdl, 4u); - EXPECT_EQ(memcmp(outData, in2.data(), sizeof(in2)), 0); + EXPECT_EQ(memcmp(outData + 4, in2.data() + 1, sizeof(in2) - 4), 0); + EXPECT_EQ(reinterpret_cast(outData)[0], hdl->record_handle); outData = nullptr; + hdl = pldm_pdr_find_record(repo, 4, &outData, &size, &nextRecHdl); EXPECT_NE(hdl, nullptr); EXPECT_EQ(pldm_pdr_record_is_remote(hdl), true); EXPECT_EQ(size, sizeof(in2)); EXPECT_EQ(nextRecHdl, 0u); - EXPECT_EQ(memcmp(outData, in2.data(), sizeof(in2)), 0); + EXPECT_EQ(memcmp(outData + 4, in2.data() + 1, sizeof(in2) - 4), 0); + EXPECT_EQ(reinterpret_cast(outData)[0], hdl->record_handle); outData = nullptr; pldm_pdr_destroy(repo); @@ -351,7 +363,8 @@ TEST(PDRAccess, testGetNext) EXPECT_NE(hdl, nullptr); EXPECT_EQ(size, sizeof(in)); EXPECT_EQ(nextRecHdl, 0u); - EXPECT_EQ(memcmp(outData, in.data(), sizeof(in)), 0); + EXPECT_EQ(memcmp(outData + 4, in.data() + 1, sizeof(in) - 4), 0); + EXPECT_EQ(reinterpret_cast(outData)[0], hdl->record_handle); outData = nullptr; std::array in2{1000, 3450, 30, 60, 890, @@ -368,19 +381,24 @@ TEST(PDRAccess, testGetNext) EXPECT_NE(hdl, nullptr); EXPECT_EQ(size, sizeof(in2)); EXPECT_EQ(nextRecHdl, 3u); - EXPECT_EQ(memcmp(outData, in2.data(), sizeof(in2)), 0); + EXPECT_EQ(memcmp(outData + 4, in2.data() + 1, sizeof(in2) - 4), 0); + EXPECT_EQ(reinterpret_cast(outData)[0], hdl->record_handle); outData = nullptr; + hdl = pldm_pdr_get_next_record(repo, hdl, &outData, &size, &nextRecHdl); EXPECT_NE(hdl, nullptr); EXPECT_EQ(size, sizeof(in2)); EXPECT_EQ(nextRecHdl, 4u); - EXPECT_EQ(memcmp(outData, in2.data(), sizeof(in2)), 0); + EXPECT_EQ(memcmp(outData + 4, in2.data() + 1, sizeof(in2) - 4), 0); + EXPECT_EQ(reinterpret_cast(outData)[0], hdl->record_handle); outData = nullptr; + hdl = pldm_pdr_get_next_record(repo, hdl, &outData, &size, &nextRecHdl); EXPECT_NE(hdl, nullptr); EXPECT_EQ(size, sizeof(in2)); EXPECT_EQ(nextRecHdl, 0u); - EXPECT_EQ(memcmp(outData, in2.data(), sizeof(in2)), 0); + EXPECT_EQ(memcmp(outData + 4, in2.data() + 1, sizeof(in2) - 4), 0); + EXPECT_EQ(reinterpret_cast(outData)[0], hdl->record_handle); outData = nullptr; pldm_pdr_destroy(repo); @@ -439,11 +457,69 @@ TEST(PDRAccess, testFindByType) pldm_pdr_destroy(repo); } +TEST(PDRAccess, getPLDMEntityfromPDR) +{ + auto repo = pldm_pdr_init(); + + // Test FRU Record set PDR + auto handle = pldm_pdr_add_fru_record_set(repo, 1, 10, 1, 0, 100, 0, false); + auto entity = pldm_get_entity_from_record_handle(repo, handle); + EXPECT_EQ(entity.entity_type, htole16(1)); + EXPECT_EQ(entity.entity_instance_num, htole16(0)); + EXPECT_EQ(entity.entity_container_id, htole16(100)); + + // Test State Effecter PDR + std::array data{212, 1, 0, 0, 1, 11, 0, 0, 19, 0, + 1, 0, 196, 0, 64, 0, 1, 0, 2, 0, + 0, 0, 0, 0, 1, 10, 0, 1, 6}; + handle = pldm_pdr_add(repo, data.data(), data.size(), 0, false, 1); + entity = pldm_get_entity_from_record_handle(repo, handle); + EXPECT_EQ(entity.entity_type, htole16(64)); + EXPECT_EQ(entity.entity_instance_num, htole16(1)); + EXPECT_EQ(entity.entity_container_id, htole16(2)); + + // Test State Sensor PDR + std::array data2{10, 1, 0, 0, 1, 4, 0, 0, 17, + 0, 1, 0, 199, 0, 120, 0, 4, 0, + 5, 0, 0, 0, 1, 10, 0, 1, 6}; + handle = pldm_pdr_add(repo, data2.data(), data2.size(), 0, false, 1); + entity = pldm_get_entity_from_record_handle(repo, handle); + EXPECT_EQ(entity.entity_type, htole16(120)); + EXPECT_EQ(entity.entity_instance_num, htole16(4)); + EXPECT_EQ(entity.entity_container_id, htole16(5)); + + // Test Numeric Effecter PDR + std::array data3{10, 1, 0, 0, 1, 9, 0, 0, 17, 0, 1, 0, 199, 0, + 6, 0, 3, 0, 2, 0, 0, 0, 1, 10, 0, 1, 6}; + handle = pldm_pdr_add(repo, data3.data(), data3.size(), 0, false, 1); + entity = pldm_get_entity_from_record_handle(repo, handle); + EXPECT_EQ(entity.entity_type, htole16(6)); + EXPECT_EQ(entity.entity_instance_num, htole16(3)); + EXPECT_EQ(entity.entity_container_id, htole16(2)); + + // Test Non Supported PDR types + std::array notSupportedtypes{ + 1, 2, 3, 5, 6, 7, 8, 10, 12, 13, 14, 15, 16, 17, 18, 19, 126, 127}; + for (const auto& type : notSupportedtypes) + { + std::array data4{}; + pldm_pdr_hdr* hdr = reinterpret_cast(data4.data()); + hdr->type = type; + auto handle = + pldm_pdr_add(repo, data4.data(), data4.size(), 0, false, 1); + entity = pldm_get_entity_from_record_handle(repo, handle); + EXPECT_EQ(entity.entity_type, htole16(0)); + EXPECT_EQ(entity.entity_instance_num, htole16(0)); + EXPECT_EQ(entity.entity_container_id, htole16(0)); + } + pldm_pdr_destroy(repo); +} + TEST(PDRUpdate, testAddFruRecordSet) { auto repo = pldm_pdr_init(); - auto handle = pldm_pdr_add_fru_record_set(repo, 1, 10, 1, 0, 100, 0); + auto handle = pldm_pdr_add_fru_record_set(repo, 1, 10, 1, 0, 100, 0, false); EXPECT_EQ(handle, 1u); EXPECT_EQ(pldm_pdr_get_record_count(repo), 1u); EXPECT_EQ(pldm_pdr_get_repo_size(repo), @@ -465,11 +541,11 @@ TEST(PDRUpdate, testAddFruRecordSet) EXPECT_EQ(fru->terminus_handle, htole16(1)); EXPECT_EQ(fru->fru_rsi, htole16(10)); EXPECT_EQ(fru->entity_type, htole16(1)); - EXPECT_EQ(fru->entity_instance_num, htole16(0)); + EXPECT_EQ(fru->entity_instance, htole16(0)); EXPECT_EQ(fru->container_id, htole16(100)); outData = nullptr; - handle = pldm_pdr_add_fru_record_set(repo, 2, 11, 2, 1, 101, 0); + handle = pldm_pdr_add_fru_record_set(repo, 2, 11, 2, 1, 101, 0, false); EXPECT_EQ(handle, 2u); EXPECT_EQ(pldm_pdr_get_record_count(repo), 2u); EXPECT_EQ(pldm_pdr_get_repo_size(repo), @@ -488,7 +564,7 @@ TEST(PDRUpdate, testAddFruRecordSet) EXPECT_EQ(fru->terminus_handle, htole16(2)); EXPECT_EQ(fru->fru_rsi, htole16(11)); EXPECT_EQ(fru->entity_type, htole16(2)); - EXPECT_EQ(fru->entity_instance_num, htole16(1)); + EXPECT_EQ(fru->entity_instance, htole16(1)); EXPECT_EQ(fru->container_id, htole16(101)); outData = nullptr; @@ -506,7 +582,7 @@ TEST(PDRUpdate, testAddFruRecordSet) EXPECT_EQ(fru->terminus_handle, htole16(1)); EXPECT_EQ(fru->fru_rsi, htole16(10)); EXPECT_EQ(fru->entity_type, htole16(1)); - EXPECT_EQ(fru->entity_instance_num, htole16(0)); + EXPECT_EQ(fru->entity_instance, htole16(0)); EXPECT_EQ(fru->container_id, htole16(100)); outData = nullptr; @@ -521,28 +597,28 @@ TEST(PDRUpdate, tesFindtFruRecordSet) uint16_t entityType{}; uint16_t entityInstanceNum{}; uint16_t containerId{}; - auto first = pldm_pdr_add_fru_record_set(repo, 1, 1, 1, 0, 100, 1); - auto second = pldm_pdr_add_fru_record_set(repo, 1, 2, 1, 1, 100, 2); - auto third = pldm_pdr_add_fru_record_set(repo, 1, 3, 1, 2, 100, 3); + auto first = pldm_pdr_add_fru_record_set(repo, 1, 1, 1, 0, 100, 1, false); + auto second = pldm_pdr_add_fru_record_set(repo, 1, 2, 1, 1, 100, 2, false); + auto third = pldm_pdr_add_fru_record_set(repo, 1, 3, 1, 2, 100, 3, false); EXPECT_EQ(first, pldm_pdr_get_record_handle( repo, pldm_pdr_fru_record_set_find_by_rsi( repo, 1, &terminusHdl, &entityType, - &entityInstanceNum, &containerId))); + &entityInstanceNum, &containerId, false))); EXPECT_EQ(second, pldm_pdr_get_record_handle( repo, pldm_pdr_fru_record_set_find_by_rsi( repo, 2, &terminusHdl, &entityType, - &entityInstanceNum, &containerId))); + &entityInstanceNum, &containerId, false))); EXPECT_EQ(third, pldm_pdr_get_record_handle( repo, pldm_pdr_fru_record_set_find_by_rsi( repo, 3, &terminusHdl, &entityType, - &entityInstanceNum, &containerId))); + &entityInstanceNum, &containerId, false))); EXPECT_EQ(terminusHdl, 1u); EXPECT_EQ(entityType, 1u); EXPECT_EQ(entityInstanceNum, 2u); EXPECT_EQ(containerId, 100u); EXPECT_EQ(nullptr, pldm_pdr_fru_record_set_find_by_rsi( repo, 4, &terminusHdl, &entityType, - &entityInstanceNum, &containerId)); + &entityInstanceNum, &containerId, false)); pldm_pdr_destroy(repo); } @@ -607,31 +683,40 @@ TEST(EntityAssociationPDR, testBuild) auto tree = pldm_entity_association_tree_init(); auto l1 = pldm_entity_association_tree_add( - tree, &entities[0], 0xFFFF, nullptr, PLDM_ENTITY_ASSOCIAION_PHYSICAL); + tree, &entities[0], 0xFFFF, nullptr, PLDM_ENTITY_ASSOCIAION_PHYSICAL, + false, true, 0xFFFF); EXPECT_NE(l1, nullptr); - auto l2a = pldm_entity_association_tree_add( - tree, &entities[1], 0xFFFF, l1, PLDM_ENTITY_ASSOCIAION_PHYSICAL); + auto l2a = pldm_entity_association_tree_add(tree, &entities[1], 0xFFFF, l1, + PLDM_ENTITY_ASSOCIAION_PHYSICAL, + false, true, 0xFFFF); EXPECT_NE(l2a, nullptr); - auto l2b = pldm_entity_association_tree_add( - tree, &entities[2], 0xFFFF, l1, PLDM_ENTITY_ASSOCIAION_PHYSICAL); + auto l2b = pldm_entity_association_tree_add(tree, &entities[2], 0xFFFF, l1, + PLDM_ENTITY_ASSOCIAION_PHYSICAL, + false, true, 0xFFFF); EXPECT_NE(l2b, nullptr); - auto l2c = pldm_entity_association_tree_add( - tree, &entities[3], 0xFFFF, l1, PLDM_ENTITY_ASSOCIAION_PHYSICAL); + auto l2c = pldm_entity_association_tree_add(tree, &entities[3], 0xFFFF, l1, + PLDM_ENTITY_ASSOCIAION_PHYSICAL, + false, true, 0xFFFF); EXPECT_NE(l2c, nullptr); - auto l3a = pldm_entity_association_tree_add( - tree, &entities[4], 0xFFFF, l2a, PLDM_ENTITY_ASSOCIAION_PHYSICAL); + auto l3a = pldm_entity_association_tree_add(tree, &entities[4], 0xFFFF, l2a, + PLDM_ENTITY_ASSOCIAION_PHYSICAL, + false, true, 0xFFFF); EXPECT_NE(l3a, nullptr); - auto l3b = pldm_entity_association_tree_add( - tree, &entities[5], 0xFFFF, l2a, PLDM_ENTITY_ASSOCIAION_PHYSICAL); + auto l3b = pldm_entity_association_tree_add(tree, &entities[5], 0xFFFF, l2a, + PLDM_ENTITY_ASSOCIAION_PHYSICAL, + false, true, 0xFFFF); EXPECT_NE(l3b, nullptr); - auto l3c = pldm_entity_association_tree_add( - tree, &entities[6], 0xFFFF, l2a, PLDM_ENTITY_ASSOCIAION_PHYSICAL); + auto l3c = pldm_entity_association_tree_add(tree, &entities[6], 0xFFFF, l2a, + PLDM_ENTITY_ASSOCIAION_PHYSICAL, + false, true, 0xFFFF); EXPECT_NE(l3b, nullptr); - auto l4a = pldm_entity_association_tree_add( - tree, &entities[7], 0xFFFF, l3a, PLDM_ENTITY_ASSOCIAION_PHYSICAL); + auto l4a = pldm_entity_association_tree_add(tree, &entities[7], 0xFFFF, l3a, + PLDM_ENTITY_ASSOCIAION_PHYSICAL, + false, true, 0xFFFF); EXPECT_NE(l4a, nullptr); - auto l4b = pldm_entity_association_tree_add( - tree, &entities[8], 0xFFFF, l3b, PLDM_ENTITY_ASSOCIAION_PHYSICAL); + auto l4b = pldm_entity_association_tree_add(tree, &entities[8], 0xFFFF, l3b, + PLDM_ENTITY_ASSOCIAION_PHYSICAL, + false, true, 0xFFFF); EXPECT_NE(l4b, nullptr); EXPECT_EQ(pldm_entity_is_node_parent(l1), true); @@ -840,7 +925,7 @@ TEST(EntityAssociationPDR, findAndAddRemotePDR) entity.entity_type = 135; entity.entity_instance_num = 0; entity.entity_container_id = 2; - auto result1 = pldm_entity_association_tree_find(tree, &entity); + auto result1 = pldm_entity_association_tree_find(tree, &entity, false); EXPECT_EQ(result1, l5a); EXPECT_EQ(entities[5].entity_container_id, 2); auto l6a = pldm_entity_association_tree_add_entity( @@ -850,7 +935,7 @@ TEST(EntityAssociationPDR, findAndAddRemotePDR) entity.entity_type = 135; entity.entity_instance_num = 0; entity.entity_container_id = 3; - auto result2 = pldm_entity_association_tree_find(tree, &entity); + auto result2 = pldm_entity_association_tree_find(tree, &entity, false); EXPECT_NE(result2, l5b); EXPECT_EQ(entities[6].entity_container_id, 3); auto l7a = pldm_entity_association_tree_add_entity( @@ -872,7 +957,8 @@ TEST(EntityAssociationPDR, testSpecialTrees) // A auto tree = pldm_entity_association_tree_init(); auto node = pldm_entity_association_tree_add( - tree, &entities[0], 0xFFFF, nullptr, PLDM_ENTITY_ASSOCIAION_PHYSICAL); + tree, &entities[0], 0xFFFF, nullptr, PLDM_ENTITY_ASSOCIAION_PHYSICAL, + false, true, 0xFFFF); EXPECT_NE(node, nullptr); size_t num{}; pldm_entity* out = nullptr; @@ -887,13 +973,16 @@ TEST(EntityAssociationPDR, testSpecialTrees) // A-A-A tree = pldm_entity_association_tree_init(); node = pldm_entity_association_tree_add(tree, &entities[0], 0xFFFF, nullptr, - PLDM_ENTITY_ASSOCIAION_PHYSICAL); + PLDM_ENTITY_ASSOCIAION_PHYSICAL, + false, true, 0XFFFF); EXPECT_NE(node, nullptr); node = pldm_entity_association_tree_add(tree, &entities[1], 0xFFFF, nullptr, - PLDM_ENTITY_ASSOCIAION_PHYSICAL); + PLDM_ENTITY_ASSOCIAION_PHYSICAL, + false, true, 0xFFFF); EXPECT_NE(node, nullptr); node = pldm_entity_association_tree_add(tree, &entities[2], 0xFFFF, nullptr, - PLDM_ENTITY_ASSOCIAION_PHYSICAL); + PLDM_ENTITY_ASSOCIAION_PHYSICAL, + false, true, 0xFFFF); EXPECT_NE(node, nullptr); pldm_entity_association_tree_visit(tree, &out, &num); EXPECT_EQ(num, 3u); @@ -916,13 +1005,16 @@ TEST(EntityAssociationPDR, testSpecialTrees) // A tree = pldm_entity_association_tree_init(); node = pldm_entity_association_tree_add(tree, &entities[0], 0xFFFF, nullptr, - PLDM_ENTITY_ASSOCIAION_PHYSICAL); + PLDM_ENTITY_ASSOCIAION_PHYSICAL, + false, true, 0xFFFF); EXPECT_NE(node, nullptr); auto node1 = pldm_entity_association_tree_add( - tree, &entities[1], 0xFFFF, node, PLDM_ENTITY_ASSOCIAION_PHYSICAL); + tree, &entities[1], 0xFFFF, node, PLDM_ENTITY_ASSOCIAION_PHYSICAL, + false, true, 0xFFFF); EXPECT_NE(node1, nullptr); auto node2 = pldm_entity_association_tree_add( - tree, &entities[2], 0xFFFF, node1, PLDM_ENTITY_ASSOCIAION_PHYSICAL); + tree, &entities[2], 0xFFFF, node1, PLDM_ENTITY_ASSOCIAION_PHYSICAL, + false, true, 0xFFFF); EXPECT_NE(node2, nullptr); pldm_entity_association_tree_visit(tree, &out, &num); EXPECT_EQ(num, 3u); @@ -943,16 +1035,20 @@ TEST(EntityAssociationPDR, testSpecialTrees) // A-A tree = pldm_entity_association_tree_init(); node = pldm_entity_association_tree_add(tree, &entities[0], 0xFFFF, nullptr, - PLDM_ENTITY_ASSOCIAION_PHYSICAL); + PLDM_ENTITY_ASSOCIAION_PHYSICAL, + false, true, 0xFFFF); EXPECT_NE(node, nullptr); node = pldm_entity_association_tree_add(tree, &entities[0], 0xFFFF, nullptr, - PLDM_ENTITY_ASSOCIAION_PHYSICAL); + PLDM_ENTITY_ASSOCIAION_PHYSICAL, + false, true, 0xFFFF); EXPECT_NE(node, nullptr); node1 = pldm_entity_association_tree_add(tree, &entities[1], 0xFFFF, node, - PLDM_ENTITY_ASSOCIAION_PHYSICAL); + PLDM_ENTITY_ASSOCIAION_PHYSICAL, + false, true, 0xFFFF); EXPECT_NE(node1, nullptr); node2 = pldm_entity_association_tree_add(tree, &entities[2], 0xFFFF, node, - PLDM_ENTITY_ASSOCIAION_PHYSICAL); + PLDM_ENTITY_ASSOCIAION_PHYSICAL, + false, true, 0xFFFF); EXPECT_NE(node2, nullptr); pldm_entity_association_tree_visit(tree, &out, &num); EXPECT_EQ(num, 4u); @@ -1010,43 +1106,55 @@ TEST(EntityAssociationPDR, testPDR) auto tree = pldm_entity_association_tree_init(); auto l1 = pldm_entity_association_tree_add( - tree, &entities[0], 0xFFFF, nullptr, PLDM_ENTITY_ASSOCIAION_PHYSICAL); + tree, &entities[0], 0xFFFF, nullptr, PLDM_ENTITY_ASSOCIAION_PHYSICAL, + false, true, 0xFFFF); EXPECT_NE(l1, nullptr); auto l1a = pldm_entity_association_tree_add( - tree, &entities[1], 0xFFFF, nullptr, PLDM_ENTITY_ASSOCIAION_PHYSICAL); + tree, &entities[1], 0xFFFF, nullptr, PLDM_ENTITY_ASSOCIAION_PHYSICAL, + false, true, 0xFFFF); EXPECT_NE(l1a, nullptr); - auto l2a = pldm_entity_association_tree_add( - tree, &entities[1], 0xFFFF, l1, PLDM_ENTITY_ASSOCIAION_PHYSICAL); + auto l2a = pldm_entity_association_tree_add(tree, &entities[1], 0xFFFF, l1, + PLDM_ENTITY_ASSOCIAION_PHYSICAL, + false, true, 0xFFFF); EXPECT_NE(l2a, nullptr); auto l2b = pldm_entity_association_tree_add(tree, &entities[2], 0xFFFF, l1, - PLDM_ENTITY_ASSOCIAION_LOGICAL); + PLDM_ENTITY_ASSOCIAION_LOGICAL, + false, true, 0xFFFF); EXPECT_NE(l2b, nullptr); - auto l2c = pldm_entity_association_tree_add( - tree, &entities[3], 0xFFFF, l1, PLDM_ENTITY_ASSOCIAION_PHYSICAL); + auto l2c = pldm_entity_association_tree_add(tree, &entities[3], 0xFFFF, l1, + PLDM_ENTITY_ASSOCIAION_PHYSICAL, + false, true, 0xFFFF); EXPECT_NE(l2c, nullptr); auto l2d = pldm_entity_association_tree_add(tree, &entities[4], 0xFFFF, l1, - PLDM_ENTITY_ASSOCIAION_LOGICAL); + PLDM_ENTITY_ASSOCIAION_LOGICAL, + false, true, 0xFFFF); EXPECT_NE(l2d, nullptr); - auto l3a = pldm_entity_association_tree_add( - tree, &entities[5], 0xFFFF, l2a, PLDM_ENTITY_ASSOCIAION_PHYSICAL); + auto l3a = pldm_entity_association_tree_add(tree, &entities[5], 0xFFFF, l2a, + PLDM_ENTITY_ASSOCIAION_PHYSICAL, + false, true, 0xFFFF); EXPECT_NE(l3a, nullptr); - auto l3b = pldm_entity_association_tree_add( - tree, &entities[6], 0xFFFF, l2a, PLDM_ENTITY_ASSOCIAION_PHYSICAL); + auto l3b = pldm_entity_association_tree_add(tree, &entities[6], 0xFFFF, l2a, + PLDM_ENTITY_ASSOCIAION_PHYSICAL, + false, true, 0xFFFF); EXPECT_NE(l3b, nullptr); auto l3c = pldm_entity_association_tree_add(tree, &entities[7], 0xFFFF, l2a, - PLDM_ENTITY_ASSOCIAION_LOGICAL); + PLDM_ENTITY_ASSOCIAION_LOGICAL, + false, true, 0xFFFF); EXPECT_NE(l3c, nullptr); auto l3d = pldm_entity_association_tree_add(tree, &entities[8], 0xFFFF, l2a, - PLDM_ENTITY_ASSOCIAION_LOGICAL); + PLDM_ENTITY_ASSOCIAION_LOGICAL, + false, true, 0xFFFF); EXPECT_NE(l3d, nullptr); - auto l4a = pldm_entity_association_tree_add( - tree, &entities[9], 0xFFFF, l3a, PLDM_ENTITY_ASSOCIAION_PHYSICAL); + auto l4a = pldm_entity_association_tree_add(tree, &entities[9], 0xFFFF, l3a, + PLDM_ENTITY_ASSOCIAION_PHYSICAL, + false, true, 0xFFFF); EXPECT_NE(l4a, nullptr); auto l4b = pldm_entity_association_tree_add( - tree, &entities[10], 0xFFFF, l3b, PLDM_ENTITY_ASSOCIAION_LOGICAL); + tree, &entities[10], 0xFFFF, l3b, PLDM_ENTITY_ASSOCIAION_LOGICAL, false, + true, 0xFFFF); EXPECT_NE(l4b, nullptr); EXPECT_EQ(pldm_entity_get_num_children(l1, PLDM_ENTITY_ASSOCIAION_PHYSICAL), @@ -1302,60 +1410,69 @@ TEST(EntityAssociationPDR, testFind) auto tree = pldm_entity_association_tree_init(); auto l1 = pldm_entity_association_tree_add( - tree, &entities[0], 0xFFFF, nullptr, PLDM_ENTITY_ASSOCIAION_PHYSICAL); + tree, &entities[0], 0xFFFF, nullptr, PLDM_ENTITY_ASSOCIAION_PHYSICAL, + false, true, 0xFFFF); EXPECT_NE(l1, nullptr); - auto l2a = pldm_entity_association_tree_add( - tree, &entities[1], 0xFFFF, l1, PLDM_ENTITY_ASSOCIAION_PHYSICAL); + auto l2a = pldm_entity_association_tree_add(tree, &entities[1], 0xFFFF, l1, + PLDM_ENTITY_ASSOCIAION_PHYSICAL, + false, true, 0xFFFF); EXPECT_NE(l2a, nullptr); - auto l2b = pldm_entity_association_tree_add( - tree, &entities[2], 0xFFFF, l1, PLDM_ENTITY_ASSOCIAION_PHYSICAL); + auto l2b = pldm_entity_association_tree_add(tree, &entities[2], 0xFFFF, l1, + PLDM_ENTITY_ASSOCIAION_PHYSICAL, + false, true, 0xFFFF); EXPECT_NE(l2b, nullptr); - auto l2c = pldm_entity_association_tree_add( - tree, &entities[3], 0xFFFF, l1, PLDM_ENTITY_ASSOCIAION_PHYSICAL); + auto l2c = pldm_entity_association_tree_add(tree, &entities[3], 0xFFFF, l1, + PLDM_ENTITY_ASSOCIAION_PHYSICAL, + false, true, 0xFFFF); EXPECT_NE(l2c, nullptr); - auto l3a = pldm_entity_association_tree_add( - tree, &entities[4], 0xFFFF, l2a, PLDM_ENTITY_ASSOCIAION_PHYSICAL); + auto l3a = pldm_entity_association_tree_add(tree, &entities[4], 0xFFFF, l2a, + PLDM_ENTITY_ASSOCIAION_PHYSICAL, + false, true, 0xFFFF); EXPECT_NE(l3a, nullptr); - auto l3b = pldm_entity_association_tree_add( - tree, &entities[5], 0xFFFF, l2a, PLDM_ENTITY_ASSOCIAION_PHYSICAL); + auto l3b = pldm_entity_association_tree_add(tree, &entities[5], 0xFFFF, l2a, + PLDM_ENTITY_ASSOCIAION_PHYSICAL, + false, true, 0xFFFF); EXPECT_NE(l3b, nullptr); - auto l3c = pldm_entity_association_tree_add( - tree, &entities[6], 0xFFFF, l2a, PLDM_ENTITY_ASSOCIAION_PHYSICAL); + auto l3c = pldm_entity_association_tree_add(tree, &entities[6], 0xFFFF, l2a, + PLDM_ENTITY_ASSOCIAION_PHYSICAL, + false, true, 0xFFFF); EXPECT_NE(l3c, nullptr); - auto l4a = pldm_entity_association_tree_add( - tree, &entities[7], 0xFFFF, l3a, PLDM_ENTITY_ASSOCIAION_PHYSICAL); + auto l4a = pldm_entity_association_tree_add(tree, &entities[7], 0xFFFF, l3a, + PLDM_ENTITY_ASSOCIAION_PHYSICAL, + false, true, 0xFFFF); EXPECT_NE(l4a, nullptr); - auto l4b = pldm_entity_association_tree_add( - tree, &entities[8], 0xFFFF, l3b, PLDM_ENTITY_ASSOCIAION_PHYSICAL); + auto l4b = pldm_entity_association_tree_add(tree, &entities[8], 0xFFFF, l3b, + PLDM_ENTITY_ASSOCIAION_PHYSICAL, + false, true, 0xFFFF); EXPECT_NE(l4b, nullptr); pldm_entity entity{}; entity.entity_type = 1; entity.entity_instance_num = 1; - auto result = pldm_entity_association_tree_find(tree, &entity); + auto result = pldm_entity_association_tree_find(tree, &entity, false); EXPECT_EQ(result, l1); EXPECT_EQ(entity.entity_container_id, 0); entity.entity_type = 2; entity.entity_instance_num = 1; - result = pldm_entity_association_tree_find(tree, &entity); + result = pldm_entity_association_tree_find(tree, &entity, false); EXPECT_EQ(result, l2a); EXPECT_EQ(entity.entity_container_id, 1); entity.entity_type = 2; entity.entity_instance_num = 2; - result = pldm_entity_association_tree_find(tree, &entity); + result = pldm_entity_association_tree_find(tree, &entity, false); EXPECT_EQ(result, l2b); EXPECT_EQ(entity.entity_container_id, 1); entity.entity_type = 3; entity.entity_instance_num = 1; - result = pldm_entity_association_tree_find(tree, &entity); + result = pldm_entity_association_tree_find(tree, &entity, false); EXPECT_EQ(result, l2c); EXPECT_EQ(entity.entity_container_id, 1); entity.entity_type = 7; entity.entity_instance_num = 1; - result = pldm_entity_association_tree_find(tree, &entity); + result = pldm_entity_association_tree_find(tree, &entity, false); EXPECT_EQ(result, l4b); EXPECT_EQ(entity.entity_container_id, 4); @@ -1372,18 +1489,21 @@ TEST(EntityAssociationPDR, testCopyTree) auto orgTree = pldm_entity_association_tree_init(); auto newTree = pldm_entity_association_tree_init(); - auto l1 = - pldm_entity_association_tree_add(orgTree, &entities[0], 0xFFFF, nullptr, - PLDM_ENTITY_ASSOCIAION_PHYSICAL); + auto l1 = pldm_entity_association_tree_add( + orgTree, &entities[0], 0xFFFF, nullptr, PLDM_ENTITY_ASSOCIAION_PHYSICAL, + false, true, 0xFFFF); EXPECT_NE(l1, nullptr); auto l2a = pldm_entity_association_tree_add( - orgTree, &entities[1], 0xFFFF, l1, PLDM_ENTITY_ASSOCIAION_PHYSICAL); + orgTree, &entities[1], 0xFFFF, l1, PLDM_ENTITY_ASSOCIAION_PHYSICAL, + false, true, 0xFFFF); EXPECT_NE(l2a, nullptr); auto l2b = pldm_entity_association_tree_add( - orgTree, &entities[2], 0xFFFF, l1, PLDM_ENTITY_ASSOCIAION_PHYSICAL); + orgTree, &entities[2], 0xFFFF, l1, PLDM_ENTITY_ASSOCIAION_PHYSICAL, + false, true, 0xFFFF); EXPECT_NE(l2b, nullptr); auto l2c = pldm_entity_association_tree_add( - orgTree, &entities[3], 0xFFFF, l1, PLDM_ENTITY_ASSOCIAION_PHYSICAL); + orgTree, &entities[3], 0xFFFF, l1, PLDM_ENTITY_ASSOCIAION_PHYSICAL, + false, true, 0xFFFF); EXPECT_NE(l2c, nullptr); size_t orgNum{}; pldm_entity* orgOut = nullptr; @@ -1480,31 +1600,38 @@ TEST(EntityAssociationPDR, testGetChildren) auto tree = pldm_entity_association_tree_init(); auto l1 = pldm_entity_association_tree_add( - tree, &entities[0], 0xFFFF, nullptr, PLDM_ENTITY_ASSOCIAION_PHYSICAL); + tree, &entities[0], 0xFFFF, nullptr, PLDM_ENTITY_ASSOCIAION_PHYSICAL, + false, true, 0xFFFF); EXPECT_NE(l1, nullptr); - auto l2a = pldm_entity_association_tree_add( - tree, &entities[1], 0xFFFF, l1, PLDM_ENTITY_ASSOCIAION_PHYSICAL); + auto l2a = pldm_entity_association_tree_add(tree, &entities[1], 0xFFFF, l1, + PLDM_ENTITY_ASSOCIAION_PHYSICAL, + false, true, 0xFFFF); EXPECT_NE(l2a, nullptr); - auto l2b = pldm_entity_association_tree_add( - tree, &entities[2], 0xFFFF, l1, PLDM_ENTITY_ASSOCIAION_PHYSICAL); + auto l2b = pldm_entity_association_tree_add(tree, &entities[2], 0xFFFF, l1, + PLDM_ENTITY_ASSOCIAION_PHYSICAL, + false, true, 0xFFFF); EXPECT_NE(l2b, nullptr); - auto l2c = pldm_entity_association_tree_add( - tree, &entities[3], 0xFFFF, l1, PLDM_ENTITY_ASSOCIAION_PHYSICAL); + auto l2c = pldm_entity_association_tree_add(tree, &entities[3], 0xFFFF, l1, + PLDM_ENTITY_ASSOCIAION_PHYSICAL, + false, true, 0xFFFF); EXPECT_NE(l2c, nullptr); pldm_entity et1; et1.entity_type = 2; et1.entity_instance_num = 1; + et1.entity_container_id = 1; EXPECT_EQ(true, pldm_is_current_parent_child(l1, &et1)); pldm_entity et2; et2.entity_type = 2; et2.entity_instance_num = 2; + et2.entity_container_id = 1; EXPECT_EQ(true, pldm_is_current_parent_child(l1, &et2)); pldm_entity et3; et3.entity_type = 2; et3.entity_instance_num = 3; + et3.entity_container_id = 1; EXPECT_EQ(false, pldm_is_current_parent_child(l1, &et3)); pldm_entity_association_tree_destroy(tree); @@ -1521,6 +1648,7 @@ TEST(EntityAssociationPDR, testEntityInstanceNumber) entities[4].entity_type = 2; entities[5].entity_type = 2; entities[6].entity_type = 2; + entities[6].entity_container_id = 1; entities[7].entity_type = 3; entities[8].entity_type = 3; @@ -1533,108 +1661,117 @@ TEST(EntityAssociationPDR, testEntityInstanceNumber) uint16_t containerId{}; auto node = pldm_entity_association_tree_add( - tree, &entities[0], 0xFFFF, nullptr, PLDM_ENTITY_ASSOCIAION_PHYSICAL); + tree, &entities[0], 0xFFFF, nullptr, PLDM_ENTITY_ASSOCIAION_PHYSICAL, + false, true, 0xFFFF); EXPECT_NE(node, nullptr); auto l1 = pldm_entity_association_tree_add(tree, &entities[1], 63, node, - PLDM_ENTITY_ASSOCIAION_PHYSICAL); + PLDM_ENTITY_ASSOCIAION_PHYSICAL, + false, true, 0xFFFF); auto first = pldm_pdr_add_fru_record_set( repo, 1, 1, entities[1].entity_type, entities[1].entity_instance_num, - entities[1].entity_container_id, 1); + entities[1].entity_container_id, 1, false); EXPECT_NE(l1, nullptr); EXPECT_EQ(entities[1].entity_instance_num, 63); EXPECT_EQ(first, pldm_pdr_get_record_handle( repo, pldm_pdr_fru_record_set_find_by_rsi( repo, 1, &terminusHdl, &entityType, - &entityInstanceNum, &containerId))); + &entityInstanceNum, &containerId, false))); EXPECT_EQ(entityType, 2); EXPECT_EQ(entityInstanceNum, 63); auto l2 = pldm_entity_association_tree_add(tree, &entities[2], 37, node, - PLDM_ENTITY_ASSOCIAION_PHYSICAL); + PLDM_ENTITY_ASSOCIAION_PHYSICAL, + false, true, 0xFFFF); auto second = pldm_pdr_add_fru_record_set( repo, 1, 2, entities[2].entity_type, entities[2].entity_instance_num, - entities[2].entity_container_id, 2); + entities[2].entity_container_id, 2, false); EXPECT_NE(l2, nullptr); EXPECT_EQ(entities[2].entity_instance_num, 37); EXPECT_EQ(second, pldm_pdr_get_record_handle( repo, pldm_pdr_fru_record_set_find_by_rsi( repo, 2, &terminusHdl, &entityType, - &entityInstanceNum, &containerId))); + &entityInstanceNum, &containerId, false))); EXPECT_EQ(entityType, 2); EXPECT_EQ(entityInstanceNum, 37); auto l3 = pldm_entity_association_tree_add(tree, &entities[3], 44, node, - PLDM_ENTITY_ASSOCIAION_PHYSICAL); + PLDM_ENTITY_ASSOCIAION_PHYSICAL, + false, true, 0xFFFF); auto third = pldm_pdr_add_fru_record_set( repo, 1, 3, entities[3].entity_type, entities[3].entity_instance_num, - entities[3].entity_container_id, 3); + entities[3].entity_container_id, 3, false); EXPECT_NE(l3, nullptr); EXPECT_EQ(entities[3].entity_instance_num, 44); EXPECT_EQ(third, pldm_pdr_get_record_handle( repo, pldm_pdr_fru_record_set_find_by_rsi( repo, 3, &terminusHdl, &entityType, - &entityInstanceNum, &containerId))); + &entityInstanceNum, &containerId, false))); EXPECT_EQ(entityType, 2); EXPECT_EQ(entityInstanceNum, 44); auto l4 = pldm_entity_association_tree_add(tree, &entities[4], 89, node, - PLDM_ENTITY_ASSOCIAION_PHYSICAL); + PLDM_ENTITY_ASSOCIAION_PHYSICAL, + false, true, 0xFFFF); auto fourth = pldm_pdr_add_fru_record_set( repo, 1, 4, entities[4].entity_type, entities[4].entity_instance_num, - entities[4].entity_container_id, 4); + entities[4].entity_container_id, 4, false); EXPECT_NE(l4, nullptr); EXPECT_EQ(entities[4].entity_instance_num, 89); EXPECT_EQ(fourth, pldm_pdr_get_record_handle( repo, pldm_pdr_fru_record_set_find_by_rsi( repo, 4, &terminusHdl, &entityType, - &entityInstanceNum, &containerId))); + &entityInstanceNum, &containerId, false))); EXPECT_EQ(entityType, 2); EXPECT_EQ(entityInstanceNum, 89); auto l5 = pldm_entity_association_tree_add(tree, &entities[5], 0xFFFF, node, - PLDM_ENTITY_ASSOCIAION_PHYSICAL); + PLDM_ENTITY_ASSOCIAION_PHYSICAL, + false, true, 0xFFFF); auto fifth = pldm_pdr_add_fru_record_set( repo, 1, 5, entities[5].entity_type, entities[5].entity_instance_num, - entities[5].entity_container_id, 5); + entities[5].entity_container_id, 5, false); EXPECT_NE(l5, nullptr); EXPECT_EQ(entities[5].entity_instance_num, 90); EXPECT_EQ(fifth, pldm_pdr_get_record_handle( repo, pldm_pdr_fru_record_set_find_by_rsi( repo, 5, &terminusHdl, &entityType, - &entityInstanceNum, &containerId))); + &entityInstanceNum, &containerId, false))); EXPECT_EQ(entityType, 2); EXPECT_EQ(entityInstanceNum, 90); auto l6 = pldm_entity_association_tree_add(tree, &entities[6], 90, node, - PLDM_ENTITY_ASSOCIAION_PHYSICAL); + PLDM_ENTITY_ASSOCIAION_PHYSICAL, + false, true, 0xFFFF); EXPECT_EQ(l6, nullptr); auto l7 = pldm_entity_association_tree_add(tree, &entities[7], 100, l1, - PLDM_ENTITY_ASSOCIAION_PHYSICAL); + PLDM_ENTITY_ASSOCIAION_PHYSICAL, + false, true, 0xFFFF); auto seventh = pldm_pdr_add_fru_record_set( repo, 1, 7, entities[7].entity_type, entities[7].entity_instance_num, - entities[7].entity_container_id, 7); + entities[7].entity_container_id, 7, false); EXPECT_NE(l7, nullptr); EXPECT_EQ(entities[7].entity_instance_num, 100); EXPECT_EQ(seventh, pldm_pdr_get_record_handle( repo, pldm_pdr_fru_record_set_find_by_rsi( repo, 7, &terminusHdl, &entityType, - &entityInstanceNum, &containerId))); + &entityInstanceNum, &containerId, false))); EXPECT_EQ(entityType, 3); EXPECT_EQ(entityInstanceNum, 100); auto l8 = pldm_entity_association_tree_add(tree, &entities[8], 100, l2, - PLDM_ENTITY_ASSOCIAION_PHYSICAL); + PLDM_ENTITY_ASSOCIAION_PHYSICAL, + false, true, 0xFFFF); auto eighth = pldm_pdr_add_fru_record_set( repo, 1, 8, entities[8].entity_type, entities[8].entity_instance_num, - entities[8].entity_container_id, 8); + entities[8].entity_container_id, 8, false); EXPECT_NE(l8, nullptr); EXPECT_EQ(entities[8].entity_instance_num, 100); EXPECT_EQ(eighth, pldm_pdr_get_record_handle( repo, pldm_pdr_fru_record_set_find_by_rsi( repo, 8, &terminusHdl, &entityType, - &entityInstanceNum, &containerId))); + &entityInstanceNum, &containerId, false))); EXPECT_EQ(entityType, 3); EXPECT_EQ(entityInstanceNum, 100); @@ -1687,3 +1824,98 @@ TEST(EntityAssociationPDR, testFindContainerID) pldm_pdr_destroy(repo); pldm_entity_association_tree_destroy(tree); } + +TEST(EntityAssociationPDR, findAndAddHostPDR) +{ + + // Tree - 1 + // + // 11521(1,0) + // | + // 45 (1,1) + // | + // 64 (1,2) + // | + // ----------------------- + // | | + // 67(0,3) 67(1,3) + // | | + // 135(0,4) 135(0,5) + // | | + // 32903(0,6) 32903(0,7) + + pldm_entity entities[9]{}; + + entities[0].entity_type = 11521; + entities[1].entity_type = 45; + entities[2].entity_type = 64; + entities[3].entity_type = 67; + entities[4].entity_type = 67; + entities[5].entity_type = 135; + entities[5].entity_container_id = 2; + entities[6].entity_type = 135; + entities[6].entity_container_id = 3; + entities[7].entity_type = 32903; + entities[8].entity_type = 32903; + + auto tree = pldm_entity_association_tree_init(); + + auto l1 = pldm_entity_association_tree_add( + tree, &entities[0], 0xFFFF, nullptr, PLDM_ENTITY_ASSOCIAION_LOGICAL, + false, true, 0xFFFF); + EXPECT_NE(l1, nullptr); + auto l2 = pldm_entity_association_tree_add(tree, &entities[1], 0xFFFF, l1, + PLDM_ENTITY_ASSOCIAION_PHYSICAL, + false, true, 0xFFFF); + EXPECT_NE(l2, nullptr); + auto l3 = pldm_entity_association_tree_add(tree, &entities[2], 0xFFFF, l2, + PLDM_ENTITY_ASSOCIAION_PHYSICAL, + false, true, 0xFFFF); + EXPECT_NE(l3, nullptr); + auto l4a = pldm_entity_association_tree_add(tree, &entities[3], 0, l3, + PLDM_ENTITY_ASSOCIAION_PHYSICAL, + false, true, 0xFFFF); + EXPECT_NE(l4a, nullptr); + auto l4b = pldm_entity_association_tree_add(tree, &entities[4], 1, l3, + PLDM_ENTITY_ASSOCIAION_PHYSICAL, + false, true, 0xFFFF); + EXPECT_NE(l4b, nullptr); + auto l5a = pldm_entity_association_tree_add(tree, &entities[5], 0, l4a, + PLDM_ENTITY_ASSOCIAION_PHYSICAL, + true, true, 0xFFFF); + EXPECT_NE(l5a, nullptr); + auto l5b = pldm_entity_association_tree_add(tree, &entities[6], 0, l4b, + PLDM_ENTITY_ASSOCIAION_PHYSICAL, + true, true, 0xFFFF); + EXPECT_NE(l5b, nullptr); + + pldm_entity entity{}; + + entity.entity_type = 135; + entity.entity_instance_num = 0; + entity.entity_container_id = 2; + auto result1 = pldm_entity_association_tree_find(tree, &entity, true); + EXPECT_EQ(result1, l5a); + EXPECT_EQ(entities[5].entity_container_id, 4); + EXPECT_EQ(pldm_extract_host_container_id(l5a), 2); + + auto l6a = pldm_entity_association_tree_add(tree, &entities[7], 0, result1, + PLDM_ENTITY_ASSOCIAION_PHYSICAL, + true, true, 0xFFFF); + EXPECT_NE(l6a, nullptr); + + entity.entity_type = 135; + entity.entity_instance_num = 0; + entity.entity_container_id = 3; + auto result2 = pldm_entity_association_tree_find(tree, &entity, true); + EXPECT_EQ(result2, l5b); + EXPECT_EQ(entities[6].entity_container_id, 5); + EXPECT_EQ(pldm_extract_host_container_id(l5b), 3); + + auto l7a = pldm_entity_association_tree_add(tree, &entities[8], 0, result2, + PLDM_ENTITY_ASSOCIAION_PHYSICAL, + true, true, 0xFFFF); + EXPECT_NE(l7a, nullptr); + + pldm_entity_association_tree_destroy(tree); +} diff --git a/tests/libpldm_utils_test.cpp b/tests/libpldm_utils_test.cpp index 663a531f9..b238187cd 100644 --- a/tests/libpldm_utils_test.cpp +++ b/tests/libpldm_utils_test.cpp @@ -22,32 +22,26 @@ TEST(Crc8, CheckSumTest) TEST(Ver2string, Ver2string) { - ver32_t version{0x61, 0x10, 0xf7, 0xf3}; + ver32_t version{0xf3, 0xf7, 0x10, 0x61}; const char* vstr = "3.7.10a"; char buffer[1024]; auto rc = ver2str(&version, buffer, sizeof(buffer)); EXPECT_EQ(rc, (signed)std::strlen(vstr)); EXPECT_STREQ(vstr, buffer); - version = {0x00, 0xf0, 0xf0, 0xf1}; - vstr = "1.0.0"; - rc = ver2str(&version, buffer, sizeof(buffer)); - EXPECT_EQ(rc, (signed)std::strlen(vstr)); - EXPECT_STREQ(vstr, buffer); - - version = {0x00, 0xf7, 0x01, 0x10}; + version = {0x10, 0x01, 0xf7, 0x00}; vstr = "10.01.7"; rc = ver2str(&version, buffer, sizeof(buffer)); EXPECT_EQ(rc, (signed)std::strlen(vstr)); EXPECT_STREQ(vstr, buffer); - version = {0x00, 0xff, 0xf1, 0xf3}; + version = {0xf3, 0xf1, 0xff, 0x00}; vstr = "3.1"; rc = ver2str(&version, buffer, sizeof(buffer)); EXPECT_EQ(rc, (signed)std::strlen(vstr)); EXPECT_STREQ(vstr, buffer); - version = {0x61, 0xff, 0xf0, 0xf1}; + version = {0xf1, 0xf0, 0xff, 0x61}; vstr = "1.0a"; rc = ver2str(&version, buffer, sizeof(buffer)); EXPECT_EQ(rc, (signed)std::strlen(vstr));