20#ifndef POSIX_LINUX_AMD64_SIGNAL_H
21#define POSIX_LINUX_AMD64_SIGNAL_H
22#include "pedigree/kernel/compiler.h"
23#include "pedigree/kernel/processor/state_forward.h"
27#include "PosixSubsystem.h"
29namespace LinuxAmd64Signal {
30enum DeliveryResult { NotApplicable, Delivered, Failed };
35 AsyncEvent(uintptr_t handler,
size_t signal, uint64_t signalMask,
bool deferSignal,
36 uint32_t flags, uintptr_t restorer,
bool useAlternateStack,
bool isDeletable =
false);
47 uint32_t getFlags()
const {
51 uintptr_t getRestorer()
const {
56 AsyncEvent(
const AsyncEvent& other,
bool isDeletable);
62DeliveryResult deliverSynchronous(
Thread* thread,
int signal,
65 uintptr_t faultAddress, uintptr_t errorCode);
67void sigreturn(SyscallState& state);
virtual bool isDeletable()
SignalEvent * cloneForDisposition() override
Event * cloneForDelivery() override
Event::UserReturnDelivery deliverAtUserReturn(InterruptState &state) override
bool requiresExactUserReturnState() const override