1#include <stdlib.h>2#include <errno.h>34#include "../libc.h"56#undef atexit78static void (*funs[_ATEXIT_MAX])(void);9static unsigned nfuns;1011static void12callhdls(void)13{14 while (nfuns > 0)15 (*funs[--nfuns])();16}1718int19atexit(void (*fun)(void))20{21 if (nfuns == _ATEXIT_MAX) {22 errno = ENOMEM;23 return -1;24 }25 funs[nfuns++] = fun;26 _atexithdl = callhdls;2728 return 0;29}