summaryrefslogtreecommitdiff
path: root/libpsx/src/atexit.c
blob: 835aae3802ff44f25e3556550c9caddc6f1f6c9d (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <stdlib.h>

static void *f_ptr[32];
static int f_ptr_pos = 0;

int atexit(void (*function)(void))
{
	if(f_ptr_pos >= 32)
		return -1;
	
	f_ptr[f_ptr_pos++] = function;

	return 0;
}

void call_atexit_callbacks(void)
{
	int i;
	void (*f)(void);
	
	for(i = (f_ptr_pos - 1); i >= 0; i--)
		(f = f_ptr[i])();
}