1 #include <unistd.h>
2 
3 #include <phosphor-logging/log.hpp>
4 #include <watchdog_common.hpp>
5 #include <watchdog_dbus.hpp>
6 #include <watchdog_handler.hpp>
7 #include <watchdog_logging.hpp>
8 
9 namespace watchdog
10 {
11 namespace 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  */
event(std::map<std::string,std::string> & additional,const uint32_t timeout)20 void event(std::map<std::string, std::string>& additional,
21            const uint32_t timeout)
22 {
23     std::string eventName = "org.open_power.Host.Boot.Error.WatchdogTimedOut";
24 
25     // CreatePELWithFFDCFiles requires a vector of FFDCTuple.
26     auto emptyFfdc = std::vector<FFDCTuple>{};
27 
28     // Create PEL with additional data.
29     auto pelId = createPel(eventName, additional, emptyFfdc);
30 
31     // Collect Hostboot dump if auto reboot is enabled
32     DumpParameters dumpParameters;
33     dumpParameters.logId = pelId;
34     dumpParameters.unitId = 0; // Not used for Hostboot dump
35     dumpParameters.timeout = timeout;
36     dumpParameters.dumpType = DumpType::Hostboot;
37 
38     // will not return until dump is complete or timeout
39     requestDump(dumpParameters);
40 }
41 
eventWatchdogTimeout(const uint32_t timeout)42 void eventWatchdogTimeout(const uint32_t timeout)
43 {
44     // Additional data to be added to PEL object
45     // Currently we don't have anything to add
46     // Keeping this for now in case if we have to add
47     // any data corresponding to watchdog timeout
48     std::map<std::string, std::string> additionalData;
49     event(additionalData, timeout);
50 }
51 
52 } // namespace dump
53 } // namespace watchdog
54