diff options
| author | Thomas Munro <tmunro@postgresql.org> | 2022-11-09 13:05:16 +1300 |
|---|---|---|
| committer | Thomas Munro <tmunro@postgresql.org> | 2022-11-09 13:06:31 +1300 |
| commit | b28ac1d24db44ae763a57688e7a559352002badc (patch) | |
| tree | 670e399144d8747435c2aa2397481d7e074cfdaf /src/include | |
| parent | 6bbd8b73857a337e3aba2f6cdcaca6355b4c2b51 (diff) | |
Provide sigaction() for Windows.
Commit 9abb2bfc left behind code to block signals inside signal
handlers on Windows, because our signal porting layer didn't have
sigaction(). Provide a minimal implementation that is capable of
blocking signals, to get rid of platform differences. See also related
commit c94ae9d8.
Discussion: https://postgr.es/m/CA%2BhUKGKKKfcgx6jzok9AYenp2TNti_tfs8FMoJpL8%2B0Gsy%3D%3D_A%40mail.gmail.com
Diffstat (limited to 'src/include')
| -rw-r--r-- | src/include/libpq/pqsignal.h | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/src/include/libpq/pqsignal.h b/src/include/libpq/pqsignal.h index d17ddb787e7..7890b426a8b 100644 --- a/src/include/libpq/pqsignal.h +++ b/src/include/libpq/pqsignal.h @@ -21,12 +21,26 @@ /* Emulate POSIX sigset_t APIs on Windows */ typedef int sigset_t; +#define SA_RESTART 1 +#define SA_NODEFER 2 + +struct sigaction +{ + void (*sa_handler) (int); + /* sa_sigaction not yet implemented */ + sigset_t sa_mask; + int sa_flags; +}; + extern int pqsigprocmask(int how, const sigset_t *set, sigset_t *oset); +extern int pqsigaction(int signum, const struct sigaction *act, + struct sigaction *oldact); #define SIG_BLOCK 1 #define SIG_UNBLOCK 2 #define SIG_SETMASK 3 #define sigprocmask(how, set, oset) pqsigprocmask((how), (set), (oset)) +#define sigaction(signum, act, oldact) pqsigaction((signum), (act), (oldact)) #define sigemptyset(set) (*(set) = 0) #define sigfillset(set) (*(set) = ~0) #define sigaddset(set, signum) (*(set) |= (sigmask(signum))) |
