
This patch gets us out from under the Unix limitation of two user-defined signal types. We already had done something similar for signals directed to the postmaster process; this adds multiplexing for signals directed to backends and auxiliary processes (so long as they're connected to shared memory). As proof of concept, replace the former usage of SIGUSR1 and SIGUSR2 for backends with use of the multiplexing mechanism. There are still some hard-wired definitions of SIGUSR1 and SIGUSR2 for other process types, but getting rid of those doesn't seem interesting at the moment. Fujii Masao
47 lines
1.5 KiB
C
47 lines
1.5 KiB
C
/*-------------------------------------------------------------------------
|
|
*
|
|
* async.h
|
|
* Asynchronous notification: NOTIFY, LISTEN, UNLISTEN
|
|
*
|
|
* Portions Copyright (c) 1996-2009, PostgreSQL Global Development Group
|
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
*
|
|
* $PostgreSQL: pgsql/src/include/commands/async.h,v 1.38 2009/07/31 20:26:23 tgl Exp $
|
|
*
|
|
*-------------------------------------------------------------------------
|
|
*/
|
|
#ifndef ASYNC_H
|
|
#define ASYNC_H
|
|
|
|
extern bool Trace_notify;
|
|
|
|
/* notify-related SQL statements */
|
|
extern void Async_Notify(const char *relname);
|
|
extern void Async_Listen(const char *relname);
|
|
extern void Async_Unlisten(const char *relname);
|
|
extern void Async_UnlistenAll(void);
|
|
|
|
/* perform (or cancel) outbound notify processing at transaction commit */
|
|
extern void AtCommit_Notify(void);
|
|
extern void AtAbort_Notify(void);
|
|
extern void AtSubStart_Notify(void);
|
|
extern void AtSubCommit_Notify(void);
|
|
extern void AtSubAbort_Notify(void);
|
|
extern void AtPrepare_Notify(void);
|
|
|
|
/* signal handler for inbound notifies (PROCSIG_NOTIFY_INTERRUPT) */
|
|
extern void HandleNotifyInterrupt(void);
|
|
|
|
/*
|
|
* enable/disable processing of inbound notifies directly from signal handler.
|
|
* The enable routine first performs processing of any inbound notifies that
|
|
* have occurred since the last disable.
|
|
*/
|
|
extern void EnableNotifyInterrupt(void);
|
|
extern bool DisableNotifyInterrupt(void);
|
|
|
|
extern void notify_twophase_postcommit(TransactionId xid, uint16 info,
|
|
void *recdata, uint32 len);
|
|
|
|
#endif /* ASYNC_H */
|