1 #include <libpdbg.h> 2 3 #include <analyzer/analyzer_main.hpp> 4 #include <attn/attention.hpp> 5 #include <attn/attn_config.hpp> 6 #include <attn/attn_handler.hpp> 7 #include <attn/attn_main.hpp> 8 #include <buildinfo.hpp> 9 #include <cli.hpp> 10 11 /** 12 * @brief Attention handler application main() 13 * 14 * This is the main interface to the hardware diagnostics application. This 15 * application can be loaded as a daemon for monitoring the attention 16 * gpio or it can be loaded as an application to analyze hardware and 17 * diagnose hardware error conditions. 18 * 19 * Usage: 20 * --analyze: Analyze the hardware 21 * --daemon: Start the attention handler daemon 22 * 23 * @return 0 = success 24 */ 25 int main(int argc, char* argv[]) 26 { 27 int rc = 0; // assume success 28 29 if (argc == 1) 30 { 31 printf("openpower-hw-diags <options>\n"); 32 printf("options:\n"); 33 printf(" --analyze: Analyze the hardware\n"); 34 printf(" --daemon: Start the attn handler daemon\n"); 35 printf("hwdiag: %s, hei: %s\n", BUILDINFO, analyzer::getBuildInfo()); 36 } 37 else 38 { 39 // Pdbg targets should only be initialized once according to 40 // libpdbg documentation. Initializing them here will make sure 41 // they are initialized for the attention handler, invocation of 42 // the analyzer via attention handler and direct invocation of 43 // the analyzer via command line (--analyze). 44 45 pdbg_targets_init(nullptr); // nullptr == use default fdt 46 47 // Either analyze (application mode) or daemon mode 48 if (true == getCliOption(argv, argv + argc, "--analyze")) 49 { 50 rc = analyzer::analyzeHardware(); // analyze hardware 51 } 52 // daemon mode 53 else 54 { 55 if (true == getCliOption(argv, argv + argc, "--daemon")) 56 { 57 attn::Config attnConfig; // default config 58 59 // convert remaining cmd line args to config values 60 parseConfig(argv, argv + argc, &attnConfig); 61 62 attn::attnHandler(&attnConfig); // handle pending attentions 63 64 attn::attnDaemon(&attnConfig); // start daemon 65 } 66 } 67 } 68 69 return rc; 70 } 71