Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Simplify PosixSignalRegistration implementation on Unix #55552

Merged
merged 4 commits into from
Jul 13, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ internal static partial class Sys
internal static extern void DisablePosixSignalHandling(int signal);

[DllImport(Libraries.SystemNative, EntryPoint = "SystemNative_HandleNonCanceledPosixSignal")]
internal static extern bool HandleNonCanceledPosixSignal(int signal, int handlersDisposed);
internal static extern void HandleNonCanceledPosixSignal(int signal);

[DllImport(Libraries.SystemNative, EntryPoint = "SystemNative_GetPlatformSignalNumber")]
[SuppressGCTransition]
Expand Down
10 changes: 2 additions & 8 deletions src/libraries/Native/Unix/System.Native/pal_signal.c
Original file line number Diff line number Diff line change
Expand Up @@ -233,7 +233,7 @@ static void SignalHandler(int sig, siginfo_t* siginfo, void* context)
}
}

int32_t SystemNative_HandleNonCanceledPosixSignal(int32_t signalCode, int32_t handlersDisposed)
void SystemNative_HandleNonCanceledPosixSignal(int32_t signalCode)
{
switch (signalCode)
{
Expand Down Expand Up @@ -276,11 +276,6 @@ int32_t SystemNative_HandleNonCanceledPosixSignal(int32_t signalCode, int32_t ha
// Original handler doesn't do anything.
break;
}
if (handlersDisposed && g_hasPosixSignalRegistrations[signalCode - 1])
{
// New handlers got registered.
return 0;
}
// Restore and invoke the original handler.
pthread_mutex_lock(&lock);
{
Expand All @@ -293,7 +288,6 @@ int32_t SystemNative_HandleNonCanceledPosixSignal(int32_t signalCode, int32_t ha
kill(getpid(), signalCode);
break;
}
return 1;
}

// Entrypoint for the thread that handles signals where our handling
Expand Down Expand Up @@ -385,7 +379,7 @@ static void* SignalHandlerLoop(void* arg)

if (!usePosixSignalHandler)
{
SystemNative_HandleNonCanceledPosixSignal(signalCode, 0);
SystemNative_HandleNonCanceledPosixSignal(signalCode);
}
}
}
Expand Down
2 changes: 1 addition & 1 deletion src/libraries/Native/Unix/System.Native/pal_signal.h
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,7 @@ PALEXPORT void SystemNative_DisablePosixSignalHandling(int signalCode);
/**
* Performs the default runtime action for a non-canceled PosixSignal.
*/
PALEXPORT int32_t SystemNative_HandleNonCanceledPosixSignal(int32_t signalCode, int32_t handlersDisposed);
PALEXPORT void SystemNative_HandleNonCanceledPosixSignal(int32_t signalCode);

typedef void (*ConsoleSigTtouHandler)(void);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,16 +10,9 @@ public sealed partial class PosixSignalRegistration
private PosixSignalRegistration() { }

[DynamicDependency("#ctor")] // Prevent the private ctor and the IDisposable implementation from getting linked away
public static partial PosixSignalRegistration Create(PosixSignal signal, Action<PosixSignalContext> handler)
{
if (handler is null)
{
throw new ArgumentNullException(nameof(handler));
}

private static PosixSignalRegistration Register(PosixSignal signal, Action<PosixSignalContext> handler) =>
throw new PlatformNotSupportedException();
}

public partial void Dispose() { }
private void Unregister() { }
}
}
Loading