blob: 1b7cd9f4e6dd76d24a70fdc376a7ce5be69c8a9f [file] [log] [blame]
Shantappa Teekappanavar1ac61622021-06-22 19:07:29 -05001#include <unistd.h>
2
Shantappa Teekappanavarb64983f2022-02-01 09:28:10 -06003#include <phosphor-logging/log.hpp>
Shantappa Teekappanavara1ea5e52021-08-24 16:30:30 -05004#include <watchdog_common.hpp>
Shantappa Teekappanavar1ac61622021-06-22 19:07:29 -05005#include <watchdog_dbus.hpp>
6#include <watchdog_handler.hpp>
7#include <watchdog_logging.hpp>
8
9namespace watchdog
10{
11namespace dump
12{
13
14/**
15 * @brief Log an event handled by the dump handler
16 *
17 * @param additional - Additional PEL data
18 * @param timeout - timeout interval in seconds
19 */
20void event(std::map<std::string, std::string>& additional,
21 const uint32_t timeout)
22{
23
24 std::string eventName = "org.open_power.Host.Boot.Error.WatchdogTimeout";
25
26 // CreatePELWithFFDCFiles requires a vector of FFDCTuple.
27 auto emptyFfdc = std::vector<FFDCTuple>{};
28
29 // Create PEL with additional data.
30 auto pelId = createPel(eventName, additional, emptyFfdc);
31
Shantappa Teekappanavar41d507e2021-10-05 12:17:55 -050032 // Collect Hostboot dump if auto reboot is enabled
33 DumpParameters dumpParameters;
34 dumpParameters.logId = pelId;
35 dumpParameters.unitId = 0; // Not used for Hostboot dump
36 dumpParameters.timeout = timeout;
37 dumpParameters.dumpType = DumpType::Hostboot;
38
39 // will not return until dump is complete or timeout
40 requestDump(dumpParameters);
Shantappa Teekappanavar1ac61622021-06-22 19:07:29 -050041}
42
43void eventWatchdogTimeout(const uint32_t timeout)
44{
45 // Additional data to be added to PEL object
46 // Currently we don't have anything to add
47 // Keeping this for now in case if we have to add
48 // any data corresponding to watchdog timeout
49 std::map<std::string, std::string> additionalData;
50 event(additionalData, timeout);
51}
52
53} // namespace dump
54} // namespace watchdog