diff options
| author | Amlal El Mahrouss <amlal@nekernel.org> | 2026-01-12 20:54:09 +0100 |
|---|---|---|
| committer | Amlal El Mahrouss <amlal@nekernel.org> | 2026-01-12 20:54:09 +0100 |
| commit | ef7f9bead82e73ff3efd4577a20e5170b017a859 (patch) | |
| tree | e54802488350234b4ac8a5a98d573096a21ce83c /include/LibNectarCore/base_process.h | |
| parent | ff7ee3e3e070a2abee70fd93062065060118cf9e (diff) | |
chore: Nectar Generics Library improvements.
Signed-off-by: Amlal El Mahrouss <amlal@nekernel.org>
Diffstat (limited to 'include/LibNectarCore/base_process.h')
| -rw-r--r-- | include/LibNectarCore/base_process.h | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/include/LibNectarCore/base_process.h b/include/LibNectarCore/base_process.h new file mode 100644 index 0000000..15d601b --- /dev/null +++ b/include/LibNectarCore/base_process.h @@ -0,0 +1,44 @@ +// Copyright 2024-2025, Amlal El Mahrouss (amlal@nekernel.org) +// Licensed under the Apache License, Version 2.0 (See accompanying +// file LICENSE or copy at http://www.apache.org/licenses/LICENSE-2.0) +// Official repository: https://github.com/nekernel-org/nectar + +#ifndef NECTAR_LIBCXX_BASE_PROCESS_H +#define NECTAR_LIBCXX_BASE_PROCESS_H + +#include <LibNectarCore/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() + + 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; +} + +#endif // NECTAR_LIBCXX_BASE_PROCESS_H |
