1988-02-19 15:54:01 +00:00
|
|
|
/*
|
|
|
|
(c) copyright 1988 by the Vrije Universiteit, Amsterdam, The Netherlands.
|
|
|
|
See the copyright notice in the ACK home directory, in the file "Copyright".
|
|
|
|
*/
|
|
|
|
|
|
|
|
/*
|
|
|
|
Module: program termination routines
|
|
|
|
Author: Ceriel J.H. Jacobs
|
1994-06-24 14:02:31 +00:00
|
|
|
Version: $Id$
|
1988-02-19 15:54:01 +00:00
|
|
|
*/
|
2018-06-25 20:22:37 +00:00
|
|
|
|
|
|
|
#include <unistd.h>
|
|
|
|
#include "libm2.h"
|
1989-03-22 17:36:20 +00:00
|
|
|
#define MAXPROCS 32
|
1988-01-25 16:14:48 +00:00
|
|
|
|
1988-12-02 15:39:59 +00:00
|
|
|
static int callindex = 0;
|
2018-06-25 20:22:37 +00:00
|
|
|
static void (*proclist[MAXPROCS])(void);
|
1988-01-25 16:14:48 +00:00
|
|
|
|
2018-06-25 20:22:37 +00:00
|
|
|
void _cleanup(void)
|
1988-01-25 16:14:48 +00:00
|
|
|
{
|
1989-05-12 09:36:16 +00:00
|
|
|
while (--callindex >= 0)
|
|
|
|
(*proclist[callindex])();
|
1988-11-07 10:25:45 +00:00
|
|
|
callindex = 0;
|
1988-01-25 16:14:48 +00:00
|
|
|
}
|
|
|
|
|
2018-06-25 20:22:37 +00:00
|
|
|
int CallAtEnd(void (*p)(void))
|
1988-01-25 16:14:48 +00:00
|
|
|
{
|
2018-06-25 20:22:37 +00:00
|
|
|
if (callindex >= MAXPROCS)
|
|
|
|
{
|
1988-01-28 16:37:55 +00:00
|
|
|
return 0;
|
1988-01-25 16:14:48 +00:00
|
|
|
}
|
1989-03-22 17:36:20 +00:00
|
|
|
proclist[callindex++] = p;
|
1988-01-28 16:37:55 +00:00
|
|
|
return 1;
|
1988-01-25 16:14:48 +00:00
|
|
|
}
|
|
|
|
|
2018-06-25 20:22:37 +00:00
|
|
|
void halt(void)
|
1987-05-13 14:36:45 +00:00
|
|
|
{
|
1991-03-15 09:24:03 +00:00
|
|
|
_cleanup();
|
|
|
|
_exit(0);
|
1987-05-13 14:36:45 +00:00
|
|
|
}
|