X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/50486ccd16de39a3659592fab44adfaf3104a086..20236570d4e582e47cb60882e9bae358dd430ee0:/include/xbt/parmap.h diff --git a/include/xbt/parmap.h b/include/xbt/parmap.h index b2e66dc7a4..51e5cc6ea7 100644 --- a/include/xbt/parmap.h +++ b/include/xbt/parmap.h @@ -1,6 +1,6 @@ /* A thread pool. */ -/* Copyright (c) 2007, 2009, 2010. The SimGrid Team. +/* Copyright (c) 2007, 2009-2014. The SimGrid Team. * All rights reserved. */ /* This program is free software; you can redistribute it and/or modify it @@ -16,6 +16,7 @@ SG_BEGIN_DECL() /** \addtogroup XBT_parmap + * \ingroup XBT_misc * \brief Parallel map. * * A function is applied to all elements of a dynar in parallel with n worker @@ -38,7 +39,8 @@ typedef struct s_xbt_parmap *xbt_parmap_t; typedef enum { XBT_PARMAP_POSIX, /**< use POSIX synchronization primitives */ XBT_PARMAP_FUTEX, /**< use Linux futex system call */ - XBT_PARMAP_BUSY_WAIT /**< busy waits (no system calls, maximum CPU usage) */ + XBT_PARMAP_BUSY_WAIT, /**< busy waits (no system calls, maximum CPU usage) */ + XBT_PARMAP_DEFAULT /**< futex if available, posix otherwise */ } e_xbt_parmap_mode_t; XBT_PUBLIC(xbt_parmap_t) xbt_parmap_new(unsigned int num_workers, @@ -50,6 +52,16 @@ XBT_PUBLIC(void) xbt_parmap_apply(xbt_parmap_t parmap, xbt_dynar_t data); XBT_PUBLIC(void*) xbt_parmap_next(xbt_parmap_t parmap); +#ifdef HAVE_MC +XBT_PUBLIC(xbt_parmap_t) xbt_parmap_mc_new(unsigned int num_workers, + e_xbt_parmap_mode_t mode); + +XBT_PUBLIC(int) xbt_parmap_mc_apply(xbt_parmap_t parmap, + int_f_pvoid_pvoid_t fun, + void *data, + unsigned int length, + void* ref_snapshot); +#endif /** \} */ SG_END_DECL()