diff options
-rw-r--r-- | src/llthread.c | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/src/llthread.c b/src/llthread.c index 5bcd821..7404bd7 100644 --- a/src/llthread.c +++ b/src/llthread.c | |||
@@ -45,6 +45,7 @@ | |||
45 | # define INFINITE_JOIN_TIMEOUT INFINITE | 45 | # define INFINITE_JOIN_TIMEOUT INFINITE |
46 | # define JOIN_OK 0 | 46 | # define JOIN_OK 0 |
47 | # define JOIN_ETIMEDOUT 1 | 47 | # define JOIN_ETIMEDOUT 1 |
48 | # define JOIN_FAIL 2 | ||
48 | typedef DWORD join_timeout_t; | 49 | typedef DWORD join_timeout_t; |
49 | typedef HANDLE os_thread_t; | 50 | typedef HANDLE os_thread_t; |
50 | #else | 51 | #else |
@@ -540,22 +541,22 @@ static int llthread_join(llthread_t *this, join_timeout_t timeout) { | |||
540 | CloseHandle( this->thread ); | 541 | CloseHandle( this->thread ); |
541 | this->thread = INVALID_THREAD; | 542 | this->thread = INVALID_THREAD; |
542 | FLAG_SET(this, TSTATE_JOINED); | 543 | FLAG_SET(this, TSTATE_JOINED); |
543 | return 0; | 544 | return JOIN_OK; |
544 | } | 545 | } |
545 | else if( ret == WAIT_TIMEOUT ){ | 546 | else if( ret == WAIT_TIMEOUT ){ |
546 | return 1; | 547 | return JOIN_ETIMEDOUT; |
547 | } | 548 | } |
548 | return 2; | 549 | return JOIN_FAIL; |
549 | #else | 550 | #else |
550 | int rc; | 551 | int rc; |
551 | if(timeout == 0){ | 552 | if(timeout == 0){ |
552 | rc = pthread_kill(this->thread, 0); | 553 | rc = pthread_kill(this->thread, 0); |
553 | if(rc == 0){ /* still alive */ | 554 | if(rc == 0){ /* still alive */ |
554 | rc = ETIMEDOUT; | 555 | rc = JOIN_ETIMEDOUT; |
555 | } | 556 | } |
556 | if(rc == ESRCH){ /*thread dead*/ | 557 | if(rc == ESRCH){ /*thread dead*/ |
557 | FLAG_SET(this, TSTATE_JOINED); | 558 | FLAG_SET(this, TSTATE_JOINED); |
558 | rc = 0; | 559 | rc = JOIN_OK; |
559 | } | 560 | } |
560 | return rc; | 561 | return rc; |
561 | } | 562 | } |
@@ -566,6 +567,7 @@ static int llthread_join(llthread_t *this, join_timeout_t timeout) { | |||
566 | rc = pthread_join(this->thread, NULL); | 567 | rc = pthread_join(this->thread, NULL); |
567 | if((rc == 0) || (rc == ESRCH)) { | 568 | if((rc == 0) || (rc == ESRCH)) { |
568 | FLAG_SET(this, TSTATE_JOINED); | 569 | FLAG_SET(this, TSTATE_JOINED); |
570 | rc = JOIN_OK; | ||
569 | } | 571 | } |
570 | return rc; | 572 | return rc; |
571 | #endif | 573 | #endif |