Changeset 0965ae7d651c32b206ed7aa92243d7fa497145c9
- Timestamp:
- 28/08/08 23:03:12
(3 months ago)
- Author:
- Rémi Denis-Courmont <rdenis@simphalempin.com>
- git-committer:
- Rémi Denis-Courmont <rdenis@simphalempin.com> 1219957392 +0300
- git-parent:
[1014a2aa09d4c4a529407b221676f9138416660b]
- git-author:
- Rémi Denis-Courmont <rdenis@simphalempin.com> 1219957028 +0300
- Message:
vlc_join: check for deadlock
-
Files:
-
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
| r0a908c0 |
r0965ae7 |
|
| 180 | 180 | VLC_EXPORT( int, vlc_clone, (vlc_thread_t *, void * (*) (void *), void *, int) ); |
|---|
| 181 | 181 | VLC_EXPORT( void, vlc_cancel, (vlc_thread_t) ); |
|---|
| 182 | | VLC_EXPORT( int, vlc_join, (vlc_thread_t, void **) ); |
|---|
| | 182 | VLC_EXPORT( void, vlc_join, (vlc_thread_t, void **) ); |
|---|
| 183 | 183 | VLC_EXPORT (void, vlc_control_cancel, (int cmd, ...)); |
|---|
| 184 | 184 | |
|---|
| r0bdeef7 |
r0965ae7 |
|
| 622 | 622 | * @return 0 on success, a standard error code otherwise. |
|---|
| 623 | 623 | */ |
|---|
| 624 | | int vlc_join (vlc_thread_t handle, void **result) |
|---|
| 625 | | { |
|---|
| 626 | | #if defined( LIBVLC_USE_PTHREAD ) |
|---|
| 627 | | return pthread_join (handle, result); |
|---|
| | 624 | void vlc_join (vlc_thread_t handle, void **result) |
|---|
| | 625 | { |
|---|
| | 626 | #if defined( LIBVLC_USE_PTHREAD ) |
|---|
| | 627 | int val = pthread_join (handle, result); |
|---|
| | 628 | if (val) |
|---|
| | 629 | vlc_pthread_fatal ("joining thread", val, __FILE__, __LINE__); |
|---|
| 628 | 630 | |
|---|
| 629 | 631 | #elif defined( UNDER_CE ) || defined( WIN32 ) |
|---|
| … | … | |
| 637 | 639 | *result = handle->data; |
|---|
| 638 | 640 | free (handle); |
|---|
| 639 | | return 0; |
|---|
| 640 | 641 | |
|---|
| 641 | 642 | #elif defined( HAVE_KERNEL_SCHEDULER_H ) |
|---|
| 642 | 643 | int32_t exit_value; |
|---|
| 643 | | ret = (B_OK == wait_for_thread( p_priv->thread_id, &exit_value )); |
|---|
| 644 | | if( !ret && result ) |
|---|
| | 644 | int val = (B_OK == wait_for_thread( p_priv->thread_id, &exit_value )); |
|---|
| | 645 | if( !val && result ) |
|---|
| 645 | 646 | *result = (void *)exit_value; |
|---|
| 646 | 647 | |
|---|
| 647 | | return ret; |
|---|
| 648 | 648 | #endif |
|---|
| 649 | 649 | } |
|---|