diff options
| author | Amlal El Mahrouss <amlal@nekernel.org> | 2025-11-26 22:58:28 -0500 |
|---|---|---|
| committer | Amlal El Mahrouss <amlal@nekernel.org> | 2025-11-26 22:58:28 -0500 |
| commit | e63063f6556aaa759b8af2cc5bf88b89e2dbcfab (patch) | |
| tree | 551705f187dc1129ef0835ac7d1a56bbb6856340 /src/LibC++/base_process.h | |
| parent | ad4deb740e8a358542d59dae2b3c1225c02b50db (diff) | |
| parent | eb7f40b000b0b1dc4605113f3f2d7e87003d6d43 (diff) | |
Merge branch 'dev' of github.com:nekernel-org/necti into dev
Diffstat (limited to 'src/LibC++/base_process.h')
| -rw-r--r-- | src/LibC++/base_process.h | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/src/LibC++/base_process.h b/src/LibC++/base_process.h new file mode 100644 index 0000000..f9b0596 --- /dev/null +++ b/src/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 |
