summaryrefslogtreecommitdiff
path: root/src/exit/quick_exit.c
blob: 1175d80cc49d3c8395101f6712726676ccf636e2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <stdlib.h>
#include "syscall.h"
#include "atomic.h"
#include "libc.h"

static void dummy() { }
weak_alias(dummy, __funcs_on_quick_exit);

_Noreturn void quick_exit(int code)
{
	static int lock;
	while (a_swap(&lock, 1)) __syscall(SYS_pause);
	__funcs_on_quick_exit();
	_Exit(code);
}