2 * Copyright (C) by Argonne National Laboratory
3 * See COPYRIGHT in top-level directory
7 Having attr delete function to delete another attribute.
15 int test_communicator(MPI_Comm comm);
17 int main(int argc, char **argv)
20 MTest_Init(&argc, &argv);
21 errs = test_communicator(MPI_COMM_WORLD);
23 return MTestReturnValue(errs);
26 static int key2_delete_fn(MPI_Comm comm, int keyval, void *attribute_val, void *extra_state)
28 MPI_Comm_delete_attr(comm, key1);
29 MPI_Comm_delete_attr(comm, key3);
33 int test_communicator(MPI_Comm comm)
38 MPI_Comm_rank(comm, &rank);
39 MPI_Comm_size(comm, &size);
41 MPI_Comm_create_keyval(MPI_NULL_COPY_FN, MPI_NULL_DELETE_FN, &key1, NULL);
42 MPI_Comm_create_keyval(MPI_NULL_COPY_FN, key2_delete_fn, &key2, NULL);
43 MPI_Comm_create_keyval(MPI_NULL_COPY_FN, MPI_NULL_DELETE_FN, &key3, NULL);
45 MPI_Comm_set_attr(comm, key1, (void *) (MPI_Aint) rank);
46 MPI_Comm_set_attr(comm, key2, (void *) (MPI_Aint) (rank + 100));
47 MPI_Comm_set_attr(comm, key3, (void *) (MPI_Aint) (rank + 200));
49 MPI_Comm_delete_attr(comm, key2);
51 MPI_Comm_free_keyval(&key1);
52 MPI_Comm_free_keyval(&key2);
53 MPI_Comm_free_keyval(&key3);