summaryrefslogtreecommitdiff
path: root/lib/libc/stdlib/atexit.c
blob: cf1f91e55f14b44bd7f2177b42dcc04f13dfe944 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include "stddef.h" // for NULL

#include <stdlib.h> // for atexit

static void (*__atexit_fvec[32])(void) = { NULL };

int atexit(void (*func)(void))
{
	for (int i = 0; i < 32; i++) {
		if (__atexit_fvec[i] == NULL) {
			__atexit_fvec[i] = func;
			__atexit_fvec[i + 1] = NULL;
			return 0;
		}
	}

	return -1;
}