main: Extract a 'source' abstraction

The D-Bus set of sink actions will require polling the D-Bus fd and
processing any inbound messages. To do this, the polling must happen
where we're currently reading from the source file descriptor. In the
same manner as the sink abstraction extract a source abstraction to hide
the details. process() is then implemented in terms of the abstract
source interface.

Signed-off-by: Andrew Jeffery <andrew@aj.id.au>
Change-Id: I629e0d71f30592fa30affac1a920104e8086d8b0
1 file changed
tree: 877fc953e617f8a00d8142e48a9cfb81284e1752
  1. meson/
  2. systemd/
  3. udev/
  4. LICENSE
  5. main.c
  6. meson.build
  7. meson_options.txt
  8. OWNERS
  9. README.md
README.md

BMC Debug Trigger

debug-trigger listens for an external signal that the BMC is in some way unresponsive. When the signal is received it triggers a crash to collect debug data and reboots the system in the hope that it will recover.

Trigger sources

debug-trigger implements a simple protocol over an LPC KCS device as its trigger source.

Debug actions

debug-trigger implements a single action once the trigger event is received, which is to crash the kernel via /proc/sysrq-trigger. For systems with kdump configured this results in collection of system state as context for why the system was externally unresponsive.