Files
kolibrios/programs/develop/ktcc/trunk/libc.obj/source/stdlib/atexit.c
Egor00f 8322ec954b
Some checks failed
Build system / Build (pull_request) Failing after 1s
Build system / Check kernel codestyle (pull_request) Successful in 1m12s
libc.obj: add void abort(), int atexit( void (*func)(void) ), EXIT_ SUCCESS/FAILURE
2026-01-10 23:20:18 +05:00

39 lines
547 B
C

#include <stdlib.h>
struct atexit_n
{
struct atexit_n* last;
void (*func)(void);
};
struct atexit_n *__last_n = NULL;
int atexit( void (*func)(void) )
{
struct atexit_n* n = malloc(sizeof(struct atexit_n));
if(n == NULL)
{
return 1;
}
n->last = __last_n;
n->func = func;
__last_n = n;
return 0;
}
void __run_atexit()
{
struct atexit_n *n = __last_n;
while (n != NULL)
{
n->func();
struct atexit_n *to_free = n;
n = n->last;
free(to_free);
}
}