Add tgkill syscall.

Use tgkill instead of tkill to implement pthread_kill.
This is safer in the event that the thread has already terminated
and its id has been reused by a different process.

Change-Id: Ied715e11d7eadeceead79f33db5e2b5722954ac9
This commit is contained in:
Jeff Brown
2011-11-18 15:17:07 -08:00
parent 4b469eae40
commit 10c8ce59a4
10 changed files with 121 additions and 2 deletions

View File

@@ -1839,7 +1839,7 @@ static void pthread_key_clean_all(void)
}
// man says this should be in <linux/unistd.h>, but it isn't
extern int tkill(int tid, int sig);
extern int tgkill(int tgid, int tid, int sig);
int pthread_kill(pthread_t tid, int sig)
{
@@ -1847,7 +1847,7 @@ int pthread_kill(pthread_t tid, int sig)
int old_errno = errno;
pthread_internal_t * thread = (pthread_internal_t *)tid;
ret = tkill(thread->kernel_id, sig);
ret = tgkill(getpid(), thread->kernel_id, sig);
if (ret < 0) {
ret = errno;
errno = old_errno;