mirror of
https://github.com/postgres/postgres.git
synced 2026-03-19 09:05:11 -04:00
The usual pattern for handling a signal is that the signal handler sets a flag and calls SetLatch(MyLatch), and CHECK_FOR_INTERRUPTS() or other code that is part of a wait loop calls another function to deal with it. The naming of the functions involved was a bit inconsistent, however. CHECK_FOR_INTERRUPTS() calls ProcessInterrupts() to do the heavy-lifting, but the analogous functions in aux processes were called HandleMainLoopInterrupts(), HandleStartupProcInterrupts(), etc. Similarly, most subroutines of ProcessInterrupts() were called Process*(), but some were called Handle*(). To make things less confusing, rename all the functions that are part of the overall signal/interrupt handling system but are not executed in a signal handler to e.g. ProcessSomething(), rather than HandleSomething(). The "Process" prefix is now consistently used in the non-signal-handler functions, and the "Handle" prefix in functions that are part of signal handlers, except for some completely unrelated functions that clearly have nothing to do with signal or interrupt handling. Reviewed-by: Nathan Bossart <nathandbossart@gmail.com> Discussion: https://www.postgresql.org/message-id/8a384b26-1499-41f6-be33-64b801fb98b8@iki.fi
32 lines
1,009 B
C
32 lines
1,009 B
C
/*-------------------------------------------------------------------------
|
|
*
|
|
* interrupt.h
|
|
* Interrupt handling routines.
|
|
*
|
|
* Responses to interrupts are fairly varied and many types of backends
|
|
* have their own implementations, but we provide a few generic things
|
|
* here to facilitate code reuse.
|
|
*
|
|
* Portions Copyright (c) 1996-2025, PostgreSQL Global Development Group
|
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
*
|
|
* IDENTIFICATION
|
|
* src/include/postmaster/interrupt.h
|
|
*
|
|
*-------------------------------------------------------------------------
|
|
*/
|
|
|
|
#ifndef INTERRUPT_H
|
|
#define INTERRUPT_H
|
|
|
|
#include <signal.h>
|
|
|
|
extern PGDLLIMPORT volatile sig_atomic_t ConfigReloadPending;
|
|
extern PGDLLIMPORT volatile sig_atomic_t ShutdownRequestPending;
|
|
|
|
extern void ProcessMainLoopInterrupts(void);
|
|
extern void SignalHandlerForConfigReload(SIGNAL_ARGS);
|
|
extern void SignalHandlerForCrashExit(SIGNAL_ARGS);
|
|
extern void SignalHandlerForShutdownRequest(SIGNAL_ARGS);
|
|
|
|
#endif
|