Add a wrapper for MPI_Waitany.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@8092 a5019735-40e9-0310-863c-91ae7b9d1cf9
diff --git a/auxprogs/libmpiwrap.c b/auxprogs/libmpiwrap.c
index 0bdf655..10858c1 100644
--- a/auxprogs/libmpiwrap.c
+++ b/auxprogs/libmpiwrap.c
@@ -1403,6 +1403,36 @@
    return err;
 }
 
+/* --- Waitany --- */
+int WRAPPER_FOR(PMPI_Waitany)( int count,
+                               MPI_Request* requests,
+                               int* index,
+                               MPI_Status* status )
+{
+   MPI_Request* requests_before = NULL;
+   OrigFn       fn;
+   int          err, i;
+   VALGRIND_GET_ORIG_FN(fn);
+   before("Waitany");
+   if (0) fprintf(stderr, "Waitany: %d\n", count);
+   check_mem_is_addressable_untyped(index, sizeof(int));
+   check_mem_is_addressable_untyped(status, sizeof(MPI_Status));
+   for (i = 0; i < count; i++) {
+      check_mem_is_defined_untyped(&requests[i], sizeof(MPI_Request));
+   }
+   requests_before = clone_Request_array( count, requests );
+   CALL_FN_W_WWWW(err, fn, count,requests,index,status);
+   if (err == MPI_SUCCESS && *index >= 0 && *index < count) {
+      maybe_complete(False/*err in status?*/, 
+                     requests_before[*index], requests[*index], status);
+      make_mem_defined_if_addressable_untyped(status, sizeof(MPI_Status));
+   }
+   if (requests_before)
+      free(requests_before);
+   after("Waitany", err);
+   return err;
+}
+
 /* --- Waitall --- */
 int WRAPPER_FOR(PMPI_Waitall)( int count, 
                                MPI_Request* requests,
@@ -2542,7 +2572,7 @@
 DEFAULT_WRAPPER_W_3W(Unpublish_name)
 DEFAULT_WRAPPER_W_7W(Unpack_external)
 /* DEFAULT_WRAPPER_W_3W(Waitall) */
-DEFAULT_WRAPPER_W_4W(Waitany)
+/* DEFAULT_WRAPPER_W_4W(Waitany) */
 /* DEFAULT_WRAPPER_W_2W(Wait) */
 DEFAULT_WRAPPER_W_5W(Waitsome)
 DEFAULT_WRAPPER_W_1W(Win_c2f)