Upgraded GRUB2 to 2.00 release.
[AROS.git] / compiler / clib / __exitfunc.c
blob6b111477316dfd66be0ce51d2d718052d6480c87
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 <exec/lists.h>
10 #include "__exitfunc.h"
12 int __addexitfunc(struct AtExitNode *aen)
14 struct aroscbase *aroscbase = __aros_getbase();
16 ADDHEAD((struct List *)&aroscbase->acb_atexit_list, (struct Node *)aen);
18 return 0;
21 int __init_atexit(struct aroscbase *aroscbase)
23 NEWLIST((struct List *)&aroscbase->acb_atexit_list);
25 return 1;
28 void __callexitfuncs(void)
30 struct aroscbase *aroscbase = __aros_getbase();
31 struct AtExitNode *aen;
33 while (
34 (aen = (struct AtExitNode *) REMHEAD((struct List *) &aroscbase->acb_atexit_list))
37 switch (aen->node.ln_Type)
39 case AEN_VOID:
40 aen->func.fvoid();
41 break;
43 case AEN_PTR:
44 aen->func.fptr(*aroscbase->acb_startup_error_ptr, aen->ptr);
45 break;
50 ADD2OPENLIB(__init_atexit, 100);