[Beignet] [PATCH] Runtime: Add assert of pthread_getspecific.

Yang, Rong R rong.r.yang at intel.com
Thu Aug 4 07:59:57 UTC 2016


Ping for review.

> -----Original Message-----
> From: Yang, Rong R
> Sent: Monday, June 6, 2016 18:10
> To: beignet at lists.freedesktop.org
> Cc: Yang, Rong R <rong.r.yang at intel.com>
> Subject: [PATCH] Runtime: Add assert of pthread_getspecific.
> 
> Signed-off-by: Yang Rong <rong.r.yang at intel.com>
> ---
>  src/cl_thread.c | 15 +++++++++------
>  1 file changed, 9 insertions(+), 6 deletions(-)
> 
> diff --git a/src/cl_thread.c b/src/cl_thread.c index 40929f2..0780513 100644
> --- a/src/cl_thread.c
> +++ b/src/cl_thread.c
> @@ -145,7 +145,7 @@ cl_event get_current_event(cl_command_queue
> queue)  {
>    thread_spec_data* spec = __create_thread_spec_data(queue, 1);
>    int *magic = pthread_getspecific(thread_magic_key);
> -  assert(spec && spec->thread_magic == *magic);
> +  assert(spec && magic && spec->thread_magic == *magic);
>    return spec->current_event;
>  }
> 
> @@ -153,7 +153,7 @@ cl_event get_last_event(cl_command_queue queue)
> {
>    thread_spec_data* spec = __create_thread_spec_data(queue, 1);
>    int *magic = pthread_getspecific(thread_magic_key);
> -  assert(spec && spec->thread_magic == *magic);
> +  assert(spec && magic && spec->thread_magic == *magic);
>    return spec->last_event;
>  }
> 
> @@ -161,7 +161,7 @@ void set_current_event(cl_command_queue queue,
> cl_event e)  {
>    thread_spec_data* spec = __create_thread_spec_data(queue, 1);
>    int *magic = pthread_getspecific(thread_magic_key);
> -  assert(spec && spec->thread_magic == *magic);
> +  assert(spec && magic && spec->thread_magic == *magic);
>    spec->current_event = e;
>  }
> 
> @@ -169,7 +169,7 @@ void set_last_event(cl_command_queue queue,
> cl_event e)  {
>    thread_spec_data* spec = __create_thread_spec_data(queue, 1);
>    int *magic = pthread_getspecific(thread_magic_key);
> -  assert(spec && spec->thread_magic == *magic);
> +  assert(spec && magic && spec->thread_magic == *magic);
>    spec->last_event = e;
>  }
> 
> @@ -204,6 +204,7 @@ cl_gpgpu cl_get_thread_gpgpu(cl_command_queue
> queue)
>    if(!spec)
>      return NULL;
>    int *magic = pthread_getspecific(thread_magic_key);
> +  assert(magic);
> 
>    if (!spec->thread_magic && spec->thread_magic != *magic) {
>      //We may get the slot from last thread. So free the resource.
> @@ -232,7 +233,7 @@ void cl_set_thread_batch_buf(cl_command_queue
> queue, void* buf)
>    thread_spec_data* spec = __create_thread_spec_data(queue, 1);
>    int *magic = pthread_getspecific(thread_magic_key);
> 
> -  assert(spec && spec->thread_magic == *magic);
> +  assert(spec && magic && spec->thread_magic == *magic);
> 
>    if (spec->thread_batch_buf) {
>      cl_gpgpu_unref_batch_buf(spec->thread_batch_buf);
> @@ -244,7 +245,7 @@ void* cl_get_thread_batch_buf(cl_command_queue
> queue) {
>    thread_spec_data* spec = __create_thread_spec_data(queue, 1);
>    int *magic = pthread_getspecific(thread_magic_key);
> 
> -  assert(spec && spec->thread_magic == *magic);
> +  assert(spec && magic && spec->thread_magic == *magic);
> 
>    return spec->thread_batch_buf;
>  }
> @@ -256,6 +257,7 @@ void cl_invalid_thread_gpgpu(cl_command_queue
> queue)
>    thread_spec_data* spec = NULL;
> 
>    pthread_mutex_lock(&thread_private->thread_data_lock);
> +  assert(id);
>    spec = thread_private->threads_data[*id];
>    assert(spec);
>    pthread_mutex_unlock(&thread_private->thread_data_lock);
> @@ -277,6 +279,7 @@ cl_gpgpu cl_thread_gpgpu_take(cl_command_queue
> queue)
>    thread_spec_data* spec = NULL;
> 
>    pthread_mutex_lock(&thread_private->thread_data_lock);
> +  assert(id);
>    spec = thread_private->threads_data[*id];
>    assert(spec);
>    pthread_mutex_unlock(&thread_private->thread_data_lock);
> --
> 2.1.4



More information about the Beignet mailing list