LCOV - code coverage report
Current view: top level - src/backend/libpq - pqsignal.c (source / functions) Coverage Total Hit
Test: Code coverage Lines: 100.0 % 24 24
Test Date: 2026-01-26 10:56:24 Functions: 100.0 % 1 1
Legend: Lines:     hit not hit

            Line data    Source code
       1              : /*-------------------------------------------------------------------------
       2              :  *
       3              :  * pqsignal.c
       4              :  *        Backend signal(2) support (see also src/port/pqsignal.c)
       5              :  *
       6              :  * Portions Copyright (c) 1996-2026, PostgreSQL Global Development Group
       7              :  * Portions Copyright (c) 1994, Regents of the University of California
       8              :  *
       9              :  *
      10              :  * IDENTIFICATION
      11              :  *        src/backend/libpq/pqsignal.c
      12              :  *
      13              :  * ------------------------------------------------------------------------
      14              :  */
      15              : 
      16              : #include "postgres.h"
      17              : 
      18              : #include "libpq/pqsignal.h"
      19              : 
      20              : 
      21              : /* Global variables */
      22              : sigset_t        UnBlockSig,
      23              :                         BlockSig,
      24              :                         StartupBlockSig;
      25              : 
      26              : 
      27              : /*
      28              :  * Initialize BlockSig, UnBlockSig, and StartupBlockSig.
      29              :  *
      30              :  * BlockSig is the set of signals to block when we are trying to block
      31              :  * signals.  This includes all signals we normally expect to get, but NOT
      32              :  * signals that should never be turned off.
      33              :  *
      34              :  * StartupBlockSig is the set of signals to block during startup packet
      35              :  * collection; it's essentially BlockSig minus SIGTERM, SIGQUIT, SIGALRM.
      36              :  *
      37              :  * UnBlockSig is the set of signals to block when we don't want to block
      38              :  * signals.
      39              :  */
      40              : void
      41            6 : pqinitmask(void)
      42              : {
      43            6 :         sigemptyset(&UnBlockSig);
      44              : 
      45              :         /* Note: InitializeWaitEventSupport() modifies UnBlockSig. */
      46              : 
      47              :         /* First set all signals, then clear some. */
      48            6 :         sigfillset(&BlockSig);
      49            6 :         sigfillset(&StartupBlockSig);
      50              : 
      51              :         /*
      52              :          * Unmark those signals that should never be blocked. Some of these signal
      53              :          * names don't exist on all platforms.  Most do, but might as well ifdef
      54              :          * them all for consistency...
      55              :          */
      56              : #ifdef SIGTRAP
      57            6 :         sigdelset(&BlockSig, SIGTRAP);
      58            6 :         sigdelset(&StartupBlockSig, SIGTRAP);
      59              : #endif
      60              : #ifdef SIGABRT
      61            6 :         sigdelset(&BlockSig, SIGABRT);
      62            6 :         sigdelset(&StartupBlockSig, SIGABRT);
      63              : #endif
      64              : #ifdef SIGILL
      65            6 :         sigdelset(&BlockSig, SIGILL);
      66            6 :         sigdelset(&StartupBlockSig, SIGILL);
      67              : #endif
      68              : #ifdef SIGFPE
      69            6 :         sigdelset(&BlockSig, SIGFPE);
      70            6 :         sigdelset(&StartupBlockSig, SIGFPE);
      71              : #endif
      72              : #ifdef SIGSEGV
      73            6 :         sigdelset(&BlockSig, SIGSEGV);
      74            6 :         sigdelset(&StartupBlockSig, SIGSEGV);
      75              : #endif
      76              : #ifdef SIGBUS
      77            6 :         sigdelset(&BlockSig, SIGBUS);
      78            6 :         sigdelset(&StartupBlockSig, SIGBUS);
      79              : #endif
      80              : #ifdef SIGSYS
      81            6 :         sigdelset(&BlockSig, SIGSYS);
      82            6 :         sigdelset(&StartupBlockSig, SIGSYS);
      83              : #endif
      84              : #ifdef SIGCONT
      85            6 :         sigdelset(&BlockSig, SIGCONT);
      86            6 :         sigdelset(&StartupBlockSig, SIGCONT);
      87              : #endif
      88              : 
      89              : /* Signals unique to startup */
      90              : #ifdef SIGQUIT
      91            6 :         sigdelset(&StartupBlockSig, SIGQUIT);
      92              : #endif
      93              : #ifdef SIGTERM
      94            6 :         sigdelset(&StartupBlockSig, SIGTERM);
      95              : #endif
      96              : #ifdef SIGALRM
      97            6 :         sigdelset(&StartupBlockSig, SIGALRM);
      98              : #endif
      99            6 : }
        

Generated by: LCOV version 2.3.2-1