1b8335568SBen Tyner #include <attn/attn_common.hpp> 2b797b3e1SBen Tyner #include <attn/attn_logging.hpp> 39ae5ca41SBen Tyner #include <sdbusplus/bus.hpp> 4*bfa831a8Saustinfcui #include <util/trace.hpp> 59ae5ca41SBen Tyner 69ae5ca41SBen Tyner namespace attn 79ae5ca41SBen Tyner { 89ae5ca41SBen Tyner 99ae5ca41SBen Tyner /** 109ae5ca41SBen Tyner * @brief Notify Cronus over dbus interface 119ae5ca41SBen Tyner * 129ae5ca41SBen Tyner * When the special attention is due to a breakpoint condition we will notify 139ae5ca41SBen Tyner * Cronus over the dbus interface. 149ae5ca41SBen Tyner */ bpHandler()15fe15649eSBen Tynerint bpHandler() 169ae5ca41SBen Tyner { 17fe15649eSBen Tyner int rc = RC_SUCCESS; // assume success 18fe15649eSBen Tyner 199ae5ca41SBen Tyner // trace message 20*bfa831a8Saustinfcui trace::inf("Notify Cronus"); 219ae5ca41SBen Tyner 229ae5ca41SBen Tyner // notify Cronus over dbus 23fe15649eSBen Tyner try 24fe15649eSBen Tyner { 259ae5ca41SBen Tyner auto bus = sdbusplus::bus::new_system(); 269ae5ca41SBen Tyner auto msg = bus.new_signal("/", "org.openbmc.cronus", "Brkpt"); 279ae5ca41SBen Tyner 289ae5ca41SBen Tyner // Cronus will figure out proc, core, thread so just send 0,0,0 299ae5ca41SBen Tyner std::array<uint32_t, 3> params{0, 0, 0}; 309ae5ca41SBen Tyner msg.append(params); 319ae5ca41SBen Tyner 329ae5ca41SBen Tyner msg.signal_send(); 33fe15649eSBen Tyner } 34fe15649eSBen Tyner catch (const sdbusplus::exception::SdBusError& e) 35fe15649eSBen Tyner { 36*bfa831a8Saustinfcui trace::inf("bpHandler() exception"); 37*bfa831a8Saustinfcui trace::err(e.what()); 38fe15649eSBen Tyner rc = RC_NOT_HANDLED; 39fe15649eSBen Tyner } 409ae5ca41SBen Tyner 41fe15649eSBen Tyner return rc; 429ae5ca41SBen Tyner } 439ae5ca41SBen Tyner 449ae5ca41SBen Tyner } // namespace attn 45