James,

Please review patch series to bring in latest WinOF code base into the 
mainstream. I would like to
keep the commond code base from diverging as much as possible. This is a pretty 
straight forward
change but it touches alot of files. This is on master branch (now based on a 
v2 code base) and is
not targeted for OFED 1.3.

1/1 uDAT changes.
1/2 uDAPL changes.

  - add DAT_API to specify calling conventions (windows=__stdcall, linux= ) 
  - cleanup platform specific definitions for windows
  - c++ support

Signed-off by: Arlin Davis <[EMAIL PROTECTED]>

diff --git a/dat/common/dat_api.c b/dat/common/dat_api.c
index 1415f73..a3d2274 100755
--- a/dat/common/dat_api.c
+++ b/dat/common/dat_api.c
@@ -272,7 +272,7 @@ dats_free_ia_handle (
 /**********************************************************************
  * API definitions for common API entry points
  **********************************************************************/
-DAT_RETURN dat_ia_query (
+DAT_RETURN DAT_API dat_ia_query (
        IN      DAT_IA_HANDLE           ia_handle,
        OUT     DAT_EVD_HANDLE          *async_evd_handle,
        IN      DAT_IA_ATTR_MASK        ia_attr_mask,
@@ -298,7 +298,7 @@ DAT_RETURN dat_ia_query (
     return dat_status;
 }
 
-DAT_RETURN dat_set_consumer_context (
+DAT_RETURN DAT_API dat_set_consumer_context (
        IN      DAT_HANDLE              dat_handle,
        IN      DAT_CONTEXT             context)
 {
@@ -325,7 +325,7 @@ DAT_RETURN dat_set_consumer_context (
 }
 
 
-DAT_RETURN dat_get_consumer_context (
+DAT_RETURN DAT_API dat_get_consumer_context (
        IN      DAT_HANDLE              dat_handle,
        OUT     DAT_CONTEXT             *context)
 {
@@ -334,7 +334,7 @@ DAT_RETURN dat_get_consumer_context (
         DAT_IA_HANDLE   dapl_ia_handle;
         DAT_RETURN      dat_status;
 
-        dat_status = dats_get_ia_handle((unsigned long)dat_handle,
+        dat_status = dats_get_ia_handle((DAT_IA_HANDLE)dat_handle,
                                         &dapl_ia_handle);
 
         /* failure to map the handle is unlikely but possible */
@@ -352,7 +352,7 @@ DAT_RETURN dat_get_consumer_context (
 }
 
 
-DAT_RETURN dat_get_handle_type (
+DAT_RETURN DAT_API dat_get_handle_type (
        IN      DAT_HANDLE              dat_handle,
        OUT     DAT_HANDLE_TYPE         *type)
 {
@@ -374,12 +374,11 @@ DAT_RETURN dat_get_handle_type (
         dat_handle = dapl_ia_handle;
     }
 
-    return DAT_GET_HANDLE_TYPE (dat_handle,
-                               type);
+    return DAT_GET_HANDLE_TYPE (dat_handle, type);
 }
 
 
-DAT_RETURN dat_cr_query (
+DAT_RETURN DAT_API dat_cr_query (
        IN      DAT_CR_HANDLE           cr_handle,
        IN      DAT_CR_PARAM_MASK       cr_param_mask,
        OUT     DAT_CR_PARAM            *cr_param)
@@ -394,7 +393,7 @@ DAT_RETURN dat_cr_query (
 }
 
 
-DAT_RETURN dat_cr_accept (
+DAT_RETURN DAT_API dat_cr_accept (
        IN      DAT_CR_HANDLE           cr_handle,
        IN      DAT_EP_HANDLE           ep_handle,
        IN      DAT_COUNT               private_data_size,
@@ -411,7 +410,7 @@ DAT_RETURN dat_cr_accept (
 }
 
 
-DAT_RETURN dat_cr_reject (
+DAT_RETURN DAT_API dat_cr_reject (
        IN      DAT_CR_HANDLE           cr_handle,
        IN      DAT_COUNT               private_data_size,
        IN const DAT_PVOID              private_data)
@@ -424,7 +423,7 @@ DAT_RETURN dat_cr_reject (
 }
 
 
-DAT_RETURN dat_evd_resize (
+DAT_RETURN DAT_API dat_evd_resize (
        IN      DAT_EVD_HANDLE          evd_handle,
        IN      DAT_COUNT               evd_min_qlen)
 {
@@ -437,7 +436,7 @@ DAT_RETURN dat_evd_resize (
 }
 
 
-DAT_RETURN dat_evd_post_se (
+DAT_RETURN DAT_API dat_evd_post_se (
        IN      DAT_EVD_HANDLE         evd_handle,
        IN      const DAT_EVENT         *event)
 {
@@ -450,7 +449,7 @@ DAT_RETURN dat_evd_post_se (
 }
 
 
-DAT_RETURN dat_evd_dequeue (
+DAT_RETURN DAT_API dat_evd_dequeue (
        IN      DAT_EVD_HANDLE          evd_handle,
        OUT     DAT_EVENT               *event)
 {
@@ -463,7 +462,7 @@ DAT_RETURN dat_evd_dequeue (
 }
 
 
-DAT_RETURN dat_evd_free (
+DAT_RETURN DAT_API dat_evd_free (
        IN      DAT_EVD_HANDLE          evd_handle)
 {
     if (evd_handle == NULL)
@@ -473,7 +472,7 @@ DAT_RETURN dat_evd_free (
     return DAT_EVD_FREE (evd_handle);
 }
 
-DAT_RETURN dat_evd_query (
+DAT_RETURN DAT_API dat_evd_query (
        IN      DAT_EVD_HANDLE          evd_handle,
        IN      DAT_EVD_PARAM_MASK      evd_param_mask,
        OUT     DAT_EVD_PARAM           *evd_param)
@@ -488,7 +487,7 @@ DAT_RETURN dat_evd_query (
 }
 
 
-DAT_RETURN dat_ep_create (
+DAT_RETURN DAT_API dat_ep_create (
        IN      DAT_IA_HANDLE           ia_handle,
        IN      DAT_PZ_HANDLE           pz_handle,
        IN      DAT_EVD_HANDLE          recv_completion_evd_handle,
@@ -517,7 +516,7 @@ DAT_RETURN dat_ep_create (
 }
 
 
-DAT_RETURN dat_ep_query (
+DAT_RETURN DAT_API dat_ep_query (
        IN      DAT_EP_HANDLE           ep_handle,
        IN      DAT_EP_PARAM_MASK       ep_param_mask,
        OUT     DAT_EP_PARAM            *ep_param)
@@ -532,7 +531,7 @@ DAT_RETURN dat_ep_query (
 }
 
 
-DAT_RETURN dat_ep_modify (
+DAT_RETURN DAT_API dat_ep_modify (
        IN      DAT_EP_HANDLE           ep_handle,
        IN      DAT_EP_PARAM_MASK       ep_param_mask,
        IN      const DAT_EP_PARAM      *ep_param)
@@ -546,7 +545,7 @@ DAT_RETURN dat_ep_modify (
                          ep_param);
 }
 
-DAT_RETURN dat_ep_connect (
+DAT_RETURN DAT_API dat_ep_connect (
        IN      DAT_EP_HANDLE           ep_handle,
        IN      DAT_IA_ADDRESS_PTR      remote_ia_address,
        IN      DAT_CONN_QUAL           remote_conn_qual,
@@ -570,7 +569,7 @@ DAT_RETURN dat_ep_connect (
                           connect_flags);
 }
 
-DAT_RETURN dat_ep_common_connect (
+DAT_RETURN DAT_API dat_ep_common_connect (
        IN      DAT_EP_HANDLE           ep_handle,
        IN      DAT_IA_ADDRESS_PTR      remote_ia_address,
        IN      DAT_TIMEOUT             timeout,
@@ -588,7 +587,7 @@ DAT_RETURN dat_ep_common_connect (
                           private_data);
 }
 
-DAT_RETURN dat_ep_dup_connect (
+DAT_RETURN DAT_API dat_ep_dup_connect (
        IN      DAT_EP_HANDLE           ep_handle,
        IN      DAT_EP_HANDLE           ep_dup_handle,
        IN      DAT_TIMEOUT             timeout,
@@ -609,7 +608,7 @@ DAT_RETURN dat_ep_dup_connect (
 }
 
 
-DAT_RETURN dat_ep_disconnect (
+DAT_RETURN DAT_API dat_ep_disconnect (
        IN      DAT_EP_HANDLE           ep_handle,
        IN      DAT_CLOSE_FLAGS         close_flags)
 {
@@ -621,7 +620,7 @@ DAT_RETURN dat_ep_disconnect (
                              close_flags);
 }
 
-DAT_RETURN dat_ep_post_send (
+DAT_RETURN DAT_API dat_ep_post_send (
        IN      DAT_EP_HANDLE           ep_handle,
        IN      DAT_COUNT               num_segments,
        IN      DAT_LMR_TRIPLET         *local_iov,
@@ -639,7 +638,7 @@ DAT_RETURN dat_ep_post_send (
                             completion_flags);
 }
 
-DAT_RETURN dat_ep_post_send_with_invalidate (
+DAT_RETURN DAT_API dat_ep_post_send_with_invalidate (
        IN      DAT_EP_HANDLE           ep_handle,
        IN      DAT_COUNT               num_segments,
        IN      DAT_LMR_TRIPLET         *local_iov,
@@ -661,7 +660,7 @@ DAT_RETURN dat_ep_post_send_with_invalidate (
                             rmr_context);
 }
 
-DAT_RETURN dat_ep_post_recv (
+DAT_RETURN DAT_API dat_ep_post_recv (
        IN      DAT_EP_HANDLE           ep_handle,
        IN      DAT_COUNT               num_segments,
        IN      DAT_LMR_TRIPLET         *local_iov,
@@ -680,7 +679,7 @@ DAT_RETURN dat_ep_post_recv (
 }
 
 
-DAT_RETURN dat_ep_post_rdma_read (
+DAT_RETURN DAT_API dat_ep_post_rdma_read (
        IN      DAT_EP_HANDLE           ep_handle,
        IN      DAT_COUNT               num_segments,
        IN      DAT_LMR_TRIPLET         *local_iov,
@@ -701,7 +700,7 @@ DAT_RETURN dat_ep_post_rdma_read (
 }
 
 
-DAT_RETURN dat_ep_post_rdma_read_to_rmr (
+DAT_RETURN DAT_API dat_ep_post_rdma_read_to_rmr (
        IN      DAT_EP_HANDLE           ep_handle,
        IN      const DAT_RMR_TRIPLET   *local_iov,
        IN      DAT_DTO_COOKIE          user_cookie,
@@ -720,7 +719,7 @@ DAT_RETURN dat_ep_post_rdma_read_to_rmr (
 }
 
 
-DAT_RETURN dat_ep_post_rdma_write (
+DAT_RETURN DAT_API dat_ep_post_rdma_write (
        IN      DAT_EP_HANDLE           ep_handle,
        IN      DAT_COUNT               num_segments,
        IN      DAT_LMR_TRIPLET         *local_iov,
@@ -741,7 +740,7 @@ DAT_RETURN dat_ep_post_rdma_write (
 }
 
 
-DAT_RETURN dat_ep_get_status (
+DAT_RETURN DAT_API dat_ep_get_status (
        IN      DAT_EP_HANDLE           ep_handle,
        OUT     DAT_EP_STATE            *ep_state,
        OUT     DAT_BOOLEAN             *recv_idle,
@@ -758,7 +757,7 @@ DAT_RETURN dat_ep_get_status (
 }
 
 
-DAT_RETURN dat_ep_free (
+DAT_RETURN DAT_API dat_ep_free (
        IN      DAT_EP_HANDLE           ep_handle)
 {
     if (ep_handle == NULL)
@@ -769,7 +768,7 @@ DAT_RETURN dat_ep_free (
 }
 
 
-DAT_RETURN dat_ep_reset (
+DAT_RETURN DAT_API dat_ep_reset (
        IN      DAT_EP_HANDLE           ep_handle)
 {
     if (ep_handle == NULL)
@@ -780,7 +779,7 @@ DAT_RETURN dat_ep_reset (
 }
 
 
-DAT_RETURN dat_lmr_free (
+DAT_RETURN DAT_API dat_lmr_free (
        IN      DAT_LMR_HANDLE          lmr_handle)
 {
     if (lmr_handle == NULL)
@@ -791,7 +790,7 @@ DAT_RETURN dat_lmr_free (
 }
 
 
-DAT_RETURN dat_rmr_create (
+DAT_RETURN DAT_API dat_rmr_create (
        IN      DAT_PZ_HANDLE           pz_handle,
        OUT     DAT_RMR_HANDLE          *rmr_handle)
 {
@@ -804,7 +803,7 @@ DAT_RETURN dat_rmr_create (
 }
 
 
-DAT_RETURN dat_rmr_create_for_ep (
+DAT_RETURN DAT_API dat_rmr_create_for_ep (
        IN      DAT_PZ_HANDLE           pz_handle,
        OUT     DAT_RMR_HANDLE          *rmr_handle)
 {
@@ -815,7 +814,7 @@ DAT_RETURN dat_rmr_create_for_ep (
     return DAT_RMR_CREATE_FOR_EP (pz_handle,
                           rmr_handle);
 }
-DAT_RETURN dat_rmr_query (
+DAT_RETURN DAT_API dat_rmr_query (
        IN      DAT_RMR_HANDLE          rmr_handle,
        IN      DAT_RMR_PARAM_MASK      rmr_param_mask,
        OUT     DAT_RMR_PARAM           *rmr_param)
@@ -830,7 +829,7 @@ DAT_RETURN dat_rmr_query (
 }
 
 
-DAT_RETURN dat_rmr_bind (
+DAT_RETURN DAT_API dat_rmr_bind (
        IN      DAT_RMR_HANDLE          rmr_handle,
        IN      DAT_LMR_HANDLE          lmr_handle,
        IN      const DAT_LMR_TRIPLET   *lmr_triplet,
@@ -857,7 +856,7 @@ DAT_RETURN dat_rmr_bind (
 }
 
 
-DAT_RETURN dat_rmr_free (
+DAT_RETURN DAT_API dat_rmr_free (
        IN      DAT_RMR_HANDLE          rmr_handle)
 {
     if (rmr_handle == NULL)
@@ -867,7 +866,7 @@ DAT_RETURN dat_rmr_free (
     return DAT_RMR_FREE (rmr_handle);
 }
 
-DAT_RETURN dat_lmr_sync_rdma_read(
+DAT_RETURN DAT_API dat_lmr_sync_rdma_read(
        IN      DAT_IA_HANDLE           ia_handle,
        IN      const DAT_LMR_TRIPLET   *local_segments,
        IN      DAT_VLEN                num_segments)
@@ -875,8 +874,7 @@ DAT_RETURN dat_lmr_sync_rdma_read(
     DAT_IA_HANDLE      dapl_ia_handle;
     DAT_RETURN         dat_status;
 
-    dat_status = dats_get_ia_handle((unsigned long)ia_handle,
-                                   &dapl_ia_handle);
+    dat_status = dats_get_ia_handle(ia_handle, &dapl_ia_handle);
     if (dat_status == DAT_SUCCESS)
     {
        dat_status = DAT_LMR_SYNC_RDMA_READ (dapl_ia_handle,
@@ -888,7 +886,7 @@ DAT_RETURN dat_lmr_sync_rdma_read(
     return dat_status;
 }
 
-DAT_RETURN dat_lmr_sync_rdma_write(
+DAT_RETURN DAT_API dat_lmr_sync_rdma_write(
        IN      DAT_IA_HANDLE           ia_handle,
        IN      const DAT_LMR_TRIPLET   *local_segments,
        IN      DAT_VLEN                num_segments)
@@ -909,7 +907,7 @@ DAT_RETURN dat_lmr_sync_rdma_write(
 }
 
 
-DAT_RETURN dat_psp_create (
+DAT_RETURN DAT_API dat_psp_create (
        IN      DAT_IA_HANDLE           ia_handle,
        IN      DAT_CONN_QUAL           conn_qual,
        IN      DAT_EVD_HANDLE          evd_handle,
@@ -934,7 +932,7 @@ DAT_RETURN dat_psp_create (
 }
 
 
-DAT_RETURN dat_psp_create_any (
+DAT_RETURN DAT_API dat_psp_create_any (
        IN      DAT_IA_HANDLE           ia_handle,
        OUT     DAT_CONN_QUAL           *conn_qual,
        IN      DAT_EVD_HANDLE          evd_handle,
@@ -959,7 +957,7 @@ DAT_RETURN dat_psp_create_any (
 }
 
 
-DAT_RETURN dat_psp_query (
+DAT_RETURN DAT_API dat_psp_query (
        IN      DAT_PSP_HANDLE          psp_handle,
        IN      DAT_PSP_PARAM_MASK      psp_param_mask,
        OUT     DAT_PSP_PARAM           *psp_param)
@@ -974,7 +972,7 @@ DAT_RETURN dat_psp_query (
 }
 
 
-DAT_RETURN dat_psp_free (
+DAT_RETURN DAT_API dat_psp_free (
        IN      DAT_PSP_HANDLE  psp_handle)
 {
     if (psp_handle == NULL)
@@ -984,7 +982,7 @@ DAT_RETURN dat_psp_free (
     return DAT_PSP_FREE (psp_handle);
 }
 
-DAT_RETURN dat_csp_create (
+DAT_RETURN DAT_API dat_csp_create (
        IN      DAT_IA_HANDLE           ia_handle,
        IN      DAT_COMM                *comm,
        IN      DAT_IA_ADDRESS_PTR      address,
@@ -1007,7 +1005,7 @@ DAT_RETURN dat_csp_create (
     return dat_status;
 }
 
-DAT_RETURN dat_csp_query (
+DAT_RETURN DAT_API dat_csp_query (
        IN      DAT_CSP_HANDLE          csp_handle,
        IN      DAT_CSP_PARAM_MASK      csp_param_mask,
        OUT     DAT_CSP_PARAM           *csp_param)
@@ -1021,7 +1019,7 @@ DAT_RETURN dat_csp_query (
                          csp_param);
 }
 
-DAT_RETURN dat_csp_free (
+DAT_RETURN DAT_API dat_csp_free (
        IN      DAT_CSP_HANDLE  csp_handle)
 {
     if (csp_handle == NULL)
@@ -1032,7 +1030,7 @@ DAT_RETURN dat_csp_free (
 }
 
 
-DAT_RETURN dat_rsp_create (
+DAT_RETURN DAT_API dat_rsp_create (
        IN      DAT_IA_HANDLE           ia_handle,
        IN      DAT_CONN_QUAL           conn_qual,
        IN      DAT_EP_HANDLE           ep_handle,
@@ -1057,7 +1055,7 @@ DAT_RETURN dat_rsp_create (
 }
 
 
-DAT_RETURN dat_rsp_query (
+DAT_RETURN DAT_API dat_rsp_query (
        IN      DAT_RSP_HANDLE          rsp_handle,
        IN      DAT_RSP_PARAM_MASK      rsp_param_mask,
        OUT     DAT_RSP_PARAM           *rsp_param)
@@ -1072,7 +1070,7 @@ DAT_RETURN dat_rsp_query (
 }
 
 
-DAT_RETURN dat_rsp_free (
+DAT_RETURN DAT_API dat_rsp_free (
        IN      DAT_RSP_HANDLE          rsp_handle)
 {
     if (rsp_handle == NULL)
@@ -1083,15 +1081,14 @@ DAT_RETURN dat_rsp_free (
 }
 
 
-DAT_RETURN dat_pz_create (
+DAT_RETURN DAT_API dat_pz_create (
        IN      DAT_IA_HANDLE           ia_handle,
        OUT     DAT_PZ_HANDLE           *pz_handle)
 {
     DAT_IA_HANDLE      dapl_ia_handle;
     DAT_RETURN         dat_status;
 
-    dat_status = dats_get_ia_handle((unsigned long)ia_handle,
-                                   &dapl_ia_handle);
+    dat_status = dats_get_ia_handle(ia_handle, &dapl_ia_handle);
     if (dat_status == DAT_SUCCESS)
     {
        dat_status = DAT_PZ_CREATE (dapl_ia_handle,
@@ -1102,7 +1099,7 @@ DAT_RETURN dat_pz_create (
 }
 
 
-DAT_RETURN dat_pz_query (
+DAT_RETURN DAT_API dat_pz_query (
        IN      DAT_PZ_HANDLE           pz_handle,
        IN      DAT_PZ_PARAM_MASK       pz_param_mask,
        OUT     DAT_PZ_PARAM            *pz_param)
@@ -1117,7 +1114,7 @@ DAT_RETURN dat_pz_query (
 }
 
 
-DAT_RETURN dat_pz_free (
+DAT_RETURN DAT_API dat_pz_free (
        IN      DAT_PZ_HANDLE           pz_handle)
 {
     if (pz_handle == NULL)
@@ -1127,7 +1124,7 @@ DAT_RETURN dat_pz_free (
     return DAT_PZ_FREE (pz_handle);
 }
 
-DAT_RETURN dat_ep_create_with_srq(
+DAT_RETURN DAT_API dat_ep_create_with_srq(
         IN      DAT_IA_HANDLE          ia_handle,
         IN      DAT_PZ_HANDLE          pz_handle,
         IN      DAT_EVD_HANDLE         recv_evd_handle,
@@ -1157,7 +1154,7 @@ DAT_RETURN dat_ep_create_with_srq(
     return dat_status;
 }
 
-DAT_RETURN dat_ep_recv_query(
+DAT_RETURN DAT_API dat_ep_recv_query(
         IN      DAT_EP_HANDLE         ep_handle,
         OUT     DAT_COUNT *           nbufs_allocated,
         OUT     DAT_COUNT *           bufs_alloc_span)
@@ -1171,7 +1168,7 @@ DAT_RETURN dat_ep_recv_query(
                              bufs_alloc_span);
 }
 
-DAT_RETURN dat_ep_set_watermark(
+DAT_RETURN DAT_API dat_ep_set_watermark(
         IN      DAT_EP_HANDLE         ep_handle,
         IN      DAT_COUNT             soft_high_watermark,
         IN      DAT_COUNT             hard_high_watermark)
@@ -1187,7 +1184,7 @@ DAT_RETURN dat_ep_set_watermark(
 
 /* SRQ functions */
 
-DAT_RETURN dat_srq_create(
+DAT_RETURN DAT_API dat_srq_create(
         IN      DAT_IA_HANDLE           ia_handle,
         IN      DAT_PZ_HANDLE           pz_handle,
         IN      DAT_SRQ_ATTR            *srq_attr,
@@ -1209,13 +1206,13 @@ DAT_RETURN dat_srq_create(
     return dat_status;
 }
 
-DAT_RETURN dat_srq_free(
+DAT_RETURN DAT_API dat_srq_free(
        IN      DAT_SRQ_HANDLE        srq_handle)
 {
     return DAT_SRQ_FREE (srq_handle);
 }
 
-DAT_RETURN dat_srq_post_recv(
+DAT_RETURN DAT_API dat_srq_post_recv(
        IN      DAT_SRQ_HANDLE         srq_handle,
        IN      DAT_COUNT              num_segments,
        IN      DAT_LMR_TRIPLET *      local_iov,
@@ -1231,7 +1228,7 @@ DAT_RETURN dat_srq_post_recv(
                              user_cookie);
 }
 
-DAT_RETURN dat_srq_query(
+DAT_RETURN DAT_API dat_srq_query(
        IN      DAT_SRQ_HANDLE         srq_handle,
        IN      DAT_SRQ_PARAM_MASK     srq_param_mask,
        OUT     DAT_SRQ_PARAM *        srq_param)
@@ -1245,7 +1242,7 @@ DAT_RETURN dat_srq_query(
                          srq_param);
 }
 
-DAT_RETURN dat_srq_resize(
+DAT_RETURN DAT_API dat_srq_resize(
        IN      DAT_SRQ_HANDLE         srq_handle,
        IN      DAT_COUNT              srq_max_recv_dto)
 {
@@ -1257,7 +1254,7 @@ DAT_RETURN dat_srq_resize(
                           srq_max_recv_dto);
 }
 
-DAT_RETURN dat_srq_set_lw(
+DAT_RETURN DAT_API dat_srq_set_lw(
        IN      DAT_SRQ_HANDLE         srq_handle,
        IN      DAT_COUNT              low_watermark)
 {
diff --git a/dat/common/dat_strerror.c b/dat/common/dat_strerror.c
index 5f88336..885a261 100644
--- a/dat/common/dat_strerror.c
+++ b/dat/common/dat_strerror.c
@@ -49,12 +49,12 @@
  *                                                                   *
  *********************************************************************/
 
-DAT_RETURN
+static DAT_RETURN
 dat_strerror_major (
     IN  DAT_RETURN             value,
     OUT const char             **message );
 
-DAT_RETURN
+static DAT_RETURN
 dat_strerror_minor (
     IN  DAT_RETURN             value,
     OUT const char             **message );
@@ -66,7 +66,7 @@ dat_strerror_minor (
  *                                                                   *
  *********************************************************************/
 
-DAT_RETURN
+static DAT_RETURN
 dat_strerror_major (
     IN  DAT_RETURN             value,
     OUT const char             **message )
@@ -187,7 +187,7 @@ dat_strerror_major (
 }
 
 
-DAT_RETURN
+static DAT_RETURN
 dat_strerror_minor (
     IN  DAT_RETURN             value,
     OUT const char             **message )
@@ -600,7 +600,7 @@ dat_strerror_minor (
  *                                                                   *
  *********************************************************************/
 
-DAT_RETURN
+DAT_RETURN DAT_API
 dat_strerror (
     IN  DAT_RETURN             value,
     OUT const char             **major_message,
diff --git a/dat/include/dat/dat.h b/dat/include/dat/dat.h
index 7fa543b..9c1632c 100755
--- a/dat/include/dat/dat.h
+++ b/dat/include/dat/dat.h
@@ -58,6 +58,11 @@
 
 #include <dat/dat_error.h>
 
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
 /* Generic DAT types */
 
 typedef char *  DAT_NAME_PTR;  /* Format for ia_name and attributes */
@@ -972,7 +977,7 @@ typedef struct dat_provider_info
  * unload the library after the last close.
  */
 
-extern DAT_RETURN dat_ia_openv (
+extern DAT_RETURN DAT_API dat_ia_openv (
        IN      const DAT_NAME_PTR,     /* provider             */
        IN      DAT_COUNT,              /* asynch_evd_min_qlen  */
        INOUT   DAT_EVD_HANDLE *,       /* asynch_evd_handle    */
@@ -986,7 +991,7 @@ extern DAT_RETURN dat_ia_openv (
                DAT_VERSION_MAJOR, DAT_VERSION_MINOR, \
                DAT_THREADSAFE)
 
-extern DAT_RETURN dat_ia_query (
+extern  DAT_RETURN DAT_API dat_ia_query (
        IN      DAT_IA_HANDLE,          /* ia_handle            */
        OUT     DAT_EVD_HANDLE *,       /* async_evd_handle     */
        IN      DAT_IA_ATTR_MASK,       /* ia_attr_mask         */
@@ -994,38 +999,38 @@ extern DAT_RETURN dat_ia_query (
        IN      DAT_PROVIDER_ATTR_MASK, /* provider_attr_mask   */
        OUT     DAT_PROVIDER_ATTR * );  /* provider_attr        */
 
-extern DAT_RETURN dat_ia_close (
+extern  DAT_RETURN DAT_API dat_ia_close (
        IN      DAT_IA_HANDLE,          /* ia_handle            */
        IN      DAT_CLOSE_FLAGS );      /* close_flags          */
 
 /* helper functions */
 
-extern DAT_RETURN dat_set_consumer_context (
+extern DAT_RETURN DAT_API dat_set_consumer_context (
        IN      DAT_HANDLE,             /* dat_handle           */
        IN      DAT_CONTEXT);           /* context              */
 
-extern DAT_RETURN dat_get_consumer_context (
+extern DAT_RETURN DAT_API dat_get_consumer_context (
        IN      DAT_HANDLE,             /* dat_handle           */
        OUT     DAT_CONTEXT * );        /* context              */
 
-extern DAT_RETURN dat_get_handle_type (
+extern DAT_RETURN DAT_API dat_get_handle_type (
        IN      DAT_HANDLE,             /* dat_handle           */
        OUT     DAT_HANDLE_TYPE * );    /* handle_type          */
 
 /* CR functions */
 
-extern DAT_RETURN dat_cr_query (
+extern DAT_RETURN DAT_API dat_cr_query (
        IN      DAT_CR_HANDLE,          /* cr_handle            */
        IN      DAT_CR_PARAM_MASK,      /* cr_param_mask        */
        OUT     DAT_CR_PARAM * );       /* cr_param             */
 
-extern DAT_RETURN dat_cr_accept (
+extern DAT_RETURN DAT_API dat_cr_accept (
        IN      DAT_CR_HANDLE,          /* cr_handle            */
        IN      DAT_EP_HANDLE,          /* ep_handle            */
        IN      DAT_COUNT,              /* private_data_size    */
        IN      const DAT_PVOID );      /* private_data         */
 
-extern DAT_RETURN dat_cr_reject (
+extern DAT_RETURN DAT_API dat_cr_reject (
        IN      DAT_CR_HANDLE,          /* cr_handle            */
        IN      DAT_COUNT,              /* private_data_size    */
        IN const DAT_PVOID );           /* private_data         */
@@ -1033,35 +1038,35 @@ extern DAT_RETURN dat_cr_reject (
 /* For DAT-1.1 and above, this function is defined for both uDAPL and
  * kDAPL. For DAT-1.0, it is only defined for uDAPL.
  */
-extern DAT_RETURN dat_cr_handoff (
+extern DAT_RETURN DAT_API dat_cr_handoff (
        IN      DAT_CR_HANDLE,          /* cr_handle            */
        IN      DAT_CONN_QUAL);         /* handoff              */
 
 /* EVD functions */
 
-extern DAT_RETURN dat_evd_resize (
+extern DAT_RETURN DAT_API dat_evd_resize (
        IN      DAT_EVD_HANDLE,         /* evd_handle           */
        IN      DAT_COUNT );            /* evd_min_qlen         */
 
-extern DAT_RETURN dat_evd_post_se (
+extern DAT_RETURN DAT_API dat_evd_post_se (
        IN      DAT_EVD_HANDLE,         /* evd_handle           */
        IN      const DAT_EVENT * );    /* event                */
 
-extern DAT_RETURN dat_evd_dequeue (
+extern DAT_RETURN DAT_API dat_evd_dequeue (
        IN      DAT_EVD_HANDLE,         /* evd_handle           */
        OUT     DAT_EVENT * );          /* event                */
 
-extern DAT_RETURN dat_evd_query (
+extern DAT_RETURN DAT_API dat_evd_query (
        IN      DAT_EVD_HANDLE,         /* evd_handle           */
        IN      DAT_EVD_PARAM_MASK,     /* evd_param_mask       */
        OUT     DAT_EVD_PARAM * );      /* evd_param            */
 
-extern DAT_RETURN dat_evd_free (
+extern DAT_RETURN DAT_API dat_evd_free (
        IN      DAT_EVD_HANDLE );       /* evd_handle           */
 
 /* EP functions */
 
-extern DAT_RETURN dat_ep_create (
+extern DAT_RETURN DAT_API dat_ep_create (
        IN      DAT_IA_HANDLE,          /* ia_handle            */
        IN      DAT_PZ_HANDLE,          /* pz_handle            */
        IN      DAT_EVD_HANDLE,         /* recv_completion_evd_handle */
@@ -1070,17 +1075,17 @@ extern DAT_RETURN dat_ep_create (
        IN      const DAT_EP_ATTR *,    /* ep_attributes        */
        OUT     DAT_EP_HANDLE * );      /* ep_handle            */
 
-extern DAT_RETURN dat_ep_query (
+extern DAT_RETURN DAT_API dat_ep_query (
        IN      DAT_EP_HANDLE,          /* ep_handle            */
        IN      DAT_EP_PARAM_MASK,      /* ep_param_mask        */
        OUT     DAT_EP_PARAM * );       /* ep_param             */
 
-extern DAT_RETURN dat_ep_modify (
+extern DAT_RETURN DAT_API dat_ep_modify (
        IN      DAT_EP_HANDLE,          /* ep_handle            */
        IN      DAT_EP_PARAM_MASK,      /* ep_param_mask        */
        IN      const DAT_EP_PARAM * ); /* ep_param             */
 
-extern DAT_RETURN dat_ep_connect (
+extern DAT_RETURN DAT_API dat_ep_connect (
        IN      DAT_EP_HANDLE,          /* ep_handle            */
        IN      DAT_IA_ADDRESS_PTR,     /* remote_ia_address    */
        IN      DAT_CONN_QUAL,          /* remote_conn_qual     */
@@ -1090,7 +1095,7 @@ extern DAT_RETURN dat_ep_connect (
        IN      DAT_QOS,                /* quality_of_service   */
        IN      DAT_CONNECT_FLAGS );    /* connect_flags        */
 
-extern DAT_RETURN dat_ep_dup_connect (
+extern DAT_RETURN DAT_API dat_ep_dup_connect (
        IN      DAT_EP_HANDLE,          /* ep_handle            */
        IN      DAT_EP_HANDLE,          /* ep_dup_handle        */
        IN      DAT_TIMEOUT,            /* timeout              */
@@ -1098,25 +1103,25 @@ extern DAT_RETURN dat_ep_dup_connect (
        IN      const DAT_PVOID,        /* private_data         */
        IN      DAT_QOS);               /* quality_of_service   */
 
-extern DAT_RETURN dat_ep_common_connect (
+extern DAT_RETURN DAT_API dat_ep_common_connect (
        IN      DAT_EP_HANDLE,          /* ep_handle            */
        IN      DAT_IA_ADDRESS_PTR,     /* remote_ia_address    */
        IN      DAT_TIMEOUT,            /* timeout              */
        IN      DAT_COUNT,              /* private_data_size    */
        IN      const DAT_PVOID );      /* private_data         */
 
-extern DAT_RETURN dat_ep_disconnect (
+extern DAT_RETURN DAT_API dat_ep_disconnect (
        IN      DAT_EP_HANDLE,          /* ep_handle            */
        IN      DAT_CLOSE_FLAGS );      /* close_flags          */
 
-extern DAT_RETURN dat_ep_post_send (
+extern DAT_RETURN DAT_API dat_ep_post_send (
        IN      DAT_EP_HANDLE,          /* ep_handle            */
        IN      DAT_COUNT,              /* num_segments         */
        IN      DAT_LMR_TRIPLET *,      /* local_iov            */
        IN      DAT_DTO_COOKIE,         /* user_cookie          */
        IN      DAT_COMPLETION_FLAGS ); /* completion_flags     */
 
-extern DAT_RETURN dat_ep_post_send_with_invalidate (
+extern DAT_RETURN DAT_API dat_ep_post_send_with_invalidate (
        IN      DAT_EP_HANDLE,          /* ep_handle            */
        IN      DAT_COUNT,              /* num_segments         */
        IN      DAT_LMR_TRIPLET *,      /* local_iov            */
@@ -1125,14 +1130,14 @@ extern DAT_RETURN dat_ep_post_send_with_invalidate (
        IN      DAT_BOOLEAN,            /* invalidate_flag      */
        IN      DAT_RMR_CONTEXT );      /* RMR to invalidate    */
 
-extern DAT_RETURN dat_ep_post_recv (
+extern DAT_RETURN DAT_API dat_ep_post_recv (
        IN      DAT_EP_HANDLE,          /* ep_handle            */
        IN      DAT_COUNT,              /* num_segments         */
        IN      DAT_LMR_TRIPLET *,      /* local_iov            */
        IN      DAT_DTO_COOKIE,         /* user_cookie          */
        IN      DAT_COMPLETION_FLAGS ); /* completion_flags     */
 
-extern DAT_RETURN dat_ep_post_rdma_read (
+extern DAT_RETURN DAT_API dat_ep_post_rdma_read (
        IN      DAT_EP_HANDLE,          /* ep_handle            */
        IN      DAT_COUNT,              /* num_segments         */
        IN      DAT_LMR_TRIPLET *,      /* local_iov            */
@@ -1140,14 +1145,14 @@ extern DAT_RETURN dat_ep_post_rdma_read (
        IN      const DAT_RMR_TRIPLET *,/* remote_iov           */
        IN      DAT_COMPLETION_FLAGS ); /* completion_flags     */
 
-extern DAT_RETURN dat_ep_post_rdma_read_to_rmr (
+extern DAT_RETURN DAT_API dat_ep_post_rdma_read_to_rmr (
        IN      DAT_EP_HANDLE,          /* ep_handle            */
        IN const DAT_RMR_TRIPLET *,      /* local_iov            */
        IN      DAT_DTO_COOKIE,         /* user_cookie          */
        IN      const DAT_RMR_TRIPLET *,/* remote_iov           */
        IN      DAT_COMPLETION_FLAGS ); /* completion_flags     */
 
-extern DAT_RETURN dat_ep_post_rdma_write (
+extern DAT_RETURN DAT_API dat_ep_post_rdma_write (
        IN      DAT_EP_HANDLE,          /* ep_handle            */
        IN      DAT_COUNT,              /* num_segments         */
        IN      DAT_LMR_TRIPLET *,      /* local_iov            */
@@ -1155,19 +1160,19 @@ extern DAT_RETURN dat_ep_post_rdma_write (
        IN      const DAT_RMR_TRIPLET *,/* remote_iov           */
        IN      DAT_COMPLETION_FLAGS ); /* completion_flags     */
 
-extern DAT_RETURN dat_ep_get_status (
+extern DAT_RETURN DAT_API dat_ep_get_status (
        IN      DAT_EP_HANDLE,          /* ep_handle            */
        OUT     DAT_EP_STATE *,         /* ep_state             */
        OUT     DAT_BOOLEAN *,          /* recv_idle            */
        OUT     DAT_BOOLEAN * );        /* request_idle         */
 
-extern DAT_RETURN dat_ep_free (
+extern DAT_RETURN DAT_API dat_ep_free (
        IN      DAT_EP_HANDLE);         /* ep_handle            */
 
-extern DAT_RETURN dat_ep_reset (
+extern DAT_RETURN DAT_API dat_ep_reset (
        IN      DAT_EP_HANDLE);         /* ep_handle            */
 
-extern DAT_RETURN dat_ep_create_with_srq (
+extern DAT_RETURN DAT_API dat_ep_create_with_srq (
         IN      DAT_IA_HANDLE,          /* ia_handle            */
         IN      DAT_PZ_HANDLE,          /* pz_handle            */
         IN      DAT_EVD_HANDLE,         /* recv_evd_handle      */
@@ -1177,49 +1182,49 @@ extern DAT_RETURN dat_ep_create_with_srq (
         IN      const DAT_EP_ATTR *,    /* ep_attributes        */
         OUT     DAT_EP_HANDLE *);       /* ep_handle            */
 
-extern DAT_RETURN dat_ep_recv_query (
+extern DAT_RETURN DAT_API dat_ep_recv_query (
         IN      DAT_EP_HANDLE,          /* ep_handle            */
         OUT     DAT_COUNT *,            /* nbufs_allocated      */
         OUT     DAT_COUNT *);           /* bufs_alloc_span      */
 
-extern DAT_RETURN dat_ep_set_watermark (
+extern DAT_RETURN DAT_API dat_ep_set_watermark (
         IN      DAT_EP_HANDLE,          /* ep_handle            */
         IN      DAT_COUNT,              /* soft_high_watermark  */
         IN      DAT_COUNT);             /* hard_high_watermark  */
 
 /* LMR functions */
 
-extern DAT_RETURN dat_lmr_free (
+extern DAT_RETURN DAT_API dat_lmr_free (
        IN      DAT_LMR_HANDLE);        /* lmr_handle           */
 
 /* Non-coherent memory functions */
 
-extern DAT_RETURN dat_lmr_sync_rdma_read (
+extern DAT_RETURN DAT_API dat_lmr_sync_rdma_read (
        IN      DAT_IA_HANDLE,          /* ia_handle            */
        IN      const DAT_LMR_TRIPLET *, /* local_segments      */
        IN      DAT_VLEN);              /* num_segments         */
 
-extern DAT_RETURN dat_lmr_sync_rdma_write (
+extern DAT_RETURN DAT_API dat_lmr_sync_rdma_write (
        IN      DAT_IA_HANDLE,          /* ia_handle            */
        IN      const DAT_LMR_TRIPLET *, /* local_segments      */
        IN      DAT_VLEN);              /* num_segments         */
 
 /* RMR functions */
 
-extern DAT_RETURN dat_rmr_create (
+extern DAT_RETURN DAT_API dat_rmr_create (
        IN      DAT_PZ_HANDLE,          /* pz_handle            */
        OUT     DAT_RMR_HANDLE *);      /* rmr_handle           */
 
-extern DAT_RETURN dat_rmr_create_for_ep (
+extern DAT_RETURN DAT_API dat_rmr_create_for_ep (
        IN      DAT_PZ_HANDLE,          /* pz_handle            */
        OUT     DAT_RMR_HANDLE *);      /* rmr_handle           */
 
-extern DAT_RETURN dat_rmr_query (
+extern DAT_RETURN DAT_API dat_rmr_query (
        IN      DAT_RMR_HANDLE,         /* rmr_handle           */
        IN      DAT_RMR_PARAM_MASK,     /* rmr_param_mask       */
        OUT     DAT_RMR_PARAM *);       /* rmr_param            */
 
-extern DAT_RETURN dat_rmr_bind (
+extern DAT_RETURN DAT_API dat_rmr_bind (
        IN      DAT_RMR_HANDLE,         /* rmr_handle           */
        IN      DAT_LMR_HANDLE,         /* lmr_handle           */
        IN      const DAT_LMR_TRIPLET *,/* lmr_triplet          */
@@ -1230,114 +1235,114 @@ extern DAT_RETURN dat_rmr_bind (
        IN      DAT_COMPLETION_FLAGS,   /* completion_flags     */
        OUT     DAT_RMR_CONTEXT * );    /* context              */
 
-extern DAT_RETURN dat_rmr_free (
+extern DAT_RETURN DAT_API dat_rmr_free (
        IN      DAT_RMR_HANDLE);        /* rmr_handle           */
 
 /* PSP functions */
 
-extern DAT_RETURN dat_psp_create (
+extern DAT_RETURN DAT_API dat_psp_create (
        IN      DAT_IA_HANDLE,          /* ia_handle            */
        IN      DAT_CONN_QUAL,          /* conn_qual            */
        IN      DAT_EVD_HANDLE,         /* evd_handle           */
        IN      DAT_PSP_FLAGS,          /* psp_flags            */
        OUT     DAT_PSP_HANDLE * );     /* psp_handle           */
 
-extern DAT_RETURN dat_psp_create_any (
+extern DAT_RETURN DAT_API dat_psp_create_any (
        IN      DAT_IA_HANDLE,          /* ia_handle            */
        OUT     DAT_CONN_QUAL *,        /* conn_qual            */
        IN      DAT_EVD_HANDLE,         /* evd_handle           */
        IN      DAT_PSP_FLAGS,          /* psp_flags            */
        OUT     DAT_PSP_HANDLE * );     /* psp_handle           */
 
-extern DAT_RETURN dat_psp_query (
+extern DAT_RETURN DAT_API dat_psp_query (
        IN      DAT_PSP_HANDLE,         /* psp_handle           */
        IN      DAT_PSP_PARAM_MASK,     /* psp_param_mask       */
        OUT     DAT_PSP_PARAM * );      /* psp_param            */
 
-extern DAT_RETURN dat_psp_free (
+extern DAT_RETURN DAT_API dat_psp_free (
        IN      DAT_PSP_HANDLE );       /* psp_handle           */
 
 /* RSP functions */
 
-extern DAT_RETURN dat_rsp_create (
+extern DAT_RETURN DAT_API dat_rsp_create (
        IN      DAT_IA_HANDLE,          /* ia_handle            */
        IN      DAT_CONN_QUAL,          /* conn_qual            */
        IN      DAT_EP_HANDLE,          /* ep_handle            */
        IN      DAT_EVD_HANDLE,         /* evd_handle           */
        OUT     DAT_RSP_HANDLE * );     /* rsp_handle           */
 
-extern DAT_RETURN dat_rsp_query (
+extern DAT_RETURN DAT_API dat_rsp_query (
        IN      DAT_RSP_HANDLE,         /* rsp_handle           */
        IN      DAT_RSP_PARAM_MASK,     /* rsp_param_mask       */
        OUT     DAT_RSP_PARAM * );      /* rsp_param            */
 
-extern DAT_RETURN dat_rsp_free (
+extern DAT_RETURN DAT_API dat_rsp_free (
        IN      DAT_RSP_HANDLE );       /* rsp_handle           */
 
 /* CSP functions */
 
-extern DAT_RETURN dat_csp_create (
+extern DAT_RETURN DAT_API dat_csp_create (
        IN      DAT_IA_HANDLE,          /* ia_handle            */
        IN      DAT_COMM *,             /* communicator         */
        IN      DAT_IA_ADDRESS_PTR,     /* address              */
        IN      DAT_EVD_HANDLE,         /* evd_handle           */
        OUT     DAT_CSP_HANDLE * );     /* csp_handle           */
 
-extern DAT_RETURN dat_csp_query (
+extern DAT_RETURN DAT_API dat_csp_query (
        IN      DAT_CSP_HANDLE,         /* csp_handle           */
        IN      DAT_CSP_PARAM_MASK,     /* csp_param_mask       */
        OUT     DAT_CSP_PARAM * );      /* csp_param            */
 
-extern DAT_RETURN dat_csp_free (
+extern DAT_RETURN DAT_API dat_csp_free (
        IN      DAT_CSP_HANDLE );       /* csp_handle           */
 
 /* PZ functions */
 
-extern DAT_RETURN dat_pz_create (
+extern DAT_RETURN DAT_API dat_pz_create (
        IN      DAT_IA_HANDLE,          /* ia_handle            */
        OUT     DAT_PZ_HANDLE * );      /* pz_handle            */
 
-extern DAT_RETURN dat_pz_query (
+extern DAT_RETURN DAT_API dat_pz_query (
        IN      DAT_PZ_HANDLE,          /* pz_handle            */
        IN      DAT_PZ_PARAM_MASK,      /* pz_param_mask        */
        OUT     DAT_PZ_PARAM *);        /* pz_param             */
 
-extern DAT_RETURN dat_pz_free (
+extern DAT_RETURN DAT_API dat_pz_free (
        IN      DAT_PZ_HANDLE );        /* pz_handle            */
 
 /* SRQ functions */
 
-extern DAT_RETURN dat_srq_create (
+extern DAT_RETURN DAT_API dat_srq_create (
         IN      DAT_IA_HANDLE,          /* ia_handle            */
         IN      DAT_PZ_HANDLE,          /* pz_handle            */
         IN      DAT_SRQ_ATTR *,         /* srq_attr             */
         OUT     DAT_SRQ_HANDLE *);      /* srq_handle           */
 
-extern DAT_RETURN dat_srq_free (
+extern DAT_RETURN DAT_API dat_srq_free (
        IN      DAT_SRQ_HANDLE);        /* srq_handle           */
 
-extern DAT_RETURN dat_srq_post_recv (
+extern DAT_RETURN DAT_API dat_srq_post_recv (
        IN      DAT_SRQ_HANDLE,         /* srq_handle           */
        IN      DAT_COUNT,              /* num_segments         */
        IN      DAT_LMR_TRIPLET *,      /* local_iov            */
        IN      DAT_DTO_COOKIE);        /* user_cookie          */
 
-extern DAT_RETURN dat_srq_query (
+extern DAT_RETURN DAT_API dat_srq_query (
        IN      DAT_SRQ_HANDLE,         /* srq_handle           */
        IN      DAT_SRQ_PARAM_MASK,     /* srq_param_mask       */
        OUT     DAT_SRQ_PARAM *);       /* srq_param            */
 
-extern DAT_RETURN dat_srq_resize (
+extern DAT_RETURN DAT_API dat_srq_resize (
        IN      DAT_SRQ_HANDLE,         /* srq_handle           */
        IN      DAT_COUNT);             /* srq_max_recv_dto     */
 
-extern DAT_RETURN dat_srq_set_lw (
+extern DAT_RETURN DAT_API dat_srq_set_lw (
        IN      DAT_SRQ_HANDLE,         /* srq_handle           */
        IN      DAT_COUNT);             /* low_watermark        */
 
 #ifdef DAT_EXTENSIONS
 typedef int    DAT_EXTENDED_OP;
-extern DAT_RETURN dat_extension_op(
+extern DAT_RETURN DAT_API dat_extension_op(
        IN      DAT_HANDLE,             /* handle */
        IN      DAT_EXTENDED_OP,        /* operation */
        IN      ... );                  /* args */
@@ -1349,7 +1354,7 @@ extern DAT_RETURN dat_extension_op(
  * Note the dat_ia_open and dat_ia_close functions are linked to
  * registration code which "redirects" to the appropriate provider.
  */
-extern DAT_RETURN dat_registry_list_providers (
+extern DAT_RETURN DAT_API dat_registry_list_providers (
        IN      DAT_COUNT,              /* max_to_return        */
        OUT     DAT_COUNT *,            /* entries_returned     */
        OUT     DAT_PROVIDER_INFO *(dat_provider_list[]) ); /* 
dat_provider_list */
@@ -1357,10 +1362,14 @@ extern DAT_RETURN dat_registry_list_providers (
 /*
  * DAT error functions.
  */
-extern DAT_RETURN dat_strerror (
+extern DAT_RETURN DAT_API dat_strerror (
        IN      DAT_RETURN,             /* dat function return */
        OUT     const char ** ,         /* major message string */
        OUT     const char ** );        /* minor message string */
 
+#ifdef __cplusplus
+}
+#endif
+
 #endif /* _DAT_H_ */
 
diff --git a/dat/include/dat/dat_platform_specific.h 
b/dat/include/dat/dat_platform_specific.h
index 0314035..8a839d1 100644
--- a/dat/include/dat/dat_platform_specific.h
+++ b/dat/include/dat/dat_platform_specific.h
@@ -133,6 +133,9 @@ typedef struct sockaddr_in6    DAT_SOCK_ADDR6; /* Socket 
address header native t
 
 typedef DAT_UINT64             DAT_PADDR;
 
+#define DAT_API
+#define DAT_EXPORT             extern
+
 /* Solaris ends */
 
 
@@ -174,37 +177,74 @@ typedef int DAT_FD;               /* DAT File Descriptor 
*/
 
 typedef struct sockaddr         DAT_SOCK_ADDR; /* Socket address header native 
to OS */
 typedef struct sockaddr_in6     DAT_SOCK_ADDR6; /* Socket address header 
native to OS */
-#define DAT_AF_INET AF_INET
-#define DAT_AF_INET6 AF_INET6
-/* Linux ends */
+#define DAT_AF_INET            AF_INET
+#define DAT_AF_INET6           AF_INET6
+
+#define DAT_API
+#define DAT_EXPORT             extern
 
+/* Linux ends */
 
-/* Win32 begins */
-#elif defined(_MSC_VER) || defined(_WIN32) /* NT. MSC compiler, Win32 platform 
*/
+/* Win32/64 begins */
+#elif defined(_MSC_VER) || defined(_WIN32) || defined(_WIN64)
+/* NT. MSC compiler, Win32/64 platform */
 
 typedef unsigned __int32        DAT_UINT32;    /* Unsigned host order, 32 bits 
*/
 typedef unsigned __int64        DAT_UINT64;    /* unsigned host order, 64 bits 
*/
-typedef unsigned  long         DAT_UVERYLONG;  /* unsigned longest native to 
compiler */
+typedef unsigned  long         DAT_UVERYLONG;  /* unsigned longest native to 
compiler */
+
+#if defined(_WIN64)
+#define DAT_IA_HANDLE_TO_UL(a) (unsigned long)((DAT_UINT64)(a))
+#define UL_TO_DAT_IA_HANDLE(a) (DAT_IA_HANDLE)((DAT_UINT64)(a))
+#else // _WIN32
+#define DAT_IA_HANDLE_TO_UL(a) (unsigned long)(a)
+#define UL_TO_DAT_IA_HANDLE(a) (DAT_IA_HANDLE)(a)
+#endif
 
 typedef void *                  DAT_PVOID;
 typedef long                    DAT_COUNT;
+typedef DAT_UINT64              DAT_PADDR;
 
-typedef struct sockaddr         DAT_SOCK_ADDR; /* Socket address header native 
to OS */
-typedef struct sockaddr_in6     DAT_SOCK_ADDR6; /* Socket address header 
native to OS */
+typedef struct dat_comm {
+       int     domain;
+       int     type;
+       int     protocol;
+} DAT_COMM;
+
+typedef int DAT_FD;            /* DAT File Descriptor */
+
+typedef struct sockaddr     DAT_SOCK_ADDR; /* Sock addr header native to OS */
+typedef struct sockaddr_in6 DAT_SOCK_ADDR6;/* Sock addr header native to OS */
 
 #ifndef UINT64_C
 #define UINT64_C(c) c ## i64
 #endif /* UINT64_C */
 
-#define DAT_AF_INET             AF_INET
-#define DAT_AF_INET6            AF_INET6
+#define DAT_AF_INET        AF_INET
+#define DAT_AF_INET6       AF_INET6
+
+#if defined(EXPORT_DAT_SYMBOLS)
+#define DAT_EXPORT     __declspec(dllexport)
+#else
+#define DAT_EXPORT     __declspec(dllimport)
+#endif
+
+#define DAT_API                __stdcall
+
+#ifndef __inline__
+#define __inline__     __inline
+#endif
+
+#ifndef INLINE
+#define INLINE         __inline
+#endif
 
 #if defined(__KDAPL__)
 /* must have the DDK for this definition */
 typedef PHYSICAL_ADDRESS       DAT_PADDR;
 #endif /* __KDAPL__ */
 
-/* Win32 ends */
+/* Win32/64 ends */
 
 
 #else
diff --git a/dat/include/dat/dat_registry.h b/dat/include/dat/dat_registry.h
index fe9db4b..80c3801 100644
--- a/dat/include/dat/dat_registry.h
+++ b/dat/include/dat/dat_registry.h
@@ -59,6 +59,11 @@
 #ifndef _DAT_REGISTRY_H_
 #define _DAT_REGISTRY_H_
 
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
 #if defined(_UDAT_H_)
 #include <dat/udat_redirection.h>
 #elif defined(_KDAT_H_)
@@ -78,11 +83,11 @@
  *
  */
 
-extern DAT_RETURN dat_registry_add_provider (
+extern DAT_RETURN DAT_API dat_registry_add_provider (
        IN  const DAT_PROVIDER *,               /* provider          */
        IN  const DAT_PROVIDER_INFO* );         /* provider info     */
 
-extern DAT_RETURN dat_registry_remove_provider (
+extern DAT_RETURN DAT_API dat_registry_remove_provider (
        IN  const DAT_PROVIDER *,               /* provider          */
        IN  const DAT_PROVIDER_INFO* );         /* provider info     */
 
@@ -99,11 +104,11 @@ extern DAT_RETURN dat_registry_remove_provider (
 #define DAT_PROVIDER_INIT_FUNC_STR   "dat_provider_init"
 #define DAT_PROVIDER_FINI_FUNC_STR   "dat_provider_fini"
 
-typedef void ( *DAT_PROVIDER_INIT_FUNC) (
+typedef void ( DAT_API *DAT_PROVIDER_INIT_FUNC) (
        IN const DAT_PROVIDER_INFO *,           /* provider info     */
        IN const char *);                       /* instance data     */
 
-typedef void ( *DAT_PROVIDER_FINI_FUNC) (
+typedef void ( DAT_API *DAT_PROVIDER_FINI_FUNC) (
        IN const DAT_PROVIDER_INFO *);          /* provider info     */
 
 typedef enum dat_ha_relationship
@@ -115,9 +120,13 @@ typedef enum dat_ha_relationship
        DAT_HA_EXTENSION_BASE
 } DAT_HA_RELATIONSHIP;
 
-extern DAT_RETURN dat_registry_providers_related (
+extern DAT_RETURN DAT_API dat_registry_providers_related (
        IN      const DAT_NAME_PTR,
        IN      const DAT_NAME_PTR,
        OUT     DAT_HA_RELATIONSHIP * );
 
+#ifdef __cplusplus
+}
+#endif
+
 #endif /* _DAT_REGISTRY_H_ */
diff --git a/dat/include/dat/udat.h b/dat/include/dat/udat.h
index 7a89241..a9bb2ac 100755
--- a/dat/include/dat/udat.h
+++ b/dat/include/dat/udat.h
@@ -60,6 +60,11 @@
 
 #include <dat/dat_platform_specific.h>
 
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
 typedef enum dat_mem_type
 {
         /* Shared between udat and kdat */
@@ -152,7 +157,7 @@ typedef char (* DAT_LMR_COOKIE)[DAT_LMR_COOKIE_SIZE];
 
 /* Format for OS wait proxy agent function */
 
-typedef void (*DAT_AGENT_FUNC)
+typedef void (DAT_API *DAT_AGENT_FUNC)
 (
     DAT_PVOID,                 /* instance data */
     DAT_EVD_HANDLE             /* Event Dispatcher*/
@@ -410,7 +415,7 @@ struct dat_provider_attr
  * User DAT function call definitions,
  */
 
-extern DAT_RETURN dat_lmr_create (
+extern DAT_RETURN DAT_API dat_lmr_create (
        IN      DAT_IA_HANDLE,          /* ia_handle            */
        IN      DAT_MEM_TYPE,           /* mem_type             */
        IN      DAT_REGION_DESCRIPTION, /* region_description   */
@@ -424,72 +429,76 @@ extern DAT_RETURN dat_lmr_create (
        OUT     DAT_VLEN *,             /* registered_length    */
        OUT     DAT_VADDR * );          /* registered_address   */
 
-extern DAT_RETURN dat_lmr_query (
+extern DAT_RETURN DAT_API dat_lmr_query (
        IN      DAT_LMR_HANDLE,         /* lmr_handle           */
        IN      DAT_LMR_PARAM_MASK,     /* lmr_param_mask       */
        OUT     DAT_LMR_PARAM * );      /* lmr_param            */
 
 /* Event Functions */
 
-extern DAT_RETURN dat_evd_create (
+extern DAT_RETURN DAT_API dat_evd_create (
        IN      DAT_IA_HANDLE,          /* ia_handle            */
        IN      DAT_COUNT,              /* evd_min_qlen         */
        IN      DAT_CNO_HANDLE,         /* cno_handle           */
        IN      DAT_EVD_FLAGS,          /* evd_flags            */
        OUT     DAT_EVD_HANDLE * );     /* evd_handle           */
 
-extern DAT_RETURN dat_evd_modify_cno (
+extern DAT_RETURN DAT_API dat_evd_modify_cno (
        IN      DAT_EVD_HANDLE,         /* evd_handle           */
        IN      DAT_CNO_HANDLE);        /* cno_handle           */
 
-extern DAT_RETURN dat_cno_create (
+extern DAT_RETURN DAT_API dat_cno_create (
        IN      DAT_IA_HANDLE,          /* ia_handle            */
        IN      DAT_OS_WAIT_PROXY_AGENT,/* agent                */
        OUT     DAT_CNO_HANDLE *);      /* cno_handle           */
 
-extern DAT_RETURN dat_cno_modify_agent (
+extern DAT_RETURN DAT_API dat_cno_modify_agent (
        IN      DAT_CNO_HANDLE,          /* cno_handle           */
        IN      DAT_OS_WAIT_PROXY_AGENT);/* agent                */
 
-extern DAT_RETURN dat_cno_query (
+extern DAT_RETURN DAT_API dat_cno_query (
        IN      DAT_CNO_HANDLE,         /* cno_handle            */
        IN      DAT_CNO_PARAM_MASK,     /* cno_param_mask        */
        OUT     DAT_CNO_PARAM * );      /* cno_param             */
 
-extern DAT_RETURN dat_cno_free (
+extern DAT_RETURN DAT_API dat_cno_free (
        IN DAT_CNO_HANDLE);             /* cno_handle            */
 
-extern DAT_RETURN dat_cno_wait (
+extern DAT_RETURN DAT_API dat_cno_wait (
        IN      DAT_CNO_HANDLE,         /* cno_handle            */
        IN      DAT_TIMEOUT,            /* timeout               */
        OUT     DAT_EVD_HANDLE *);      /* evd_handle            */
 
-extern DAT_RETURN dat_evd_enable (
+extern DAT_RETURN DAT_API dat_evd_enable (
        IN      DAT_EVD_HANDLE);        /* evd_handle            */
 
-extern DAT_RETURN dat_evd_wait (
+extern DAT_RETURN DAT_API dat_evd_wait (
        IN      DAT_EVD_HANDLE,         /* evd_handle            */
        IN      DAT_TIMEOUT,            /* timeout               */
        IN      DAT_COUNT,              /* threshold             */
        OUT     DAT_EVENT *,            /* event                 */
        OUT     DAT_COUNT * );          /* n_more_events         */
 
-extern DAT_RETURN dat_evd_disable (
+extern DAT_RETURN DAT_API dat_evd_disable (
        IN      DAT_EVD_HANDLE);        /* evd_handle            */
 
-extern DAT_RETURN dat_evd_set_unwaitable (
+extern DAT_RETURN DAT_API dat_evd_set_unwaitable (
        IN DAT_EVD_HANDLE);             /* evd_handle            */
 
-extern DAT_RETURN dat_evd_clear_unwaitable (
+extern DAT_RETURN DAT_API dat_evd_clear_unwaitable (
        IN DAT_EVD_HANDLE);             /* evd_handle            */
 
-extern DAT_RETURN dat_cno_fd_create (
+extern DAT_RETURN DAT_API dat_cno_fd_create (
        IN      DAT_IA_HANDLE,          /* ia_handle            */
        OUT     DAT_FD *,               /* file descriptor      */
        OUT     DAT_CNO_HANDLE * );     /* cno_handle           */
 
-extern DAT_RETURN dat_cno_trigger (
+extern DAT_RETURN DAT_API dat_cno_trigger (
        IN      DAT_CNO_HANDLE,         /* cno_handle           */
        OUT     DAT_EVD_HANDLE * );     /* evd_handle           */
 
+#ifdef __cplusplus
+}
+#endif
+
 #endif /* _UDAT_H_ */
diff --git a/dat/udat/udat.c b/dat/udat/udat.c
index 8356482..9137e65 100755
--- a/dat/udat/udat.c
+++ b/dat/udat/udat.c
@@ -82,15 +82,15 @@ int g_dat_extensions = 0;
  * Function: dat_registry_add_provider
  ***********************************************************************/
 
-DAT_RETURN
+DAT_RETURN DAT_API
 dat_registry_add_provider (
        IN  const DAT_PROVIDER          *provider,
        IN  const DAT_PROVIDER_INFO     *provider_info )
 {
-    DAT_DR_ENTRY               entry;
+    DAT_DR_ENTRY       entry;
 
     dat_os_dbg_print (DAT_OS_DBG_TYPE_PROVIDER_API,
-                     "DAT Registry: dat_registry_add_provider (%s,%x:%x,%x)\n",
+             "DAT Registry: %s (%s,%x:%x,%x)\n", __FUNCTION__,
                      provider_info->ia_name,
                      provider_info->dapl_version_major,
                      provider_info->dapl_version_minor,
@@ -123,7 +123,7 @@ dat_registry_add_provider (
 // Function: dat_registry_remove_provider
 //***********************************************************************
 
-DAT_RETURN
+DAT_RETURN DAT_API
 dat_registry_remove_provider (
        IN  const DAT_PROVIDER          *provider,
        IN  const DAT_PROVIDER_INFO     *provider_info )
@@ -155,7 +155,7 @@ dat_registry_remove_provider (
  * Function: dat_ia_open
  ***********************************************************************/
 
-DAT_RETURN
+DAT_RETURN DAT_API
 dat_ia_openv (
     IN    const DAT_NAME_PTR   name,
     IN    DAT_COUNT            async_event_qlen,
@@ -271,7 +271,7 @@ dat_ia_openv (
  * Function: dat_ia_close
  ***********************************************************************/
 
-DAT_RETURN
+DAT_RETURN DAT_API
 dat_ia_close (
     IN DAT_IA_HANDLE   ia_handle,
     IN DAT_CLOSE_FLAGS ia_flags)
@@ -366,7 +366,7 @@ dat_ia_close (
 // Function: dat_registry_list_providers
 //***********************************************************************
 
-DAT_RETURN
+DAT_RETURN DAT_API
 dat_registry_list_providers (
     IN  DAT_COUNT              max_to_return,
     OUT DAT_COUNT              *entries_returned,
diff --git a/dat/udat/udat_api.c b/dat/udat/udat_api.c
index 58813fe..8dea05c 100644
--- a/dat/udat/udat_api.c
+++ b/dat/udat/udat_api.c
@@ -52,7 +52,7 @@
 
 #define UDAT_IS_BAD_HANDLE(h) ( NULL == (p) )
 
-DAT_RETURN dat_lmr_create (
+DAT_RETURN DAT_API dat_lmr_create (
        IN      DAT_IA_HANDLE           ia_handle,
        IN      DAT_MEM_TYPE            mem_type,
        IN      DAT_REGION_DESCRIPTION  region_description,
@@ -91,7 +91,7 @@ DAT_RETURN dat_lmr_create (
 }
 
 
-DAT_RETURN dat_evd_create (
+DAT_RETURN DAT_API dat_evd_create (
        IN      DAT_IA_HANDLE           ia_handle,
        IN      DAT_COUNT               evd_min_qlen,
        IN      DAT_CNO_HANDLE          cno_handle,
@@ -116,7 +116,7 @@ DAT_RETURN dat_evd_create (
 }
 
 
-DAT_RETURN dat_evd_modify_cno (
+DAT_RETURN DAT_API dat_evd_modify_cno (
        IN      DAT_EVD_HANDLE          evd_handle,
        IN      DAT_CNO_HANDLE          cno_handle)
 {
@@ -129,7 +129,7 @@ DAT_RETURN dat_evd_modify_cno (
 }
 
 
-DAT_RETURN dat_cno_create (
+DAT_RETURN DAT_API dat_cno_create (
        IN      DAT_IA_HANDLE           ia_handle,
        IN      DAT_OS_WAIT_PROXY_AGENT agent,
        OUT     DAT_CNO_HANDLE          *cno_handle)
@@ -149,7 +149,7 @@ DAT_RETURN dat_cno_create (
     return dat_status;
 }
 
-DAT_RETURN dat_cno_fd_create (
+DAT_RETURN DAT_API dat_cno_fd_create (
        IN      DAT_IA_HANDLE           ia_handle,
        OUT     DAT_FD                  *fd,
        OUT     DAT_CNO_HANDLE          *cno_handle)
@@ -169,7 +169,7 @@ DAT_RETURN dat_cno_fd_create (
     return dat_status;
 }
 
-DAT_RETURN dat_cno_modify_agent (
+DAT_RETURN DAT_API dat_cno_modify_agent (
        IN      DAT_CNO_HANDLE           cno_handle,
        IN      DAT_OS_WAIT_PROXY_AGENT  agent)
 {
@@ -182,7 +182,7 @@ DAT_RETURN dat_cno_modify_agent (
 }
 
 
-DAT_RETURN dat_cno_query (
+DAT_RETURN DAT_API dat_cno_query (
        IN      DAT_CNO_HANDLE          cno_handle,
        IN      DAT_CNO_PARAM_MASK      cno_param_mask,
        OUT     DAT_CNO_PARAM           *cno_param)
@@ -193,7 +193,7 @@ DAT_RETURN dat_cno_query (
 }
 
 
-DAT_RETURN dat_cno_free (
+DAT_RETURN DAT_API dat_cno_free (
        IN DAT_CNO_HANDLE               cno_handle)
 {
     if (cno_handle == NULL)
@@ -204,7 +204,7 @@ DAT_RETURN dat_cno_free (
 }
 
 
-DAT_RETURN dat_cno_wait (
+DAT_RETURN DAT_API dat_cno_wait (
        IN      DAT_CNO_HANDLE          cno_handle,
        IN      DAT_TIMEOUT             timeout,
        OUT     DAT_EVD_HANDLE          *evd_handle)
@@ -219,7 +219,7 @@ DAT_RETURN dat_cno_wait (
 }
 
 
-DAT_RETURN dat_evd_enable (
+DAT_RETURN DAT_API dat_evd_enable (
        IN      DAT_EVD_HANDLE          evd_handle)
 {
     if (evd_handle == NULL)
@@ -230,7 +230,7 @@ DAT_RETURN dat_evd_enable (
 }
 
 
-DAT_RETURN dat_evd_wait (
+DAT_RETURN DAT_API dat_evd_wait (
        IN      DAT_EVD_HANDLE          evd_handle,
        IN      DAT_TIMEOUT             Timeout,
        IN      DAT_COUNT               Threshold,
@@ -249,7 +249,7 @@ DAT_RETURN dat_evd_wait (
 }
 
 
-DAT_RETURN dat_evd_disable (
+DAT_RETURN DAT_API dat_evd_disable (
        IN      DAT_EVD_HANDLE          evd_handle)
 {
     if (evd_handle == NULL)
@@ -260,7 +260,7 @@ DAT_RETURN dat_evd_disable (
 }
 
 
-DAT_RETURN dat_evd_set_unwaitable (
+DAT_RETURN DAT_API dat_evd_set_unwaitable (
        IN      DAT_EVD_HANDLE           evd_handle)
 {
     if (evd_handle == NULL)
@@ -271,7 +271,7 @@ DAT_RETURN dat_evd_set_unwaitable (
 }
 
 
-DAT_RETURN dat_evd_clear_unwaitable (
+DAT_RETURN DAT_API dat_evd_clear_unwaitable (
        IN      DAT_EVD_HANDLE           evd_handle)
 {
     if (evd_handle == NULL)
@@ -283,7 +283,7 @@ DAT_RETURN dat_evd_clear_unwaitable (
 
 
 
-DAT_RETURN dat_cr_handoff (
+DAT_RETURN DAT_API dat_cr_handoff (
     IN          DAT_CR_HANDLE          cr_handle,
     IN          DAT_CONN_QUAL          handoff)
 {
@@ -296,7 +296,7 @@ DAT_RETURN dat_cr_handoff (
 }
 
 
-DAT_RETURN dat_lmr_query (
+DAT_RETURN DAT_API dat_lmr_query (
        IN      DAT_LMR_HANDLE          lmr_handle,
        IN      DAT_LMR_PARAM_MASK      lmr_param_mask,
        OUT     DAT_LMR_PARAM           *lmr_param)
_______________________________________________
general mailing list
[email protected]
http://lists.openfabrics.org/cgi-bin/mailman/listinfo/general

To unsubscribe, please visit http://openib.org/mailman/listinfo/openib-general

Reply via email to