diff options
Diffstat (limited to 'mdk-stage1/dietlibc/lib/atexit.c')
-rw-r--r-- | mdk-stage1/dietlibc/lib/atexit.c | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/mdk-stage1/dietlibc/lib/atexit.c b/mdk-stage1/dietlibc/lib/atexit.c new file mode 100644 index 000000000..2b644bf49 --- /dev/null +++ b/mdk-stage1/dietlibc/lib/atexit.c @@ -0,0 +1,23 @@ +typedef void (*function)(void); + +static function __atexitlist[4]; + +int atexit(function t) { + int i; + for (i=0; i<4; i++) + if (__atexitlist[i]==0) { + __atexitlist[i]=t; + return 0; + } + return -1; +} + +extern void _exit(int code) __attribute__((noreturn)); + +void exit(int code) { + if (__atexitlist[0]) __atexitlist[0](); + if (__atexitlist[1]) __atexitlist[1](); + if (__atexitlist[2]) __atexitlist[2](); + if (__atexitlist[3]) __atexitlist[3](); + _exit(code); +} |