--
-- Copyright (C) 2018-2022, AdaCore
--
-- SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
--
--
-- This is an OSX implementation. For some reason, we are unable to catch
-- SIGCHLD signal until it's enabled for the environment task.
--
with Ada.Interrupts.Names;
with Interfaces.C;
pragma Warnings (Off);
with System.OS_Interface;
pragma Warnings (Off);
separate (Spawn.Internal.Monitor)
procedure Initialize is
Ignore : Interfaces.C.int;
Value : aliased System.OS_Interface.struct_sigaction :=
(sa_flags => 0,
others => <>);
begin
-- Reset sigaction to call a null procedure
Ignore := System.OS_Interface.sigemptyset
(Value.sa_mask'Unrestricted_Access);
-- Set dummy procedure as the handler
Value.sa_handler := Dummy'Address;
-- Assign the custom handler to SIGCHLD signal
Ignore := System.OS_Interface.sigaction
(System.OS_Interface.Signal (Ada.Interrupts.Names.SIGCHLD),
Value'Unchecked_Access,
null);
end Initialize;