Revert "No need for termination handler"

This reverts commit 95f36a3e70.
This commit is contained in:
Uwe Seimet 2023-11-15 18:25:03 +01:00
parent 95f36a3e70
commit 8eca5c7d02
2 changed files with 23 additions and 0 deletions

View File

@ -14,12 +14,15 @@
#include "shared/piscsi_util.h"
#include <spdlog/spdlog.h>
#include <filesystem>
#include <csignal>
#include <cstddef>
#include <cstring>
#include <iostream>
using namespace std;
using namespace filesystem;
using namespace spdlog;
using namespace scsi_defs;
using namespace piscsi_util;
void ScsiExec::CleanUp() const
@ -29,6 +32,15 @@ void ScsiExec::CleanUp() const
}
}
void ScsiExec::TerminationHandler(int)
{
instance->bus->SetRST(true);
instance->CleanUp();
// Process will terminate automatically
}
bool ScsiExec::Banner(span<char*> args) const
{
cout << piscsi_util::Banner("(SCSI Action Execution Tool)");
@ -50,6 +62,16 @@ bool ScsiExec::Banner(span<char*> args) const
bool ScsiExec::Init(bool)
{
instance = this;
// Signal handler for cleaning up
struct sigaction termination_handler;
termination_handler.sa_handler = TerminationHandler;
sigemptyset(&termination_handler.sa_mask);
termination_handler.sa_flags = 0;
sigaction(SIGINT, &termination_handler, nullptr);
sigaction(SIGTERM, &termination_handler, nullptr);
signal(SIGPIPE, SIG_IGN);
bus = GPIOBUS_Factory::Create(BUS::mode_e::INITIATOR);
if (bus != nullptr) {

View File

@ -40,6 +40,7 @@ private:
void Reset() const;
void CleanUp() const;
static void TerminationHandler(int);
unique_ptr<BUS> bus;