postgres_extension/postmaster/
bgworker.rs

1use libc::*;
2use crate::postgres::*;
3
4pub const BGWORKER_SHMEM_ACCESS: c_int = 0x0001;
5pub const BGWORKER_BACKEND_DATABASE_CONNECTION: c_int = 0x0002;
6pub const BGW_MAXLEN: usize = 96;
7pub const BGW_EXTRALEN: usize = 128;
8
9#[repr(C)]
10pub enum BgWorkerStartTime {
11    BgWorkerStart_PostmasterStart,
12    BgWorkerStart_ConsistentState,
13    BgWorkerStart_RecoveryFinished,
14}
15
16#[repr(C)]
17pub struct BackgroundWorker {
18    pub bgw_name: [c_char; BGW_MAXLEN],
19    pub bgw_type: [c_char; BGW_MAXLEN],
20    pub bgw_flags: c_int,
21    pub bgw_start_time: BgWorkerStartTime,
22    pub bgw_restart_time: c_int,   /* in seconds, or BGW_NEVER_RESTART */
23    pub bgw_library_name: [c_char; BGW_MAXLEN],
24    pub bgw_function_name: [c_char; BGW_MAXLEN],
25    pub bgw_main_arg: Datum,
26    pub bgw_extra: [c_char; BGW_EXTRALEN],
27    pub bgw_notify_pid: pid_t, /* SIGUSR1 this backend on start/stop */
28}
29
30extern "C" {
31    pub fn RegisterBackgroundWorker(worker: &BackgroundWorker);
32}