blob: 5fcc1bcdab0fe7a337d7140d791dcd55858274b1 [file] [log] [blame]
// Copyright lowRISC contributors.
// Licensed under the Apache License, Version 2.0, see LICENSE for details.
// SPDX-License-Identifier: Apache-2.0
use anyhow::{Context, Result};
use nix::errno::Errno;
use nix::libc::{c_int, c_ulong};
use nix::sys::signal::Signal;
#[link(name = "c")]
extern "C" {
fn prctl(option: c_int, arg2: c_ulong, arg3: c_ulong, arg4: c_ulong, arg5: c_ulong) -> c_int;
}
pub fn request_parent_death_signal(signal: Signal) -> Result<()> {
const PR_SET_PDEATHSIG: c_int = 1;
let res = unsafe { prctl(PR_SET_PDEATHSIG, signal as c_ulong, 0, 0, 0) };
if res != 0 {
Err(Errno::last()).context("prctl(PR_SET_PDEATHSIG)")
} else {
Ok(())
}
}