/* ----------------------------------------------------------------------------- * * (c) The GHC Team 1998-2020 * * Hooks for the I/O subsystem(s) that are called from other parts of the RTS. * * There are several different I/O subsystem implementations (aka I/O managers), * for different platforms (notably Windows vs others), and for the threaded vs * non-threaded RTS. These implementations all need hooks into other parts of * the RTS, such as startup/shutdown, the scheduler and other special features. * * To keep things comprehensible, all the hooks used by all the different I/O * subsystem implementations are centralised here. Not all implementations use * all hooks. * * -------------------------------------------------------------------------*/ #include "Rts.h" #include "rts/IOInterface.h" // exported #include "IOManager.h" // RTS internal #include "Capability.h" /* Declared in rts/IOInterface.h. Used only by the MIO threaded I/O manager on * Unix platforms. */ #if !defined(mingw32_HOST_OS) void setIOManagerControlFd(uint32_t cap_no USED_IF_THREADS, int fd USED_IF_THREADS) { #if defined(THREADED_RTS) if (cap_no < n_capabilities) { RELAXED_STORE(&capabilities[cap_no]->io_manager_control_wr_fd, fd); } else { errorBelch("warning: setIOManagerControlFd called with illegal capability number."); } #endif } #endif