// SPDX-License-Identifier: Apache-2.0 // Copyright 2024-2026, Amlal El Mahrouss (amlal@nekernel.org) // Licensed under the Apache License, Version 2.0 (see LICENSE file) // Official repository: https://github.com/ne-foss-org/nectar #pragma once #include __init_decl() /// @brief CRT exit, with exit code (!!! exits all threads. !!!) /// @param code the exit code. /// @return the return > 0 for non successful. extern int exit_(int code); /// @brief CRT signal handler. /// @param code the signal code. extern void signal_(int code); extern void (*__atexit_cdecl_ptr)(void); extern void (**__atexit_lst_ptr)(void); extern size_t __atexit_lst_cnt; __fini_decl() /// @brief Standard C++ namespace namespace std::base_process { inline int signal(int code) { signal_(code); return -1; } inline int32_t exit(const int32_t& code) { for (auto idx = 0UL; idx < __atexit_lst_cnt; ++idx) { __atexit_lst_ptr[idx](); } if (__atexit_cdecl_ptr) __atexit_cdecl_ptr(); exit_(code); return -1; } } // namespace std::base_process