From 1b3ef52aafb46cf06757353f5a85f3aa2f5c38a2 Mon Sep 17 00:00:00 2001 From: Arnaud Giersch Date: Thu, 10 Mar 2022 11:04:09 +0100 Subject: [PATCH] Use std::function for smpi_comm_copy_data_callback. --- src/smpi/internals/smpi_global.cpp | 10 +++------- src/smpi/mpi/smpi_request.cpp | 2 +- 2 files changed, 4 insertions(+), 8 deletions(-) diff --git a/src/smpi/internals/smpi_global.cpp b/src/smpi/internals/smpi_global.cpp index 548bee4083..24ae088863 100644 --- a/src/smpi/internals/smpi_global.cpp +++ b/src/smpi/internals/smpi_global.cpp @@ -91,8 +91,8 @@ static simgrid::config::Flag smpi_np("smpi/np", "Number of processes to be static simgrid::config::Flag smpi_map("smpi/map", "Display the mapping between nodes and processes", 0); -void (*smpi_comm_copy_data_callback)(simgrid::kernel::activity::CommImpl*, void*, - size_t) = &smpi_comm_copy_buffer_callback; +std::function smpi_comm_copy_data_callback = + &smpi_comm_copy_buffer_callback; simgrid::smpi::ActorExt* smpi_process() { @@ -129,11 +129,7 @@ void smpi_process_set_user_data(void *data){ void smpi_comm_set_copy_data_callback(void (*callback) (smx_activity_t, void*, size_t)) { - static void (*saved_callback)(smx_activity_t, void*, size_t); - saved_callback = callback; - smpi_comm_copy_data_callback = [](simgrid::kernel::activity::CommImpl* comm, void* buff, size_t size) { - saved_callback(comm, buff, size); - }; + smpi_comm_copy_data_callback = callback; } static void memcpy_private(void* dest, const void* src, const std::vector>& private_blocks) diff --git a/src/smpi/mpi/smpi_request.cpp b/src/smpi/mpi/smpi_request.cpp index a4785c81e0..77885e4bc6 100644 --- a/src/smpi/mpi/smpi_request.cpp +++ b/src/smpi/mpi/smpi_request.cpp @@ -33,7 +33,7 @@ static simgrid::config::Flag smpi_test_sleep( std::vector smpi_ois_values; -extern void (*smpi_comm_copy_data_callback)(simgrid::kernel::activity::CommImpl*, void*, size_t); +extern std::function smpi_comm_copy_data_callback; namespace simgrid{ namespace smpi{ -- 2.20.1