[mpich2-commits] r5575 - mpich2/trunk/src/mpid/ch3/channels/nemesis/nemesis/netmod/newmad

mercierg at mcs.anl.gov mercierg at mcs.anl.gov
Tue Oct 27 04:30:47 CDT 2009


Author: mercierg
Date: 2009-10-27 04:30:47 -0500 (Tue, 27 Oct 2009)
New Revision: 5575

Added:
   mpich2/trunk/src/mpid/ch3/channels/nemesis/nemesis/netmod/newmad/newmad_alloc.c
Log:
Forgot to add this file


Added: mpich2/trunk/src/mpid/ch3/channels/nemesis/nemesis/netmod/newmad/newmad_alloc.c
===================================================================
--- mpich2/trunk/src/mpid/ch3/channels/nemesis/nemesis/netmod/newmad/newmad_alloc.c	                        (rev 0)
+++ mpich2/trunk/src/mpid/ch3/channels/nemesis/nemesis/netmod/newmad/newmad_alloc.c	2009-10-27 09:30:47 UTC (rev 5575)
@@ -0,0 +1,127 @@
+/* -*- Mode: C; c-basic-offset:4 ; -*- */
+/*
+ * (C) 2006 by Argonne National Laboratory.
+ *     See COPYRIGHT in top-level directory. 
+ */
+
+#include "newmad_impl.h"
+
+#define NUM_REQ (1024)
+
+static MPID_nem_newmad_internal_req_t *MPID_nem_newmad_internal_req_queue_head;
+
+#undef FUNCNAME
+#define FUNCNAME MPID_nem_newmad_internal_req_queue_init
+#undef FCNAME
+#define FCNAME MPIDI_QUOTE(FUNCNAME)
+int MPID_nem_newmad_internal_req_queue_init(void)
+{
+    MPID_nem_newmad_internal_req_t *curr_req;
+    MPID_nem_newmad_internal_req_t *next_req;
+    int mpi_errno = MPI_SUCCESS;
+    int index;
+    
+    MPID_nem_newmad_internal_req_queue_head = (MPID_nem_newmad_internal_req_t *)MPIU_Malloc(sizeof(MPID_nem_newmad_internal_req_t));
+    curr_req = MPID_nem_newmad_internal_req_queue_head;
+
+    for(index = 0 ; index < (NUM_REQ - 1) ; index++)
+    {
+	next_req = (MPID_nem_newmad_internal_req_t *)MPIU_Malloc(sizeof(MPID_nem_newmad_internal_req_t));
+	curr_req->next = next_req;
+	curr_req = next_req;
+    }
+
+ fn_exit:
+    return mpi_errno;
+ fn_fail: ATTRIBUTE((unused))
+    goto fn_exit;
+}
+
+#undef FUNCNAME
+#define FUNCNAME MPID_nem_newmad_internal_req_queue_destroy
+#undef FCNAME
+#define FCNAME MPIDI_QUOTE(FUNCNAME)
+int MPID_nem_newmad_internal_req_queue_destroy(void)
+{
+    MPID_nem_newmad_internal_req_t *curr_req;
+    MPID_nem_newmad_internal_req_t *req_to_del;
+    int mpi_errno = MPI_SUCCESS;
+
+    curr_req = MPID_nem_newmad_internal_req_queue_head;
+    
+    if(curr_req->next == NULL)
+    {
+	MPIU_Free(curr_req);
+    }
+    else
+    {
+	do
+	{
+	    req_to_del = curr_req;
+	    curr_req = curr_req->next;
+	    MPIU_Free(req_to_del);
+	}
+	while(curr_req != NULL);
+    }    
+    
+ fn_exit:
+    return mpi_errno;
+ fn_fail: ATTRIBUTE((unused))
+    goto fn_exit;
+}
+
+
+#undef FUNCNAME
+#define FUNCNAME MPID_nem_newmad_internal_req_dequeue
+#undef FCNAME
+#define FCNAME MPIDI_QUOTE(FUNCNAME)
+int MPID_nem_newmad_internal_req_dequeue(MPID_nem_newmad_internal_req_t **param_req)
+{
+   int mpi_errno = MPI_SUCCESS;
+
+   *param_req = MPID_nem_newmad_internal_req_queue_head;   
+   MPID_nem_newmad_internal_req_queue_head = (*param_req)->next;
+   (*param_req)->next = NULL;
+   
+   if(MPID_nem_newmad_internal_req_queue_head == NULL)
+   {
+       MPID_nem_newmad_internal_req_t *curr_req;
+       MPID_nem_newmad_internal_req_t *next_req;
+       int index;
+
+       MPID_nem_newmad_internal_req_queue_head = (MPID_nem_newmad_internal_req_t *)MPIU_Malloc(sizeof(MPID_nem_newmad_internal_req_t));
+       curr_req = MPID_nem_newmad_internal_req_queue_head;
+       for(index = 0 ; index < (NUM_REQ - 1) ; index++)
+       {
+	   next_req = (MPID_nem_newmad_internal_req_t *)MPIU_Malloc(sizeof(MPID_nem_newmad_internal_req_t));
+	   curr_req->next = next_req;
+	   curr_req = next_req;
+       }       
+   }
+
+ fn_exit:
+   return mpi_errno;
+ fn_fail: ATTRIBUTE((unused))
+   goto fn_exit;
+}
+
+
+#undef FUNCNAME
+#define FUNCNAME MPID_nem_newmad_internal_req_enqueue
+#undef FCNAME
+#define FCNAME MPIDI_QUOTE(FUNCNAME)
+int MPID_nem_newmad_internal_req_enqueue(MPID_nem_newmad_internal_req_t *req)
+{
+    int mpi_errno = MPI_SUCCESS;
+    
+    MPIU_Assert(MPID_nem_newmad_internal_req_queue_head != NULL);
+    req->next = MPID_nem_newmad_internal_req_queue_head;
+    MPID_nem_newmad_internal_req_queue_head = req;
+    
+ fn_exit:
+    return mpi_errno;
+ fn_fail: ATTRIBUTE((unused))
+    goto fn_exit;
+}
+
+



More information about the mpich2-commits mailing list