|
@@ -1,6 +1,6 @@
|
|
|
|
|
|
*
|
|
|
- * Copyright (C) 2011,2013,2014,2016 Université de Bordeaux
|
|
|
+ * Copyright (C) 2011,2013,2014,2016, 2020 Université de Bordeaux
|
|
|
* Copyright (C) 2011-2013 Inria
|
|
|
* Copyright (C) 2011-2013,2017 CNRS
|
|
|
*
|
|
@@ -20,20 +20,27 @@
|
|
|
#include "../helper.h"
|
|
|
|
|
|
|
|
|
- * Test that when using starpu_data_acquire_cb, the callback is properly called
|
|
|
+ * Test that when using starpu_data_acquire_cb, the callback_w is properly called
|
|
|
*/
|
|
|
|
|
|
unsigned token = 0;
|
|
|
starpu_data_handle_t token_handle;
|
|
|
|
|
|
static
|
|
|
-void callback(void *arg)
|
|
|
+void callback_w(void *arg)
|
|
|
{
|
|
|
(void)arg;
|
|
|
token = 42;
|
|
|
starpu_data_release(token_handle);
|
|
|
}
|
|
|
|
|
|
+static
|
|
|
+void callback_r(void *arg)
|
|
|
+{
|
|
|
+ (void)arg;
|
|
|
+ starpu_data_release(token_handle);
|
|
|
+}
|
|
|
+
|
|
|
int main(int argc, char **argv)
|
|
|
{
|
|
|
int ret;
|
|
@@ -42,8 +49,48 @@ int main(int argc, char **argv)
|
|
|
if (ret == -ENODEV) return STARPU_TEST_SKIPPED;
|
|
|
STARPU_CHECK_RETURN_VALUE(ret, "starpu_init");
|
|
|
|
|
|
+ starpu_variable_data_register(&token_handle, -1, 0, sizeof(unsigned));
|
|
|
+ starpu_data_acquire_cb(token_handle, STARPU_W, callback_w, NULL);
|
|
|
+ starpu_data_acquire_cb(token_handle, STARPU_R, callback_r, NULL);
|
|
|
+ starpu_data_unregister(token_handle);
|
|
|
+ STARPU_ASSERT(token == 42);
|
|
|
+
|
|
|
+ token = 0;
|
|
|
+
|
|
|
+ starpu_variable_data_register(&token_handle, -1, 0, sizeof(unsigned));
|
|
|
+ starpu_data_acquire(token_handle, STARPU_W);
|
|
|
+ starpu_data_acquire_cb(token_handle, STARPU_R, callback_r, NULL);
|
|
|
+ starpu_data_release(token_handle);
|
|
|
+ starpu_data_unregister(token_handle);
|
|
|
+
|
|
|
+ token = 0;
|
|
|
+
|
|
|
starpu_variable_data_register(&token_handle, STARPU_MAIN_RAM, (uintptr_t)&token, sizeof(unsigned));
|
|
|
- starpu_data_acquire_cb(token_handle, STARPU_RW, callback, NULL);
|
|
|
+
|
|
|
+ starpu_data_acquire_cb(token_handle, STARPU_R, callback_r, NULL);
|
|
|
+ starpu_data_acquire_cb(token_handle, STARPU_R, callback_r, NULL);
|
|
|
+ starpu_data_acquire_cb(token_handle, STARPU_W, callback_w, NULL);
|
|
|
+ starpu_data_acquire_cb(token_handle, STARPU_W, callback_w, NULL);
|
|
|
+ starpu_data_acquire_cb(token_handle, STARPU_R, callback_r, NULL);
|
|
|
+ starpu_data_acquire_cb(token_handle, STARPU_R, callback_r, NULL);
|
|
|
+ starpu_data_acquire_cb(token_handle, STARPU_RW, callback_w, NULL);
|
|
|
+ starpu_data_acquire_cb(token_handle, STARPU_RW, callback_w, NULL);
|
|
|
+ starpu_data_acquire_cb(token_handle, STARPU_R, callback_r, NULL);
|
|
|
+ starpu_data_acquire_cb(token_handle, STARPU_R, callback_r, NULL);
|
|
|
+
|
|
|
+ starpu_data_acquire(token_handle, STARPU_W);
|
|
|
+
|
|
|
+ starpu_data_acquire_cb(token_handle, STARPU_R, callback_r, NULL);
|
|
|
+ starpu_data_acquire_cb(token_handle, STARPU_R, callback_r, NULL);
|
|
|
+ starpu_data_acquire_cb(token_handle, STARPU_W, callback_w, NULL);
|
|
|
+ starpu_data_acquire_cb(token_handle, STARPU_W, callback_w, NULL);
|
|
|
+ starpu_data_acquire_cb(token_handle, STARPU_R, callback_r, NULL);
|
|
|
+ starpu_data_acquire_cb(token_handle, STARPU_R, callback_r, NULL);
|
|
|
+ starpu_data_acquire_cb(token_handle, STARPU_RW, callback_w, NULL);
|
|
|
+ starpu_data_acquire_cb(token_handle, STARPU_RW, callback_w, NULL);
|
|
|
+ starpu_data_acquire_cb(token_handle, STARPU_R, callback_r, NULL);
|
|
|
+ starpu_data_acquire_cb(token_handle, STARPU_R, callback_r, NULL);
|
|
|
+ starpu_data_release(token_handle);
|
|
|
|
|
|
starpu_data_unregister(token_handle);
|
|
|
|