File: clSetMemObjectDestructorCallback.c

package info (click to toggle)
pocl 7.1-1
  • links: PTS, VCS
  • area: main
  • in suites: experimental
  • size: 29,768 kB
  • sloc: lisp: 151,669; ansic: 135,425; cpp: 65,801; python: 1,846; sh: 1,084; ruby: 255; pascal: 231; tcl: 180; makefile: 174; asm: 81; java: 72; xml: 49
file content (28 lines) | stat: -rw-r--r-- 848 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include "pocl_cl.h"

CL_API_ENTRY cl_int CL_API_CALL
POname (clSetMemObjectDestructorCallback) (
  cl_mem mem,
  void (CL_CALLBACK *pfn_notify) (cl_mem /* memobj */, void * /*user_data*/),
  void *user_data) CL_API_SUFFIX__VERSION_1_1
{
  mem_destructor_callback_t *callback;

  POCL_RETURN_ERROR_COND ((!IS_CL_OBJECT_VALID (mem)), CL_INVALID_MEM_OBJECT);
  POCL_RETURN_ERROR_COND((pfn_notify == NULL), CL_INVALID_VALUE);

  callback = (mem_destructor_callback_t *)malloc (
      sizeof (mem_destructor_callback_t));
  if (callback == NULL)
    return CL_OUT_OF_HOST_MEMORY;

  POCL_LOCK_OBJ (mem);
  callback->pfn_notify = pfn_notify;
  callback->user_data  = user_data;
  callback->next = mem->destructor_callbacks;
  mem->destructor_callbacks = callback;
  POCL_UNLOCK_OBJ (mem);

  return CL_SUCCESS;
}
POsym(clSetMemObjectDestructorCallback)