am be741d47: am 2f460fbe: am 73b5cad9: Merge "bionic: Fix wrong kernel_id in pthread descriptor after fork()"
* commit 'be741d472868a8ffcb455588f18cda889b0f465c': bionic: Fix wrong kernel_id in pthread descriptor after fork()
This commit is contained in:
commit
76d56cf4a9
@ -27,6 +27,7 @@
|
|||||||
*/
|
*/
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#include "pthread_internal.h"
|
#include "pthread_internal.h"
|
||||||
|
#include "bionic_pthread.h"
|
||||||
#include "cpuacct.h"
|
#include "cpuacct.h"
|
||||||
|
|
||||||
extern int __fork(void);
|
extern int __fork(void);
|
||||||
@ -48,6 +49,9 @@ int fork(void)
|
|||||||
__timer_table_start_stop(0);
|
__timer_table_start_stop(0);
|
||||||
__bionic_atfork_run_parent();
|
__bionic_atfork_run_parent();
|
||||||
} else {
|
} else {
|
||||||
|
/* Adjusting the kernel id after a fork */
|
||||||
|
(void)__pthread_settid(pthread_self(), gettid());
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Newly created process must update cpu accounting.
|
* Newly created process must update cpu accounting.
|
||||||
* Call cpuacct_add passing in our uid, which will take
|
* Call cpuacct_add passing in our uid, which will take
|
||||||
|
@ -2292,3 +2292,14 @@ pid_t __pthread_gettid(pthread_t thid)
|
|||||||
pthread_internal_t* thread = (pthread_internal_t*)thid;
|
pthread_internal_t* thread = (pthread_internal_t*)thid;
|
||||||
return thread->kernel_id;
|
return thread->kernel_id;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int __pthread_settid(pthread_t thid, pid_t tid)
|
||||||
|
{
|
||||||
|
if (thid == 0)
|
||||||
|
return EINVAL;
|
||||||
|
|
||||||
|
pthread_internal_t* thread = (pthread_internal_t*)thid;
|
||||||
|
thread->kernel_id = tid;
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
@ -35,6 +35,7 @@ __BEGIN_DECLS
|
|||||||
|
|
||||||
/* Internal, not an NDK API */
|
/* Internal, not an NDK API */
|
||||||
extern pid_t __pthread_gettid(pthread_t thid);
|
extern pid_t __pthread_gettid(pthread_t thid);
|
||||||
|
extern int __pthread_settid(pthread_t thid, pid_t tid);
|
||||||
|
|
||||||
__END_DECLS
|
__END_DECLS
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user