WHAT: Removal of orte_proc_table

WHY: It is the last 'orte' class, its implementation is an abstraction violation since it assumes certain things about how the opal_hash_table is implemented, and it is not much code to remove it.

WHERE: This will necessitate minor changes in:
    btl: tcp, sctp
    oob: tcp
    routed: unity, tree
    grpcomm: basic
    iof: svc

TIMEOUT: COB Wednesday, March 5.

DESCRIPTION:
After the orte changes, we were left with only one orte 'class' left. So Ralph and I discussed the possibility of removing it, and found that the amount of code change to do so is relatively minor.

There are also a couple other good reasons to remove or revamp it:
1. The way the orte_proc_table was used was confusing (since you created an opal_hash_table and then used it as an opal_proc_table).
  2. It assumed things about the implementation of the opal_hash_table.

So with this in mind, we feel it would be good to remove it.

Attached is a patch that removes the usage of orte_proc_table. If there are no objections, I will commit it COB Wednesday (likely with a couple minor cleanups).

Index: orte/mca/oob/tcp/oob_tcp_peer.c
===================================================================
--- orte/mca/oob/tcp/oob_tcp_peer.c     (revision 17666)
+++ orte/mca/oob/tcp/oob_tcp_peer.c     (working copy)
@@ -55,7 +55,7 @@
 #include "opal/util/net.h"
 #include "opal/util/error.h"

-#include "orte/class/orte_proc_table.h"
+#include "opal/class/opal_hash_table.h"
 #include "orte/util/name_fns.h"
 #include "orte/runtime/orte_globals.h"
 #include "orte/mca/errmgr/errmgr.h"
@@ -216,14 +216,14 @@
 mca_oob_tcp_peer_t * mca_oob_tcp_peer_lookup(const orte_process_name_t* name)
 {
     int rc;
-    mca_oob_tcp_peer_t * peer, *old;
+    mca_oob_tcp_peer_t * peer = NULL, *old;
     if (NULL == name) { /* can't look this one up */
         return NULL;
     }

     OPAL_THREAD_LOCK(&mca_oob_tcp_component.tcp_lock);
-    peer = (mca_oob_tcp_peer_t*)orte_hash_table_get_proc(
-       &mca_oob_tcp_component.tcp_peers, name);
+    opal_hash_table_get_value_uint64(&mca_oob_tcp_component.tcp_peers,
+                                     orte_util_hash_name(name), (void**)&peer);
     if (NULL != peer && 0 == orte_util_compare_name_fields(ORTE_NS_CMP_ALL, 
&peer->peer_name, name)) {
         OPAL_THREAD_UNLOCK(&mca_oob_tcp_component.tcp_lock);
         return peer;
@@ -247,8 +247,8 @@
     peer->peer_retries = 0;

     /* add to lookup table */
-    if(ORTE_SUCCESS != 
orte_hash_table_set_proc(&mca_oob_tcp_component.tcp_peers, 
-        &peer->peer_name, peer)) {
+    if(OPAL_SUCCESS != 
opal_hash_table_set_value_uint64(&mca_oob_tcp_component.tcp_peers, 
+                                                        
orte_util_hash_name(&peer->peer_name), peer)) {
         MCA_OOB_TCP_PEER_RETURN(peer);
         OPAL_THREAD_UNLOCK(&mca_oob_tcp_component.tcp_lock);
         return NULL;
Index: orte/mca/oob/tcp/oob_tcp_peer.h
===================================================================
--- orte/mca/oob/tcp/oob_tcp_peer.h     (revision 17666)
+++ orte/mca/oob/tcp/oob_tcp_peer.h     (working copy)
@@ -93,7 +93,7 @@
 #define MCA_OOB_TCP_PEER_RETURN(peer)                                   \
 {                                                                       \
     mca_oob_tcp_peer_shutdown(peer);                                    \
-    orte_hash_table_remove_proc(&mca_oob_tcp_component.tcp_peers, 
&peer->peer_name); \
+    opal_hash_table_remove_value_uint64(&mca_oob_tcp_component.tcp_peers, 
orte_util_hash_name(&peer->peer_name)); \
     OPAL_FREE_LIST_RETURN(&mca_oob_tcp_component.tcp_peer_free,         \
                           &peer->super);                                \
 }
Index: orte/mca/oob/tcp/oob_tcp.c
===================================================================
--- orte/mca/oob/tcp/oob_tcp.c  (revision 17666)
+++ orte/mca/oob/tcp/oob_tcp.c  (working copy)
@@ -50,7 +50,6 @@
 #include "opal/util/net.h"
 #include "opal/class/opal_hash_table.h"

-#include "orte/class/orte_proc_table.h"
 #include "orte/mca/errmgr/errmgr.h"
 #include "orte/mca/rml/rml.h"
 #include "orte/util/name_fns.h"
@@ -1125,12 +1124,12 @@

 int mca_oob_tcp_resolve(mca_oob_tcp_peer_t* peer)
 {
-    mca_oob_tcp_addr_t* addr;
+    mca_oob_tcp_addr_t* addr = NULL;

     /* if the address is already cached - simply return it */
     OPAL_THREAD_LOCK(&mca_oob_tcp_component.tcp_lock);
-    addr = (mca_oob_tcp_addr_t 
*)orte_hash_table_get_proc(&mca_oob_tcp_component.tcp_peer_names,
-         &peer->peer_name);
+    opal_hash_table_get_value_uint64(&mca_oob_tcp_component.tcp_peer_names,
+         orte_util_hash_name(&peer->peer_name), (void**)&addr);
     OPAL_THREAD_UNLOCK(&mca_oob_tcp_component.tcp_lock);
     if(NULL != addr) {
          mca_oob_tcp_peer_resolved(peer, addr);
@@ -1459,23 +1458,26 @@
 int mca_oob_tcp_set_addr(const orte_process_name_t* name, const char* uri)
 {
     struct sockaddr_storage inaddr;
-    mca_oob_tcp_addr_t* addr;
-    mca_oob_tcp_peer_t* peer;
+    mca_oob_tcp_addr_t* addr = NULL;
+    mca_oob_tcp_peer_t* peer = NULL;
     int rc;
     if((rc = mca_oob_tcp_parse_uri(uri, (struct sockaddr*) &inaddr)) != 
ORTE_SUCCESS) {
         return rc;
     }

     OPAL_THREAD_LOCK(&mca_oob_tcp_component.tcp_lock);
-    addr = 
(mca_oob_tcp_addr_t*)orte_hash_table_get_proc(&mca_oob_tcp_component.tcp_peer_names,
 name);
+    opal_hash_table_get_value_uint64(&mca_oob_tcp_component.tcp_peer_names,
+                                     orte_util_hash_name(name), (void**)&addr);
     if(NULL == addr) {
         addr = OBJ_NEW(mca_oob_tcp_addr_t);
         addr->addr_name = *name;
-        orte_hash_table_set_proc(&mca_oob_tcp_component.tcp_peer_names, 
&addr->addr_name, addr);
+        opal_hash_table_set_value_uint64(&mca_oob_tcp_component.tcp_peer_names,
+                                         
orte_util_hash_name(&addr->addr_name), addr);
     }
     rc = mca_oob_tcp_addr_insert(addr, (struct sockaddr*) &inaddr);
-    peer = (mca_oob_tcp_peer_t *)orte_hash_table_get_proc(
-        &mca_oob_tcp_component.tcp_peers, &addr->addr_name);
+    opal_hash_table_get_value_uint64(&mca_oob_tcp_component.tcp_peers,
+                                     orte_util_hash_name(&addr->addr_name), 
+                                     (void**)&peer);
     if(NULL != peer) {
         mca_oob_tcp_peer_resolved(peer, addr);
     }
Index: orte/mca/oob/tcp/oob_tcp_msg.c
===================================================================
--- orte/mca/oob/tcp/oob_tcp_msg.c      (revision 17666)
+++ orte/mca/oob/tcp/oob_tcp_msg.c      (working copy)
@@ -28,7 +28,7 @@

 #include "opal/opal_socket_errno.h"

-#include "orte/class/orte_proc_table.h"
+#include "opal/class/opal_hash_table.h"
 #include "orte/util/name_fns.h"
 #include "orte/mca/errmgr/errmgr.h"
 #include "orte/mca/routed/routed.h"
@@ -458,9 +458,11 @@

     OPAL_THREAD_LOCK(&mca_oob_tcp_component.tcp_lock);
     if (orte_util_compare_name_fields(ORTE_NS_CMP_ALL, &peer->peer_name, &src) 
!= OPAL_EQUAL) {
-        orte_hash_table_remove_proc(&mca_oob_tcp_component.tcp_peers, 
&peer->peer_name);
+        opal_hash_table_remove_value_uint64(&mca_oob_tcp_component.tcp_peers, 
+                                            
orte_util_hash_name(&peer->peer_name));
         peer->peer_name = src;
-        orte_hash_table_set_proc(&mca_oob_tcp_component.tcp_peers, 
&peer->peer_name, peer);
+        opal_hash_table_set_value_uint64(&mca_oob_tcp_component.tcp_peers, 
+                                         
orte_util_hash_name(&peer->peer_name), peer);
     }
     OPAL_THREAD_UNLOCK(&mca_oob_tcp_component.tcp_lock);
 }
Index: orte/mca/routed/tree/routed_tree.c
===================================================================
--- orte/mca/routed/tree/routed_tree.c  (revision 17666)
+++ orte/mca/routed/tree/routed_tree.c  (working copy)
@@ -14,9 +14,9 @@
 #include "opal/util/output.h"
 #include "opal/threads/condition.h"
 #include "opal/runtime/opal_progress.h"
+#include "opal/dss/dss.h"
+#include "opal/class/opal_hash_table.h"

-#include "opal/dss/dss.h"
-#include "orte/class/orte_proc_table.h"
 #include "orte/mca/errmgr/errmgr.h"
 #include "orte/mca/grpcomm/grpcomm.h"
 #include "orte/mca/rml/rml.h"
@@ -35,6 +35,7 @@
                                orte_process_name_t *route)
 { 
     int rc;
+    orte_process_name_t * route_copy;

     if (target->jobid == ORTE_JOBID_INVALID ||
         target->vpid == ORTE_VPID_INVALID) {
@@ -70,12 +71,14 @@
         }
     }

+    route_copy = malloc(sizeof(orte_process_name_t));
+    *route_copy = *route;
     /* exact match */
     if (target->jobid != ORTE_JOBID_WILDCARD &&
         target->vpid != ORTE_VPID_WILDCARD) {
-        if (ORTE_SUCCESS != (rc = 
orte_hash_table_set_proc_name(&orte_routed_tree_module.peer_list,
-                                                                target, route,
-                                                                
ORTE_NS_CMP_ALL))) {
+        rc = 
opal_hash_table_set_value_uint64(&orte_routed_tree_module.peer_list,
+                                              orte_util_hash_name(target), 
route_copy);
+        if (ORTE_SUCCESS != rc) {
             ORTE_ERROR_LOG(rc);
         }
         return rc;
@@ -84,13 +87,14 @@
     /* vpid wildcard */
     if (target->jobid != ORTE_JOBID_WILDCARD &&
         target->vpid == ORTE_VPID_WILDCARD) {
-        if (ORTE_SUCCESS != (rc = 
orte_hash_table_set_proc_name(&orte_routed_tree_module.vpid_wildcard_list,
-                                                                target, route,
-                                                                
ORTE_NS_CMP_JOBID))) {
+        
opal_hash_table_set_value_uint32(&orte_routed_tree_module.vpid_wildcard_list,
+                                         target->jobid, route_copy);
+        if (ORTE_SUCCESS != rc) {
             ORTE_ERROR_LOG(rc);
         }
         return rc;
     }
+    free(route_copy);

     return ORTE_ERR_NOT_SUPPORTED;
 }
@@ -99,32 +103,35 @@
 orte_process_name_t
 orte_routed_tree_get_route(orte_process_name_t *target)
 {
-    orte_process_name_t ret;
+    orte_process_name_t *ret;
+    int rc;

     /* if it is me, then the route is just direct */
     if (OPAL_EQUAL == opal_dss.compare(ORTE_PROC_MY_NAME, target, ORTE_NAME)) {
-        ret = *target;
+        ret = target;
         goto found;
     }

     /* check exact matches */
-    ret = orte_hash_table_get_proc_name(&orte_routed_tree_module.peer_list,
-                                        target, ORTE_NS_CMP_ALL);
-    if (OPAL_EQUAL != orte_util_compare_name_fields(ORTE_NS_CMP_ALL, &ret, 
ORTE_NAME_INVALID)) {
+    rc = opal_hash_table_get_value_uint64(&orte_routed_tree_module.peer_list,
+                                          orte_util_hash_name(target), 
(void**)&ret);
+    if (ORTE_SUCCESS == rc && 
+        OPAL_EQUAL != orte_util_compare_name_fields(ORTE_NS_CMP_ALL, ret, 
ORTE_NAME_INVALID)) {
         /* got a good result - return it */
         goto found;
     }

     /* didn't find an exact match - check to see if a route for this job was 
defined */
-    ret = 
orte_hash_table_get_proc_name(&orte_routed_tree_module.vpid_wildcard_list,
-                                        target, ORTE_NS_CMP_JOBID);
-    if (OPAL_EQUAL != orte_util_compare_name_fields(ORTE_NS_CMP_ALL, &ret, 
ORTE_NAME_INVALID)) {
+    rc = 
opal_hash_table_get_value_uint32(&orte_routed_tree_module.vpid_wildcard_list,
+                                          target->jobid, (void**)&ret);
+    if (ORTE_SUCCESS == rc &&
+        OPAL_EQUAL != orte_util_compare_name_fields(ORTE_NS_CMP_ALL, ret, 
ORTE_NAME_INVALID)) {
         /* got a good result - return it */
         goto found;
     }

     /* default to wildcard route */
-    ret = orte_routed_tree_module.wildcard_route;
+    ret = &orte_routed_tree_module.wildcard_route;

  found:

@@ -132,9 +139,9 @@
                          "%s routed_tree_get(%s) --> %s",
                          ORTE_NAME_PRINT(ORTE_PROC_MY_NAME),
                          ORTE_NAME_PRINT(target), 
-                         ORTE_NAME_PRINT(&ret)));
+                         ORTE_NAME_PRINT(ret)));

-    return ret;
+    return *ret;
 }

 static int process_callback(orte_jobid_t job, opal_buffer_t *buffer)
Index: orte/mca/routed/unity/routed_unity_component.c
===================================================================
--- orte/mca/routed/unity/routed_unity_component.c      (revision 17666)
+++ orte/mca/routed/unity/routed_unity_component.c      (working copy)
@@ -16,9 +16,8 @@
 #include "opal/mca/base/base.h"
 #include "opal/mca/base/mca_base_param.h"
 #include "opal/threads/condition.h"
+#include "opal/dss/dss.h"

-#include "opal/dss/dss.h"
-#include "orte/class/orte_proc_table.h"
 #include "orte/mca/errmgr/errmgr.h"
 #include "orte/mca/grpcomm/grpcomm.h"
 #include "orte/mca/odls/odls_types.h"
@@ -160,8 +159,8 @@
 orte_routed_unity_update_route(orte_process_name_t *target,
                                orte_process_name_t *route)
 {
-    orte_ns_cmp_bitmask_t mask;
     int rc;
+    orte_process_name_t * route_copy;

     if (ORTE_JOB_FAMILY(target->jobid) != 
ORTE_JOB_FAMILY(ORTE_PROC_MY_NAME->jobid)) {
         /* this message came from a different job family, so we will update
@@ -180,17 +179,15 @@
                              ORTE_NAME_PRINT(target), 
                              ORTE_NAME_PRINT(route)));

-        /* if we are routing everything for this target through one place, set
-         * the mask to only compare jobids
+        route_copy = malloc(sizeof(orte_process_name_t));
+        *route_copy = *route;
+        /* if we are routing everything for this target through one place, 
+         * then the target vpid is ORTE_NS_VPID_WILDCARD. So no need for
+         * special cases, just add it 
          */
-        if (ORTE_VPID_WILDCARD == target->vpid) {
-            mask = ORTE_NS_CMP_JOBID;
-        } else {
-            mask = ORTE_NS_CMP_ALL;
-        }
-        if (ORTE_SUCCESS != (rc = orte_hash_table_set_proc_name(&peer_list,
-                                                                target, route,
-                                                                mask))) {
+        rc = opal_hash_table_set_value_uint64(&peer_list, 
orte_util_hash_name(target), 
+                                              route_copy);
+        if (ORTE_SUCCESS != rc) {
             ORTE_ERROR_LOG(rc);
         }
         return rc;
@@ -211,32 +208,39 @@
 orte_process_name_t
 orte_routed_unity_get_route(orte_process_name_t *target)
 {
-    orte_process_name_t ret;
+    orte_process_name_t *ret, lookup;
+    int rc;

     if (ORTE_JOB_FAMILY(target->jobid) != 
ORTE_JOB_FAMILY(ORTE_PROC_MY_NAME->jobid)) {
-        ret = orte_hash_table_get_proc_name(&peer_list, target, 
ORTE_NS_CMP_ALL);
-        if (OPAL_EQUAL != orte_util_compare_name_fields(ORTE_NS_CMP_ALL, &ret, 
ORTE_NAME_INVALID)) {
+        rc = opal_hash_table_get_value_uint64(&peer_list, 
orte_util_hash_name(target),
+                                              (void**)&ret);
+        if (ORTE_SUCCESS != rc &&
+            OPAL_EQUAL != orte_util_compare_name_fields(ORTE_NS_CMP_ALL, ret, 
ORTE_NAME_INVALID)) {
             /* got a good result - return it */
             goto found;
         }
         /* check to see if we specified the route to be for all vpids in the 
job */
-        ret = orte_hash_table_get_proc_name(&peer_list, target, 
ORTE_NS_CMP_JOBID);
-        if (OPAL_EQUAL != orte_util_compare_name_fields(ORTE_NS_CMP_ALL, &ret, 
ORTE_NAME_INVALID)) {
+        lookup = *target;
+        lookup.vpid = ORTE_VPID_WILDCARD;
+        rc = opal_hash_table_get_value_uint64(&peer_list, 
orte_util_hash_name(&lookup),
+                                              (void**)&ret);
+        if (ORTE_SUCCESS == rc &&
+            OPAL_EQUAL != orte_util_compare_name_fields(ORTE_NS_CMP_ALL, ret, 
ORTE_NAME_INVALID)) {
             /* got a good result - return it */
             goto found;
         }
     }

     /* if it is our own job family, or we didn't find it on the list, just go 
direct */
-    ret = *target;
+    ret = target;

 found:
     OPAL_OUTPUT_VERBOSE((5, orte_routed_base_output,
                          "%s routed_unity_get(%s) --> %s",
                          ORTE_NAME_PRINT(ORTE_PROC_MY_NAME),
                          ORTE_NAME_PRINT(target), 
-                         ORTE_NAME_PRINT(&ret)));
-    return ret;
+                         ORTE_NAME_PRINT(ret)));
+    return *ret;
 }

 static int process_callback(orte_jobid_t job, opal_buffer_t *buffer)
Index: orte/mca/grpcomm/basic/grpcomm_basic_module.c
===================================================================
--- orte/mca/grpcomm/basic/grpcomm_basic_module.c       (revision 17666)
+++ orte/mca/grpcomm/basic/grpcomm_basic_module.c       (working copy)
@@ -30,7 +30,7 @@
 #include "opal/util/output.h"
 #include "opal/util/bit_ops.h"

-#include "orte/class/orte_proc_table.h"
+#include "opal/class/opal_hash_table.h"
 #include "orte/util/proc_info.h"
 #include "opal/dss/dss.h"
 #include "orte/mca/errmgr/errmgr.h"
@@ -765,7 +765,7 @@
  * information must be kept for later use, because if accept/connect
  * causes the proc to be added to the ompi_proc_all() list, it could
  * cause a connection storm.  Therefore, we use an
- * orte_proc_table backing store to contain all modex information.
+ * opal_hast_table_t backing store to contain all modex information.
  *
  * While we could add the now discovered proc into the ompi_proc_all()
  * list, this has some problems, in that we don't have the
@@ -937,11 +937,11 @@
 static modex_proc_data_t*
 modex_lookup_orte_proc(const orte_process_name_t *orte_proc)
 {
-    modex_proc_data_t *proc_data;
+    modex_proc_data_t *proc_data = NULL;

     OPAL_THREAD_LOCK(&orte_grpcomm_basic.mutex);
-    proc_data = (modex_proc_data_t*)
-        orte_hash_table_get_proc(&orte_grpcomm_basic.modex_data, orte_proc);
+    opal_hash_table_get_value_uint64(&orte_grpcomm_basic.modex_data, 
+                    orte_util_hash_name(orte_proc), (void**)&proc_data);
     if (NULL == proc_data) {
         /* The proc clearly exists, so create a modex structure
         for it */
@@ -951,7 +951,8 @@
             OPAL_THREAD_UNLOCK(&orte_grpcomm_basic.mutex);
             return NULL;
         }
-        orte_hash_table_set_proc(&orte_grpcomm_basic.modex_data, orte_proc, 
proc_data);
+        opal_hash_table_set_value_uint64(&orte_grpcomm_basic.modex_data, 
+                    orte_util_hash_name(orte_proc), proc_data);
     }
     OPAL_THREAD_UNLOCK(&orte_grpcomm_basic.mutex);

Index: orte/mca/iof/svc/iof_svc_sub.c
===================================================================
--- orte/mca/iof/svc/iof_svc_sub.c      (revision 17666)
+++ orte/mca/iof/svc/iof_svc_sub.c      (working copy)
@@ -22,7 +22,7 @@

 #include "opal/util/output.h"

-#include "orte/class/orte_proc_table.h"
+#include "opal/class/opal_hash_table.h"
 #include "orte/mca/rml/rml.h"
 #include "orte/mca/errmgr/errmgr.h"
 #include "orte/runtime/orte_globals.h"
@@ -269,13 +269,13 @@
                    calculate seq_min anymore.  Otherwise, put its
                    updated value in the table. */
                 if (do_close) {
-                    orte_hash_table_remove_proc(&fwd->fwd_seq_hash,
-                                                &hdr->msg_origin);
+                    opal_hash_table_remove_value_uint64(&fwd->fwd_seq_hash,
+                                        orte_util_hash_name(&hdr->msg_origin));
                     value_set = false;
                 } else {
                     value.uval = hdr->msg_seq + hdr->msg_len;
-                    orte_hash_table_set_proc(&fwd->fwd_seq_hash,
-                                             &hdr->msg_origin, &value.vval);
+                    opal_hash_table_set_value_uint64(&fwd->fwd_seq_hash,
+                                        orte_util_hash_name(&hdr->msg_origin), 
&value.vval);
                 }
             } 
             /* Otherwise, if the publication origin and publication
@@ -289,8 +289,8 @@
                bytes ACK'ed across all the forwards on this
                subscription. */
             else {
-                value.vval = orte_hash_table_get_proc(&fwd->fwd_seq_hash,
-                                                      &hdr->msg_origin);
+                opal_hash_table_get_value_uint64(&fwd->fwd_seq_hash,
+                        orte_util_hash_name(&hdr->msg_origin), 
(void**)&value.vval);
             }

             /* If we got a valid value, update the seq_min calculation */
Index: orte/util/name_fns.c
===================================================================
--- orte/util/name_fns.c        (revision 17666)
+++ orte/util/name_fns.c        (working copy)
@@ -529,3 +529,14 @@
     */
     return OPAL_EQUAL;
 }
+
+
+uint64_t  orte_util_hash_name(const orte_process_name_t * name) {
+    uint64_t hash;
+    
+    hash = name->jobid;
+    hash <<= sizeof(name->jobid) * 8;
+    hash += name->vpid;
+    
+    return hash;
+}
Index: orte/util/name_fns.h
===================================================================
--- orte/util/name_fns.h        (revision 17666)
+++ orte/util/name_fns.h        (working copy)
@@ -86,7 +86,8 @@
 ORTE_DECLSPEC int orte_util_compare_name_fields(orte_ns_cmp_bitmask_t fields,
                                   const orte_process_name_t* name1,
                                   const orte_process_name_t* name2);
+/** This funtion returns a guaranteed unique hash value for the passed process 
name */
+ORTE_DECLSPEC uint64_t orte_util_hash_name(const orte_process_name_t * name);

-
 END_C_DECLS
 #endif
Index: ompi/mca/btl/portals/btl_portals.h
===================================================================
--- ompi/mca/btl/portals/btl_portals.h  (revision 17666)
+++ ompi/mca/btl/portals/btl_portals.h  (working copy)
@@ -28,7 +28,6 @@
 #include "ompi/mca/btl/base/base.h"
 #include "ompi/class/ompi_bitmap.h"
 #include "ompi/class/ompi_free_list.h"
-#include "orte/class/orte_proc_table.h"

 #include "btl_portals_endpoint.h"
 #include "btl_portals_frag.h"
Index: ompi/mca/btl/tcp/btl_tcp_proc.c
===================================================================
--- ompi/mca/btl/tcp/btl_tcp_proc.c     (revision 17666)
+++ ompi/mca/btl/tcp/btl_tcp_proc.c     (working copy)
@@ -25,7 +25,7 @@
 #include <netinet/in.h>
 #endif

-#include "orte/class/orte_proc_table.h"
+#include "opal/class/opal_hash_table.h"
 #include "ompi/mca/btl/base/btl_base_error.h"
 #include "ompi/runtime/ompi_module_exchange.h"
 #include "ompi/datatype/dt_arch.h"
@@ -74,7 +74,8 @@
 {
     /* remove from list of all proc instances */
     OPAL_THREAD_LOCK(&mca_btl_tcp_component.tcp_lock);
-    orte_hash_table_remove_proc(&mca_btl_tcp_component.tcp_procs, 
&proc->proc_name);
+    opal_hash_table_remove_value_uint64(&mca_btl_tcp_component.tcp_procs, 
+                                        orte_util_hash_name(&proc->proc_name));
     OPAL_THREAD_UNLOCK(&mca_btl_tcp_component.tcp_lock);

     /* release resources */
@@ -97,11 +98,12 @@
     int rc;
     size_t size;
     mca_btl_tcp_proc_t* btl_proc;
+    uint64_t hash = orte_util_hash_name(&ompi_proc->proc_name);

     OPAL_THREAD_LOCK(&mca_btl_tcp_component.tcp_lock);
-    btl_proc = (mca_btl_tcp_proc_t*)orte_hash_table_get_proc(
-         &mca_btl_tcp_component.tcp_procs, &ompi_proc->proc_name);
-    if(NULL != btl_proc) {
+    rc = opal_hash_table_get_value_uint64(&mca_btl_tcp_component.tcp_procs, 
+                                          hash, (void**)&btl_proc);
+    if(OMPI_SUCCESS == rc) {
         OPAL_THREAD_UNLOCK(&mca_btl_tcp_component.tcp_lock);
         return btl_proc;
     }
@@ -111,11 +113,10 @@
         return NULL;
     btl_proc->proc_ompi = ompi_proc;
     btl_proc->proc_name = ompi_proc->proc_name;
-
+    
     /* add to hash table of all proc instance */
-    orte_hash_table_set_proc( &mca_btl_tcp_component.tcp_procs,
-                              &btl_proc->proc_name,
-                              btl_proc );
+    opal_hash_table_set_value_uint64(&mca_btl_tcp_component.tcp_procs,
+                                     hash, btl_proc);
     OPAL_THREAD_UNLOCK(&mca_btl_tcp_component.tcp_lock);

     /* lookup tcp parameters exported by this proc */
@@ -554,10 +555,10 @@
  */
 mca_btl_tcp_proc_t* mca_btl_tcp_proc_lookup(const orte_process_name_t *name)
 {
-    mca_btl_tcp_proc_t* proc;
+    mca_btl_tcp_proc_t* proc = NULL;
     OPAL_THREAD_LOCK(&mca_btl_tcp_component.tcp_lock);
-    proc = (mca_btl_tcp_proc_t*)orte_hash_table_get_proc(
-         &mca_btl_tcp_component.tcp_procs, name);
+    opal_hash_table_get_value_uint64(&mca_btl_tcp_component.tcp_procs, 
+                                     orte_util_hash_name(name), (void**)&proc);
     OPAL_THREAD_UNLOCK(&mca_btl_tcp_component.tcp_lock);
     return proc;
 }
Index: ompi/mca/btl/sctp/btl_sctp_proc.c
===================================================================
--- ompi/mca/btl/sctp/btl_sctp_proc.c   (revision 17666)
+++ ompi/mca/btl/sctp/btl_sctp_proc.c   (working copy)
@@ -25,7 +25,7 @@
 #include <netinet/in.h>
 #endif

-#include "orte/class/orte_proc_table.h"
+#include "opal/class/opal_hash_table.h"
 #include "ompi/mca/btl/base/btl_base_error.h"
 #include "ompi/runtime/ompi_module_exchange.h"
 #include "ompi/datatype/dt_arch.h"
@@ -63,7 +63,8 @@
 {
     /* remove from list of all proc instances */
     OPAL_THREAD_LOCK(&mca_btl_sctp_component.sctp_lock);
-    orte_hash_table_remove_proc(&mca_btl_sctp_component.sctp_procs, 
&proc->proc_name);
+    opal_hash_table_remove_value_uint64(&mca_btl_sctp_component.sctp_procs, 
+                                        orte_util_hash_name(&proc->proc_name));
     OPAL_THREAD_UNLOCK(&mca_btl_sctp_component.sctp_lock);

     /* release resources */
@@ -109,11 +110,12 @@
     int rc;
     size_t size;
     mca_btl_sctp_proc_t* btl_proc;
+    uint64_t hash = orte_util_hash_name(&ompi_proc->proc_name);

     OPAL_THREAD_LOCK(&mca_btl_sctp_component.sctp_lock);
-    btl_proc = (mca_btl_sctp_proc_t*)orte_hash_table_get_proc(
-            &mca_btl_sctp_component.sctp_procs, &ompi_proc->proc_name);
-    if(NULL != btl_proc) {
+    rc = opal_hash_table_get_value_uint64(&mca_btl_sctp_component.sctp_procs, 
+                                          hash, (void**)&btl_proc);
+    if(OMPI_SUCCESS == rc) {
         OPAL_THREAD_UNLOCK(&mca_btl_sctp_component.sctp_lock);
         return btl_proc;
     }
@@ -126,10 +128,8 @@
     btl_proc->proc_name = ompi_proc->proc_name;

     /* add to hash table of all proc instance */
-    orte_hash_table_set_proc(
-            &mca_btl_sctp_component.sctp_procs,
-            &btl_proc->proc_name,
-            btl_proc);
+    opal_hash_table_set_value_uint64(&mca_btl_sctp_component.sctp_procs,
+                                     hash, btl_proc);
     OPAL_THREAD_UNLOCK(&mca_btl_sctp_component.sctp_lock);

     /* lookup sctp parameters exported by this proc */
@@ -325,10 +325,10 @@
  */
 mca_btl_sctp_proc_t* mca_btl_sctp_proc_lookup(const orte_process_name_t *name)
 {
-    mca_btl_sctp_proc_t* proc;
+    mca_btl_sctp_proc_t* proc = NULL;
     OPAL_THREAD_LOCK(&mca_btl_sctp_component.sctp_lock);
-    proc = (mca_btl_sctp_proc_t*)orte_hash_table_get_proc(
-            &mca_btl_sctp_component.sctp_procs, name);
+    opal_hash_table_get_value_uint64(&mca_btl_sctp_component.sctp_procs,
+                                     orte_util_hash_name(name), (void**)&proc);
     OPAL_THREAD_UNLOCK(&mca_btl_sctp_component.sctp_lock);
     return proc;
 }

Reply via email to