simplify cancellation push/pop slightly
no need to pass unnecessary extra arguments on to the core code in pthread_create.c. this just wastes cycles and code bloat.
This commit is contained in:
parent
25d575edc4
commit
cfd892fde9
2 changed files with 9 additions and 12 deletions
|
|
@ -1,23 +1,20 @@
|
||||||
#include "pthread_impl.h"
|
#include "pthread_impl.h"
|
||||||
|
|
||||||
void __do_cleanup_push();
|
static void dummy(struct __ptcb *cb)
|
||||||
void __do_cleanup_pop();
|
{
|
||||||
|
}
|
||||||
|
weak_alias(dummy, __do_cleanup_push);
|
||||||
|
weak_alias(dummy, __do_cleanup_pop);
|
||||||
|
|
||||||
void _pthread_cleanup_push(struct __ptcb *cb, void (*f)(void *), void *x)
|
void _pthread_cleanup_push(struct __ptcb *cb, void (*f)(void *), void *x)
|
||||||
{
|
{
|
||||||
cb->__f = f;
|
cb->__f = f;
|
||||||
cb->__x = x;
|
cb->__x = x;
|
||||||
__do_cleanup_push(cb, f, x);
|
__do_cleanup_push(cb);
|
||||||
}
|
}
|
||||||
|
|
||||||
void _pthread_cleanup_pop(struct __ptcb *cb, int run)
|
void _pthread_cleanup_pop(struct __ptcb *cb, int run)
|
||||||
{
|
{
|
||||||
__do_cleanup_pop(cb, run);
|
__do_cleanup_pop(cb);
|
||||||
if (run) cb->__f(cb->__x);
|
if (run) cb->__f(cb->__x);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void dummy()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
weak_alias(dummy, __do_cleanup_push);
|
|
||||||
weak_alias(dummy, __do_cleanup_pop);
|
|
||||||
|
|
|
||||||
|
|
@ -43,14 +43,14 @@ void pthread_exit(void *result)
|
||||||
__syscall(SYS_exit, 0);
|
__syscall(SYS_exit, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
void __do_cleanup_push(struct __ptcb *cb, void (*f)(void *), void *x)
|
void __do_cleanup_push(struct __ptcb *cb)
|
||||||
{
|
{
|
||||||
struct pthread *self = pthread_self();
|
struct pthread *self = pthread_self();
|
||||||
cb->__next = self->cancelbuf;
|
cb->__next = self->cancelbuf;
|
||||||
self->cancelbuf = cb;
|
self->cancelbuf = cb;
|
||||||
}
|
}
|
||||||
|
|
||||||
void __do_cleanup_pop(struct __ptcb *cb, int run)
|
void __do_cleanup_pop(struct __ptcb *cb)
|
||||||
{
|
{
|
||||||
__pthread_self()->cancelbuf = cb->__next;
|
__pthread_self()->cancelbuf = cb->__next;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue