LCOV - code coverage report
Current view: top level - src/backend/libpq - pqsignal.c (source / functions) Coverage Total Hit
Test: PostgreSQL 19devel Lines: 100.0 % 24 24
Test Date: 2026-02-17 17:20:33 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         1177 : pqinitmask(void)
      42              : {
      43         1177 :     sigemptyset(&UnBlockSig);
      44              : 
      45              :     /* Note: InitializeWaitEventSupport() modifies UnBlockSig. */
      46              : 
      47              :     /* First set all signals, then clear some. */
      48         1177 :     sigfillset(&BlockSig);
      49         1177 :     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         1177 :     sigdelset(&BlockSig, SIGTRAP);
      58         1177 :     sigdelset(&StartupBlockSig, SIGTRAP);
      59              : #endif
      60              : #ifdef SIGABRT
      61         1177 :     sigdelset(&BlockSig, SIGABRT);
      62         1177 :     sigdelset(&StartupBlockSig, SIGABRT);
      63              : #endif
      64              : #ifdef SIGILL
      65         1177 :     sigdelset(&BlockSig, SIGILL);
      66         1177 :     sigdelset(&StartupBlockSig, SIGILL);
      67              : #endif
      68              : #ifdef SIGFPE
      69         1177 :     sigdelset(&BlockSig, SIGFPE);
      70         1177 :     sigdelset(&StartupBlockSig, SIGFPE);
      71              : #endif
      72              : #ifdef SIGSEGV
      73         1177 :     sigdelset(&BlockSig, SIGSEGV);
      74         1177 :     sigdelset(&StartupBlockSig, SIGSEGV);
      75              : #endif
      76              : #ifdef SIGBUS
      77         1177 :     sigdelset(&BlockSig, SIGBUS);
      78         1177 :     sigdelset(&StartupBlockSig, SIGBUS);
      79              : #endif
      80              : #ifdef SIGSYS
      81         1177 :     sigdelset(&BlockSig, SIGSYS);
      82         1177 :     sigdelset(&StartupBlockSig, SIGSYS);
      83              : #endif
      84              : #ifdef SIGCONT
      85         1177 :     sigdelset(&BlockSig, SIGCONT);
      86         1177 :     sigdelset(&StartupBlockSig, SIGCONT);
      87              : #endif
      88              : 
      89              : /* Signals unique to startup */
      90              : #ifdef SIGQUIT
      91         1177 :     sigdelset(&StartupBlockSig, SIGQUIT);
      92              : #endif
      93              : #ifdef SIGTERM
      94         1177 :     sigdelset(&StartupBlockSig, SIGTERM);
      95              : #endif
      96              : #ifdef SIGALRM
      97         1177 :     sigdelset(&StartupBlockSig, SIGALRM);
      98              : #endif
      99         1177 : }
        

Generated by: LCOV version 2.0-1