AuroraRuntime/Source/Exit/Exit.Unix.cpp
J Reece Wilson d81d4564e9 [+] Initial Linux exit signal handler
[*] Linux Semaphore bug (apparently I can't write loops)
[*] Linux sleep bug
2022-04-07 05:35:17 +01:00

50 lines
1.1 KiB
C++

/***
Copyright (C) 2022 J Reece Wilson (a/k/a "Reece"). All rights reserved.
File: Exit.Unix.cpp
Date: 2022-4-7
Author: Reece
***/
#include <Source/RuntimeInternal.hpp>
#include "Exit.hpp"
#include "Exit.Unix.hpp"
#include <Source/Grug/Grug.hpp>
namespace Aurora::Exit
{
static void SendExitSignal(Grug::Arrow *)
{
PostLevel(AuThreads::GetThread(), Exit::ETriggerLevel::eSigTerminate);
}
static void HandleSigTerminate(int sig)
{
Grug::Arrow arrow;
Grug::HurlArrow(&arrow, SendExitSignal, {});
Grug::ArrowWait(&arrow);
}
void InitUnix()
{
struct sigaction action =
{
.sa_handler = HandleSigTerminate,
.sa_flags = SA_ONSTACK
};
sigemptyset(&action.sa_mask);
sigaction(SIGINT, &action, nullptr);
}
void DeinitUnix()
{
struct sigaction action =
{
.sa_handler = SIG_DFL,
.sa_flags = SA_ONSTACK
};
sigemptyset(&action.sa_mask);
sigaction(SIGINT, &action, nullptr);
}
}