faultlog: Initial framework for Fault Log

Fault Log is a new type of dump. For details please see
https://github.com/openbmc/docs/blob/master/designs/hw-fault-monitor.md

This commit enables creation and deletion of fault log entries.

Tested: Created and deleted fault log entries by calling the
corresponding D-Bus methods via bmcweb (added extra code in bmcweb for
testing this). Also forced a fault log directory creation error by
changing the code to specify a nonexistent directory path "/abc/def/"
instead of FAULTLOG_DUMP_PATH, and forced a fault log file open error
by creating a directory (manually using mkdir) with the same name as
the file that the fault log manager tried to open.

Signed-off-by: Claire Weinan <cweinan@google.com>
Change-Id: I03d4c19a4c131f7224ac895e404c46b1f566617b
7 files changed
tree: 82a86d51f5a90f1a53d2ad1427b8bb9ade12ba0f
  1. dump-extensions/
  2. host-transport-extensions/
  3. subprojects/
  4. test/
  5. tools/
  6. xyz/
  7. .clang-format
  8. .gitignore
  9. bmc_dump_entry.cpp
  10. bmc_dump_entry.hpp
  11. core_manager.cpp
  12. core_manager.hpp
  13. core_manager_main.cpp
  14. dump-extensions.hpp
  15. dump_entry.cpp
  16. dump_entry.hpp
  17. dump_internal.hpp
  18. dump_manager.cpp
  19. dump_manager.hpp
  20. dump_manager_bmc.cpp
  21. dump_manager_bmc.hpp
  22. dump_manager_faultlog.cpp
  23. dump_manager_faultlog.hpp
  24. dump_manager_main.cpp
  25. dump_offload.cpp
  26. dump_offload.hpp
  27. dump_serialize.cpp
  28. dump_serialize.hpp
  29. dump_utils.cpp
  30. dump_utils.hpp
  31. elog_watch.cpp
  32. elog_watch.hpp
  33. errors_map.mako.hpp
  34. errors_map_gen.py
  35. example_errors_watch.yaml
  36. faultlog_dump_entry.cpp
  37. faultlog_dump_entry.hpp
  38. ffdc
  39. host_transport_exts.hpp
  40. LICENSE
  41. MAINTAINERS
  42. meson.build
  43. meson_options.txt
  44. OWNERS
  45. ramoops_manager.cpp
  46. ramoops_manager.hpp
  47. ramoops_manager_main.cpp
  48. README.md
  49. watch.cpp
  50. watch.hpp
README.md

phosphor-debug-collector

Phosphor Debug Collector provides mechanisms to collect various log files and system parameters. Used to troubleshoot problems in OpenBMC based systems.

To Build

To build this package with meson, do the following steps:

    1. meson builddir
    2. ninja -C builddir

To clean the built files run ninja -C builddir clean.

To run unit tests

Tests can be run in the CI docker container, refer local-ci-build

or with an OpenBMC x86 sdk(see below for x86 steps).

meson -Dtests=enabled build
ninja -C build test