examples/ostest: Add new error print and modify comments in cancel test.
This commit is contained in:
parent
ad9cf1aa97
commit
b169bd4641
@ -90,7 +90,9 @@ static FAR void *thread_waiter(FAR void *parameter)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Then wait -- we will never awaken from this. */
|
/* Then wait -- we will never awaken from this normaly. We will wake
|
||||||
|
* either by signal or cancellation.
|
||||||
|
*/
|
||||||
|
|
||||||
status = pthread_cond_wait(&cond, &mutex);
|
status = pthread_cond_wait(&cond, &mutex);
|
||||||
if (status != 0)
|
if (status != 0)
|
||||||
@ -98,22 +100,29 @@ static FAR void *thread_waiter(FAR void *parameter)
|
|||||||
printf("thread_waiter: ERROR pthread_cond_wait failed, status=%d\n", status);
|
printf("thread_waiter: ERROR pthread_cond_wait failed, status=%d\n", status);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Release the mutex */
|
if (!parameter)
|
||||||
|
|
||||||
printf("thread_waiter: Releasing mutex\n");
|
|
||||||
status = pthread_mutex_unlock(&mutex);
|
|
||||||
if (status != 0)
|
|
||||||
{
|
{
|
||||||
printf("thread_waiter: ERROR pthread_mutex_unlock failed, status=%d\n", status);
|
/* Release the mutex */
|
||||||
|
|
||||||
|
printf("thread_waiter: Releasing mutex\n");
|
||||||
|
status = pthread_mutex_unlock(&mutex);
|
||||||
|
if (status != 0)
|
||||||
|
{
|
||||||
|
printf("thread_waiter: ERROR pthread_mutex_unlock failed, status=%d\n", status);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Set the cancelable state */
|
||||||
|
|
||||||
|
printf("thread_waiter: Setting cancelable\n");
|
||||||
|
status = pthread_setcancelstate(PTHREAD_CANCEL_ENABLE, NULL);
|
||||||
|
if (status != 0)
|
||||||
|
{
|
||||||
|
printf("thread_waiter: ERROR pthread_setcancelstate failed, status=%d\n", status);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
else
|
||||||
/* Set the cancelable state */
|
|
||||||
|
|
||||||
printf("thread_waiter: Setting cancelable\n");
|
|
||||||
status = pthread_setcancelstate(PTHREAD_CANCEL_ENABLE, NULL);
|
|
||||||
if (status != 0)
|
|
||||||
{
|
{
|
||||||
printf("thread_waiter: ERROR pthread_setcancelstate failed, status=%d\n", status);
|
printf("thread_waiter: ERROR pthread_cond_wait returned after being cancelled!\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
printf("thread_waiter: Exit with status 0x12345678\n");
|
printf("thread_waiter: Exit with status 0x12345678\n");
|
||||||
@ -248,7 +257,9 @@ static void restart_thread(FAR void *(*entry)(FAR void *), pthread_t *waiter, in
|
|||||||
printf("restart_thread: ERROR pthread_cond_destroy failed, status=%d\n", status);
|
printf("restart_thread: ERROR pthread_cond_destroy failed, status=%d\n", status);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Destroy the mutex */
|
/* Destroy the mutex. Note that this relies on non-portable NuttX assumption,
|
||||||
|
* that it is possible to destroy a locked mutex owned by a cancelled thread.
|
||||||
|
*/
|
||||||
|
|
||||||
printf("restart_thread: Destroying mutex\n");
|
printf("restart_thread: Destroying mutex\n");
|
||||||
status = pthread_mutex_destroy(&mutex);
|
status = pthread_mutex_destroy(&mutex);
|
||||||
@ -312,7 +323,7 @@ void cancel_test(void)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Test 2: Syncrhonous Cancel ****************************************/
|
/* Test 2: Asynchronous Cancel ***************************************/
|
||||||
|
|
||||||
printf("cancel_test: Test 2: Asynchronous Cancellation\n");
|
printf("cancel_test: Test 2: Asynchronous Cancellation\n");
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user