Просмотр исходного кода

data interface: update starpu_handle_unpack_data to free memory after calling the data unpacking operation

Nathalie Furmento лет назад: 12
Родитель
Сommit
92c4675f7a
2 измененных файлов с 6 добавлено и 2 удалено
  1. 2 1
      doc/chapters/basic-api.texi
  2. 4 1
      src/datawizard/interfaces/data_interface.c

+ 2 - 1
doc/chapters/basic-api.texi

@@ -772,7 +772,8 @@ The function also sets @var{count} to the size of the data handle by calling
 Unpack in @var{handle} the data located at @var{ptr} of size
 @var{count} as described by the interface of the data. The interface
 registered at @var{handle} must define a unpacking operation
-(@pxref{struct starpu_data_interface_ops}).
+(@pxref{struct starpu_data_interface_ops}). The memory at the address @code{ptr}
+is freed after calling the data unpacking operation.
 @end deftypefun
 
 @node Accessing Variable Data Interfaces

+ 4 - 1
src/datawizard/interfaces/data_interface.c

@@ -686,7 +686,10 @@ int starpu_handle_pack_data(starpu_data_handle_t handle, void **ptr, size_t *cou
 int starpu_handle_unpack_data(starpu_data_handle_t handle, void *ptr, size_t count)
 {
 	STARPU_ASSERT(handle->ops->unpack_data);
-	return handle->ops->unpack_data(handle, _starpu_get_local_memory_node(), ptr, count);
+	int ret;
+	ret = handle->ops->unpack_data(handle, _starpu_get_local_memory_node(), ptr, count);
+	free(ptr);
+	return ret;
 }
 
 size_t starpu_handle_get_size(starpu_data_handle_t handle)