* User-level wrappers that dispatch across the protection boundaries
*
* Copyright (c) 2001-2003 Cluster File Systems, Inc.
- * Copyright (c) 2001-2002 Sandia National Laboratories
*
* This file is part of Lustre, http://www.sf.net/projects/lustre/
*
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
-# define DEBUG_SUBSYSTEM S_PORTALS
+#define DEBUG_SUBSYSTEM S_PORTALS
#include <portals/api-support.h>
void PtlSnprintHandle(char *str, int len, ptl_handle_any_t h)
{
if (!ptl_init)
return PTL_NO_INIT;
-
+
if (ptl_hndl2nal(&handle_in) == NULL)
return PTL_HANDLE_INVALID;
-
+
*ni_out = handle_in;
return PTL_OK;
}
if (!ptl_init)
return PTL_NO_INIT;
-
+
nal = ptl_hndl2nal(&ni_handle);
if (nal == NULL)
return PTL_NI_INVALID;
return nal->nal_get_id(nal, id);
}
-int PtlFailNid (ptl_handle_ni_t interface, ptl_nid_t nid, unsigned int threshold)
+int PtlGetUid(ptl_handle_ni_t ni_handle, ptl_uid_t *uid)
{
nal_t *nal;
if (!ptl_init)
return PTL_NO_INIT;
-
+
+ nal = ptl_hndl2nal(&ni_handle);
+ if (nal == NULL)
+ return PTL_NI_INVALID;
+
+ /* We don't support different uids yet */
+ *uid = 0;
+ return PTL_OK;
+}
+
+int PtlFailNid (ptl_handle_ni_t interface, ptl_nid_t nid, unsigned int threshold)
+{
+ nal_t *nal;
+
+ if (!ptl_init)
+ return PTL_NO_INIT;
+
nal = ptl_hndl2nal(&interface);
if (nal == NULL)
return PTL_NI_INVALID;
return nal->nal_fail_nid(nal, nid, threshold);
}
+int PtlLoopback (ptl_handle_ni_t interface, int set, int *enabled)
+{
+ nal_t *nal;
+
+ if (!ptl_init)
+ return PTL_NO_INIT;
+
+ nal = ptl_hndl2nal(&interface);
+ if (nal == NULL)
+ return PTL_NI_INVALID;
+
+ return nal->nal_loopback(nal, set, enabled);
+}
+
int PtlNIStatus(ptl_handle_ni_t interface_in, ptl_sr_index_t register_in,
ptl_sr_value_t *status_out)
{
if (!ptl_init)
return PTL_NO_INIT;
-
+
nal = ptl_hndl2nal(&interface_in);
if (nal == NULL)
return PTL_NI_INVALID;
if (!ptl_init)
return PTL_NO_INIT;
-
+
nal = ptl_hndl2nal(&interface_in);
if (nal == NULL)
return PTL_NI_INVALID;
if (!ptl_init)
return PTL_NO_INIT;
-
+
nal = ptl_hndl2nal(&interface_in);
if (nal == NULL)
return PTL_NI_INVALID;
- return nal->nal_me_attach(nal, index_in, match_id_in,
+ return nal->nal_me_attach(nal, index_in, match_id_in,
match_bits_in, ignore_bits_in,
unlink_in, pos_in, handle_out);
}
if (!ptl_init)
return PTL_NO_INIT;
-
+
nal = ptl_hndl2nal(¤t_in);
if (nal == NULL)
return PTL_ME_INVALID;
if (!ptl_init)
return PTL_NO_INIT;
-
+
nal = ptl_hndl2nal(¤t_in);
if (nal == NULL)
return PTL_ME_INVALID;
if (!ptl_init)
return PTL_NO_INIT;
-
+
nal = ptl_hndl2nal(&me_in);
if (nal == NULL)
return PTL_ME_INVALID;
- if (!PtlHandleIsEqual(md_in.eventq, PTL_EQ_NONE) &&
- ptl_hndl2nal(&md_in.eventq) != nal)
+ if (!PtlHandleIsEqual(md_in.eq_handle, PTL_EQ_NONE) &&
+ ptl_hndl2nal(&md_in.eq_handle) != nal)
return PTL_MD_ILLEGAL;
- return (nal->nal_md_attach)(nal, &me_in, &md_in,
+ return (nal->nal_md_attach)(nal, &me_in, &md_in,
unlink_in, handle_out);
}
if (!ptl_init)
return PTL_NO_INIT;
-
+
nal = ptl_hndl2nal(&ni_in);
if (nal == NULL)
return PTL_NI_INVALID;
- if (!PtlHandleIsEqual(md_in.eventq, PTL_EQ_NONE) &&
- ptl_hndl2nal(&md_in.eventq) != nal)
+ if (!PtlHandleIsEqual(md_in.eq_handle, PTL_EQ_NONE) &&
+ ptl_hndl2nal(&md_in.eq_handle) != nal)
return PTL_MD_ILLEGAL;
return (nal->nal_md_bind)(nal, &md_in, unlink_in, handle_out);
ptl_md_t *new_inout, ptl_handle_eq_t testq_in)
{
nal_t *nal;
-
+
if (!ptl_init)
return PTL_NO_INIT;
-
+
nal = ptl_hndl2nal(&md_in);
if (nal == NULL)
return PTL_MD_INVALID;
ptl_hndl2nal(&testq_in) != nal)
return PTL_EQ_INVALID;
- return (nal->nal_md_update)(nal, &md_in,
+ return (nal->nal_md_update)(nal, &md_in,
old_inout, new_inout, &testq_in);
}
int PtlMDUnlink(ptl_handle_md_t md_in)
{
nal_t *nal;
-
+
if (!ptl_init)
return PTL_NO_INIT;
-
+
nal = ptl_hndl2nal(&md_in);
if (nal == NULL)
return PTL_MD_INVALID;
-
+
return (nal->nal_md_unlink)(nal, &md_in);
}
ptl_handle_eq_t *handle_out)
{
nal_t *nal;
-
+
if (!ptl_init)
return PTL_NO_INIT;
-
+
nal = ptl_hndl2nal(&interface);
if (nal == NULL)
return PTL_NI_INVALID;
if (!ptl_init)
return PTL_NO_INIT;
-
+
nal = ptl_hndl2nal(&eventq);
if (nal == NULL)
return PTL_EQ_INVALID;
int PtlEQGet(ptl_handle_eq_t eventq, ptl_event_t *ev)
{
int which;
-
+
return (PtlEQPoll (&eventq, 1, 0, ev, &which));
}
int PtlEQWait(ptl_handle_eq_t eventq_in, ptl_event_t *event_out)
{
int which;
-
- return (PtlEQPoll (&eventq_in, 1, PTL_TIME_FOREVER,
+
+ return (PtlEQPoll (&eventq_in, 1, PTL_TIME_FOREVER,
event_out, &which));
}
if (!ptl_init)
return PTL_NO_INIT;
-
+
nal = ptl_hndl2nal(&ni_in);
if (nal == NULL)
return PTL_NI_INVALID;
-
+
return (nal->nal_ace_entry)(nal, index_in, match_id_in, portal_in);
}
if (!ptl_init)
return PTL_NO_INIT;
-
+
nal = ptl_hndl2nal(&md_in);
if (nal == NULL)
return PTL_MD_INVALID;
if (nal == NULL)
return PTL_MD_INVALID;
- return (nal->nal_get)(nal, &md_in,
+ return (nal->nal_get)(nal, &md_in,
&target_in, portal_in, ac_in,
match_bits_in, offset_in);
}