diff options
author | rpj <rpj> | 1998-07-24 09:45:04 +0000 |
---|---|---|
committer | rpj <rpj> | 1998-07-24 09:45:04 +0000 |
commit | 99acb3fb113a739fe65a3593d86dabaf9d676b67 (patch) | |
tree | 172a2585f08833a5feab290153579feb3f2d807f /cleanup.c | |
parent | 82fa43b768e09bf30669351b61eb2f94cb1c71a3 (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.c | 5 |
1 files changed, 3 insertions, 2 deletions
@@ -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 |