Procházet zdrojové kódy

we cannot use long long for the argument types, as 0 is used to notify the end of the parameters when calling starpu_insert_task

Nathalie Furmento před 11 roky
rodič
revize
4e71452926
2 změnil soubory, kde provedl 21 přidání a 20 odebrání
  1. 15 14
      include/starpu_task_util.h
  2. 6 6
      src/util/starpu_insert_task_utils.c

+ 15 - 14
include/starpu_task_util.h

@@ -31,20 +31,21 @@ extern "C"
 
 void starpu_create_sync_task(starpu_tag_t sync_tag, unsigned ndeps, starpu_tag_t *deps, void (*callback)(void *), void *callback_arg);
 
-#define STARPU_VALUE		 (1LL<<19)
-#define STARPU_CALLBACK		 (1LL<<20)
-#define STARPU_CALLBACK_WITH_ARG (1LL<<21)
-#define STARPU_CALLBACK_ARG	 (1LL<<22)
-#define STARPU_PRIORITY		 (1LL<<23)
-#define STARPU_EXECUTE_ON_NODE	 (1LL<<24)
-#define STARPU_EXECUTE_ON_DATA	 (1LL<<25)
-#define STARPU_DATA_ARRAY        (1LL<<26)
-#define STARPU_TAG               (1LL<<27)
-#define STARPU_HYPERVISOR_TAG	 (1LL<<28)
-#define STARPU_FLOPS	         (1LL<<29)
-#define STARPU_SCHED_CTX	 (1LL<<30)
-#define STARPU_PROLOGUE_CALLBACK   (1LL<<31)
-#define STARPU_PROLOGUE_CALLBACK_ARG (1LL<<32)
+#define STARPU_DATA		 (0<<16)
+#define STARPU_VALUE		 (1<<16)
+#define STARPU_CALLBACK		 (2<<16)
+#define STARPU_CALLBACK_WITH_ARG (3<<16)
+#define STARPU_CALLBACK_ARG	 (4<<16)
+#define STARPU_PRIORITY		 (5<<16)
+#define STARPU_EXECUTE_ON_NODE	 (6<<16)
+#define STARPU_EXECUTE_ON_DATA	 (7<<16)
+#define STARPU_DATA_ARRAY        (8<<16)
+#define STARPU_TAG               (9<<16)
+#define STARPU_HYPERVISOR_TAG	 (10<<16)
+#define STARPU_FLOPS	         (11<<16)
+#define STARPU_SCHED_CTX	 (12<<16)
+#define STARPU_PROLOGUE_CALLBACK   (13<<16)
+#define STARPU_PROLOGUE_CALLBACK_ARG (14<<16)
 
 int starpu_insert_task(struct starpu_codelet *cl, ...);
 

+ 6 - 6
src/util/starpu_insert_task_utils.c

@@ -45,14 +45,14 @@ void starpu_task_insert_callback_wrapper(void *_cl_arg_wrapper)
 
 size_t _starpu_insert_task_get_arg_size(va_list varg_list)
 {
-	long long int arg_type;
+	int arg_type;
 	size_t arg_buffer_size;
 
 	arg_buffer_size = 0;
 
 	arg_buffer_size += sizeof(char);
 
-	while ((arg_type = va_arg(varg_list, long long int)) != 0)
+	while ((arg_type = va_arg(varg_list, int)) != 0)
 	{
 		if (arg_type & STARPU_R || arg_type & STARPU_W || arg_type & STARPU_SCRATCH || arg_type & STARPU_REDUX)
 		{
@@ -130,7 +130,7 @@ size_t _starpu_insert_task_get_arg_size(va_list varg_list)
 
 int _starpu_codelet_pack_args(void **arg_buffer, size_t arg_buffer_size, va_list varg_list)
 {
-	long long int arg_type;
+	int arg_type;
 	unsigned current_arg_offset = 0;
 	unsigned char nargs = 0;
 	char *_arg_buffer;
@@ -142,7 +142,7 @@ int _starpu_codelet_pack_args(void **arg_buffer, size_t arg_buffer_size, va_list
 	/* We will begin the buffer with the number of args (which is stored as a char) */
 	current_arg_offset += sizeof(char);
 
-	while((arg_type = va_arg(varg_list, long long int)) != 0)
+	while((arg_type = va_arg(varg_list, int)) != 0)
 	{
 		if (arg_type & STARPU_R || arg_type & STARPU_W || arg_type & STARPU_SCRATCH || arg_type & STARPU_REDUX)
 		{
@@ -238,7 +238,7 @@ int _starpu_codelet_pack_args(void **arg_buffer, size_t arg_buffer_size, va_list
 
 int _starpu_insert_task_create_and_submit(void *arg_buffer, size_t arg_buffer_size, struct starpu_codelet *cl, struct starpu_task **task, va_list varg_list)
 {
-	long long int arg_type;
+	int arg_type;
 	unsigned current_buffer = 0;
 
 	struct insert_task_cb_wrapper *cl_arg_wrapper = (struct insert_task_cb_wrapper *) malloc(sizeof(struct insert_task_cb_wrapper));
@@ -251,7 +251,7 @@ int _starpu_insert_task_create_and_submit(void *arg_buffer, size_t arg_buffer_si
 
 	prologue_cl_arg_wrapper->callback_func = NULL;
 
-	while((arg_type = va_arg(varg_list, long long int)) != 0)
+	while((arg_type = va_arg(varg_list, int)) != 0)
 	{
 		if (arg_type & STARPU_R || arg_type & STARPU_W || arg_type & STARPU_SCRATCH || arg_type & STARPU_REDUX)
 		{