Parcourir la source

Add the size to the disk plug method

Samuel Thibault il y a 10 ans
Parent
commit
664964417e

+ 3 - 3
doc/doxygen/chapters/api/data_out_of_core.doxy

@@ -30,9 +30,9 @@ into \p buf. Returns the actual number of read bytes.
 \var int (*starpu_disk_ops::write)(void *base, void *obj, const void *buf, off_t offset, size_t size)
 Write \p size bytes of data to \p obj in \p base, at offset \p offset, from \p buf. Returns 0 on success.
 
-\var void* (*starpu_disk_ops::plug) (void *parameters)
-Connect a disk memory at location \p parameter, and return a base as void*,
-which will be passed by StarPU to all other methods.
+\var void* (*starpu_disk_ops::plug) (void *parameters, size_t size)
+Connect a disk memory at location \p parameter with size \p size, and return a
+base as void*, which will be passed by StarPU to all other methods.
 
 \var void (*starpu_disk_ops::unplug) (void* base)
 Disconnect a disk memory \p base.

+ 1 - 1
include/starpu_disk.h

@@ -22,7 +22,7 @@
 
 /* list of functions to use on disk */
 struct starpu_disk_ops {
-	 void *  (*plug)   (void *parameter);
+	 void *  (*plug)   (void *parameter, size_t size);
 	 void    (*unplug) (void *base);
 
 	 int    (*bandwidth)    (unsigned node);

+ 1 - 1
src/core/disk.c

@@ -64,7 +64,7 @@ starpu_disk_register(struct starpu_disk_ops * func, void *parameter, size_t size
 	_starpu_register_bus(memory_node, STARPU_MAIN_RAM);
 
 	/* connect disk */
-	void * base = func->plug(parameter);
+	void * base = func->plug(parameter, size);
 
 	/* remember it */
 	add_disk_in_list(memory_node,func,base);

+ 1 - 1
src/core/disk_ops/disk_leveldb.cpp

@@ -220,7 +220,7 @@ starpu_leveldb_full_write (unsigned node, void * base, void * obj, void * ptr, s
 
 /* create a new copy of parameter == base */
 static void * 
-starpu_leveldb_plug (void *parameter)
+starpu_leveldb_plug (void *parameter, size_t size STARPU_ATTRIBUTE_UNUSED)
 {
 	struct starpu_leveldb_base * tmp = (struct starpu_leveldb_base *) malloc(sizeof(struct starpu_leveldb_base));
 	STARPU_ASSERT(tmp != NULL);

+ 1 - 1
src/core/disk_ops/disk_stdio.c

@@ -250,7 +250,7 @@ static int starpu_stdio_full_write(unsigned node, void * base STARPU_ATTRIBUTE_U
 }
 
 /* create a new copy of parameter == base */
-static void *starpu_stdio_plug(void *parameter)
+static void *starpu_stdio_plug(void *parameter, size_t size STARPU_ATTRIBUTE_UNUSED)
 {
 	char * tmp = malloc(sizeof(char)*(strlen(parameter)+1));
 	STARPU_ASSERT(tmp != NULL);

+ 2 - 2
src/core/disk_ops/disk_unistd_o_direct.c

@@ -80,11 +80,11 @@ starpu_unistd_o_direct_write (void *base STARPU_ATTRIBUTE_UNUSED, void *obj, con
 
 /* create a new copy of parameter == base */
 static void * 
-starpu_unistd_o_direct_plug (void *parameter)
+starpu_unistd_o_direct_plug (void *parameter, size_t size STARPU_ATTRIBUTE_UNUSED)
 {
 	starpu_malloc_set_align(getpagesize());
 
-	return starpu_unistd_global_plug (parameter);
+	return starpu_unistd_global_plug (parameter, size);
 }
 
 struct starpu_disk_ops starpu_disk_unistd_o_direct_ops = {

+ 1 - 1
src/core/disk_ops/unistd/disk_unistd_global.c

@@ -299,7 +299,7 @@ starpu_unistd_global_full_write (unsigned node, void * base STARPU_ATTRIBUTE_UNU
 
 /* create a new copy of parameter == base */
  void * 
-starpu_unistd_global_plug (void *parameter)
+starpu_unistd_global_plug (void *parameter, size_t size STARPU_ATTRIBUTE_UNUSED)
 {
 	char * tmp = malloc(sizeof(char)*(strlen(parameter)+1));
 	STARPU_ASSERT(tmp != NULL);

+ 8 - 8
src/core/disk_ops/unistd/disk_unistd_global.h

@@ -31,17 +31,17 @@ struct starpu_unistd_global_obj {
 	starpu_pthread_mutex_t mutex;
 };
 
-void * starpu_unistd_global_alloc (struct starpu_unistd_global_obj * obj, void *base, size_t size STARPU_ATTRIBUTE_UNUSED);
-void starpu_unistd_global_free (void *base STARPU_ATTRIBUTE_UNUSED, void *obj, size_t size STARPU_ATTRIBUTE_UNUSED);
+void * starpu_unistd_global_alloc (struct starpu_unistd_global_obj * obj, void *base, size_t size);
+void starpu_unistd_global_free (void *base, void *obj, size_t size);
 void * starpu_unistd_global_open (struct starpu_unistd_global_obj * obj, void *base, void *pos, size_t size);
-void starpu_unistd_global_close (void *base STARPU_ATTRIBUTE_UNUSED, void *obj, size_t size STARPU_ATTRIBUTE_UNUSED);
-int starpu_unistd_global_read (void *base STARPU_ATTRIBUTE_UNUSED, void *obj, void *buf, off_t offset, size_t size);
-int starpu_unistd_global_write (void *base STARPU_ATTRIBUTE_UNUSED, void *obj, const void *buf, off_t offset, size_t size);
-void * starpu_unistd_global_plug (void *parameter);
+void starpu_unistd_global_close (void *base, void *obj, size_t size);
+int starpu_unistd_global_read (void *base, void *obj, void *buf, off_t offset, size_t size);
+int starpu_unistd_global_write (void *base, void *obj, const void *buf, off_t offset, size_t size);
+void * starpu_unistd_global_plug (void *parameter, size_t size);
 void starpu_unistd_global_unplug (void *base);
 int get_unistd_global_bandwidth_between_disk_and_main_ram(unsigned node);
-void* starpu_unistd_global_async_read (void *base STARPU_ATTRIBUTE_UNUSED, void *obj, void *buf, off_t offset, size_t size);
-void* starpu_unistd_global_async_write (void *base STARPU_ATTRIBUTE_UNUSED, void *obj, void *buf, off_t offset, size_t size);
+void* starpu_unistd_global_async_read (void *base, void *obj, void *buf, off_t offset, size_t size);
+void* starpu_unistd_global_async_write (void *base, void *obj, void *buf, off_t offset, size_t size);
 void starpu_unistd_global_wait_request(void * async_channel);
 int starpu_unistd_global_test_request(void * async_channel);
 void starpu_unistd_global_free_request(void * async_channel);