compiler/clib: Don't hide access to aroscbase behind a #define.
[AROS.git] / compiler / clib / __exitfunc.c
blob029f2f9b46c26df63c417781d43bad4bacf155f9
1 /*
2 Copyright © 1995-2012, The AROS Development Team. All rights reserved.
3 $Id$
4 */
6 #include "__arosc_privdata.h"
8 #include <aros/symbolsets.h>
9 #include <aros/startup.h>
10 #include <exec/lists.h>
11 #include "__exitfunc.h"
13 int __addexitfunc(struct AtExitNode *aen)
15 struct aroscbase *aroscbase = __GM_GetBase();
17 ADDHEAD((struct List *)&aroscbase->acb_atexit_list, (struct Node *)aen);
19 return 0;
22 int __init_atexit(struct aroscbase *aroscbase)
24 NEWLIST((struct List *)&aroscbase->acb_atexit_list);
26 return 1;
29 void __callexitfuncs(void)
31 struct aroscbase *aroscbase = __GM_GetBase();
32 struct AtExitNode *aen;
34 while (
35 (aen = (struct AtExitNode *) REMHEAD((struct List *) &aroscbase->acb_atexit_list))
38 switch (aen->node.ln_Type)
40 case AEN_VOID:
41 aen->func.fvoid();
42 break;
44 case AEN_PTR:
45 aen->func.fptr(__arosc_startup_error, aen->ptr);
46 break;
51 ADD2OPENLIB(__init_atexit, 100);