diff options
| author | Amlal El Mahrouss <amlal@nekernel.org> | 2025-12-05 11:49:28 -0500 |
|---|---|---|
| committer | Amlal El Mahrouss <amlal@nekernel.org> | 2025-12-05 11:50:39 -0500 |
| commit | 037ac38824623c13070384e8fc0e70c4770dcdbd (patch) | |
| tree | 19d7286c5d226b33f10743c76436dace0cf42112 /include/LibC++/base_process.h | |
| parent | 5535f22998bf991eeb75a56c9e147f0fd4bd23b2 (diff) | |
chore! new project filesystem structure.
Signed-off-by: Amlal El Mahrouss <amlal@nekernel.org>
Diffstat (limited to 'include/LibC++/base_process.h')
| -rw-r--r-- | include/LibC++/base_process.h | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/include/LibC++/base_process.h b/include/LibC++/base_process.h new file mode 100644 index 0000000..cb25aa1 --- /dev/null +++ b/include/LibC++/base_process.h @@ -0,0 +1,45 @@ +/* ======================================== + + Copyright (C) 2024-2025 Amlal El Mahrouss, Licensed under the Apache 2.0 license. + +======================================== */ + +#pragma once + +#include <LibC++/defines.h> + +__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 |
