void MPE_Counter_service( MPI_Comm comm ) 
   { 
       static int counter = 0; 
       int requester, flag; 
       MPI_Status status; 
       /* Process all pending messages */ 
       do { 
          MPI_Iprobe(MPI_ANY_SOURCE, COUNTER, comm, &flag, &status ); 
          if (flag) { 
             requester = status.MPI_SOURCE; 
             MPI_Recv(MPI_BOTTOM, 0, MPI_INT, requester, COUNTER, 
                      comm, &status ); 
             counter++; 
             MPI_Send(&counter, 1, MPI_INT, requester,  
                      COUNTER, comm ); 
	  } 
       } while (flag); 
    }