summaryrefslogtreecommitdiff
path: root/cleanup.c
diff options
context:
space:
mode:
authorrpj <rpj>1998-07-24 09:45:04 +0000
committerrpj <rpj>1998-07-24 09:45:04 +0000
commit99acb3fb113a739fe65a3593d86dabaf9d676b67 (patch)
tree172a2585f08833a5feab290153579feb3f2d807f /cleanup.c
parent82fa43b768e09bf30669351b61eb2f94cb1c71a3 (diff)
Fri Jul 24 16:33:17 1998 Ross Johnson <rpj@swan.canberra.edu.au>
* fork.c (pthread_atfork): Add all the necessary push calls. Local implementation semantics: If we get an ENOMEM at any time then ALL handlers (including those from previous pthread_atfork() calls) will be popped off each of the three atfork stacks before we return. (fork): Add all the necessary pop calls. Add the thread cancellation and join calls to the child fork. Add #includes. * implement.h: (_pthread_handler_push): Fix return type and stack arg type in prototype. (_pthread_handler_pop): Fix stack arg type in prototype. (_pthread_handler_pop_all): Fix stack arg type in prototype. * cleanup.c (_pthread_handler_push): Change return type to int and return ENOMEM if malloc() fails.
Diffstat (limited to 'cleanup.c')
-rw-r--r--cleanup.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/cleanup.c b/cleanup.c
index 168b75f..9bf4a68 100644
--- a/cleanup.c
+++ b/cleanup.c
@@ -9,7 +9,7 @@
#include "pthread.h"
#include "implement.h"
-void
+int
_pthread_handler_push(int stack,
int poporder,
void (*routine)(void *),
@@ -27,7 +27,7 @@ _pthread_handler_push(int stack,
if (new == NULL)
{
- /* FIXME: INTERNAL ERROR */
+ return ENOMEM;
}
new->routine = routine;
@@ -60,6 +60,7 @@ _pthread_handler_push(int stack,
next = new;
}
}
+ return 0;
}
void