X-Git-Url: https://git.whamcloud.com/?a=blobdiff_plain;f=lnet%2Finclude%2Flnet%2Ftypes.h;h=d080c9690016f8d7f6e534931f72013e13958290;hb=45e7b37d4e4925865ed9c7c1adf3e91b5628ee7f;hp=ef2712b0b2ec39613fdd610d6b781f3c0f95ef4a;hpb=5ba5b49768995332e0c94ba70ae4d65aaa2f9972;p=fs%2Flustre-release.git diff --git a/lnet/include/lnet/types.h b/lnet/include/lnet/types.h index ef2712b..d080c96 100644 --- a/lnet/include/lnet/types.h +++ b/lnet/include/lnet/types.h @@ -1,122 +1,129 @@ -#ifndef _P30_TYPES_H_ -#define _P30_TYPES_H_ +/* -*- mode: c; c-basic-offset: 8; indent-tabs-mode: nil; -*- + * vim:expandtab:shiftwidth=8:tabstop=8: + */ +#ifndef __LNET_TYPES_H__ +#define __LNET_TYPES_H__ + +#include + +#define LNET_RESERVED_PORTAL 0 /* portals reserved for lnet's own use */ -#include "build_check.h" +typedef __u64 lnet_nid_t; +typedef __u32 lnet_pid_t; -#include -#include +#define LNET_NID_ANY ((lnet_nid_t) -1) +#define LNET_PID_ANY ((lnet_pid_t) -1) -/* This implementation uses the same type for API function return codes and - * the completion status in an event */ -#define PTL_NI_OK PTL_OK -typedef ptl_err_t ptl_ni_fail_t; +#ifdef CRAY_XT3 +typedef __u32 lnet_uid_t; +#define LNET_UID_ANY ((lnet_uid_t) -1) +#endif -typedef __u64 ptl_nid_t; -typedef __u32 ptl_pid_t; -typedef __u32 ptl_pt_index_t; -typedef __u32 ptl_ac_index_t; -typedef __u64 ptl_match_bits_t; -typedef __u64 ptl_hdr_data_t; -typedef __u32 ptl_size_t; +#define LNET_PID_RESERVED 0xf0000000 /* reserved bits in PID */ +#define LNET_PID_USERFLAG 0x80000000 /* set in userspace peers */ -#define PTL_TIME_FOREVER (-1) +#define LNET_TIME_FOREVER (-1) typedef struct { - unsigned long nal_idx; /* which network interface */ - __u64 cookie; /* which thing on that interface */ -} ptl_handle_any_t; + __u64 cookie; +} lnet_handle_any_t; -typedef ptl_handle_any_t ptl_handle_ni_t; -typedef ptl_handle_any_t ptl_handle_eq_t; -typedef ptl_handle_any_t ptl_handle_md_t; -typedef ptl_handle_any_t ptl_handle_me_t; +typedef lnet_handle_any_t lnet_handle_eq_t; +typedef lnet_handle_any_t lnet_handle_md_t; +typedef lnet_handle_any_t lnet_handle_me_t; -#define PTL_INVALID_HANDLE \ - ((const ptl_handle_any_t){.nal_idx = -1, .cookie = -1}) -#define PTL_EQ_NONE PTL_INVALID_HANDLE +#define LNET_INVALID_HANDLE \ + ((const lnet_handle_any_t){.cookie = -1}) +#define LNET_EQ_NONE LNET_INVALID_HANDLE -static inline int PtlHandleIsEqual (ptl_handle_any_t h1, ptl_handle_any_t h2) +static inline int LNetHandleIsEqual (lnet_handle_any_t h1, lnet_handle_any_t h2) { - return (h1.nal_idx == h2.nal_idx && h1.cookie == h2.cookie); + return (h1.cookie == h2.cookie); } -#define PTL_NID_ANY ((ptl_nid_t) -1) -#define PTL_PID_ANY ((ptl_pid_t) -1) - typedef struct { - ptl_nid_t nid; - ptl_pid_t pid; /* node id / process id */ -} ptl_process_id_t; + lnet_nid_t nid; + lnet_pid_t pid; /* node id / process id */ +} lnet_process_id_t; typedef enum { - PTL_RETAIN = 0, - PTL_UNLINK -} ptl_unlink_t; + LNET_RETAIN = 0, + LNET_UNLINK +} lnet_unlink_t; typedef enum { - PTL_INS_BEFORE, - PTL_INS_AFTER -} ptl_ins_pos_t; + LNET_INS_BEFORE, + LNET_INS_AFTER +} lnet_ins_pos_t; typedef struct { void *start; - ptl_size_t length; + unsigned int length; int threshold; int max_size; unsigned int options; void *user_ptr; - ptl_handle_eq_t eventq; -} ptl_md_t; + lnet_handle_eq_t eq_handle; +} lnet_md_t; + +/* Max Transfer Unit (minimum supported everywhere) */ +#define LNET_MTU_BITS 20 +#define LNET_MTU (1< (PAGE_SIZE * LNET_MAX_IOV)) +/* PAGE_SIZE is a constant: check with cpp! */ +# error "LNET_MAX_PAYLOAD too large - error in configure --with-max-payload-mb" +# endif +# endif +#endif /* Options for the MD structure */ -#define PTL_MD_OP_PUT (1 << 0) -#define PTL_MD_OP_GET (1 << 1) -#define PTL_MD_MANAGE_REMOTE (1 << 2) -/* unused (1 << 3) */ -#define PTL_MD_TRUNCATE (1 << 4) -#define PTL_MD_ACK_DISABLE (1 << 5) -#define PTL_MD_IOVEC (1 << 6) -#define PTL_MD_MAX_SIZE (1 << 7) -#define PTL_MD_KIOV (1 << 8) -#define PTL_MD_EVENT_START_DISABLE (1 << 9) -#define PTL_MD_EVENT_END_DISABLE (1 << 10) +#define LNET_MD_OP_PUT (1 << 0) +#define LNET_MD_OP_GET (1 << 1) +#define LNET_MD_MANAGE_REMOTE (1 << 2) +/* unused (1 << 3) */ +#define LNET_MD_TRUNCATE (1 << 4) +#define LNET_MD_ACK_DISABLE (1 << 5) +#define LNET_MD_IOVEC (1 << 6) +#define LNET_MD_MAX_SIZE (1 << 7) +#define LNET_MD_KIOV (1 << 8) /* For compatibility with Cray Portals */ -#define PTL_MD_LUSTRE_COMPLETION_SEMANTICS 0 -#define PTL_MD_PHYS 0 +#define LNET_MD_PHYS 0 -#define PTL_MD_THRESH_INF (-1) +#define LNET_MD_THRESH_INF (-1) /* NB lustre portals uses struct iovec internally! */ -typedef struct iovec ptl_md_iovec_t; +typedef struct iovec lnet_md_iovec_t; typedef struct { - struct page *kiov_page; - unsigned int kiov_len; - unsigned int kiov_offset; -} ptl_kiov_t; + cfs_page_t *kiov_page; + unsigned int kiov_len; + unsigned int kiov_offset; +} lnet_kiov_t; typedef enum { - PTL_EVENT_GET_START, - PTL_EVENT_GET_END, - - PTL_EVENT_PUT_START, - PTL_EVENT_PUT_END, - - PTL_EVENT_REPLY_START, - PTL_EVENT_REPLY_END, - - PTL_EVENT_ACK, - - PTL_EVENT_SEND_START, - PTL_EVENT_SEND_END, - - PTL_EVENT_UNLINK, -} ptl_event_kind_t; - -#define PTL_SEQ_BASETYPE long -typedef unsigned PTL_SEQ_BASETYPE ptl_seq_t; -#define PTL_SEQ_GT(a,b) (((signed PTL_SEQ_BASETYPE)((a) - (b))) > 0) + LNET_EVENT_GET, + LNET_EVENT_PUT, + LNET_EVENT_REPLY, + LNET_EVENT_ACK, + LNET_EVENT_SEND, + LNET_EVENT_UNLINK, +} lnet_event_kind_t; + +#define LNET_SEQ_BASETYPE long +typedef unsigned LNET_SEQ_BASETYPE lnet_seq_t; +#define LNET_SEQ_GT(a,b) (((signed LNET_SEQ_BASETYPE)((a) - (b))) > 0) /* XXX * cygwin need the pragma line, not clear if it's needed in other places. @@ -126,70 +133,36 @@ typedef unsigned PTL_SEQ_BASETYPE ptl_seq_t; #pragma pack(push, 4) #endif typedef struct { - ptl_event_kind_t type; - ptl_process_id_t initiator; - ptl_pt_index_t portal; - ptl_match_bits_t match_bits; - ptl_size_t rlength; - ptl_size_t mlength; - ptl_size_t offset; - ptl_md_t mem_desc; - ptl_hdr_data_t hdr_data; - int unlinked; - ptl_ni_fail_t ni_fail_type; - - volatile ptl_seq_t sequence; -} ptl_event_t; + lnet_process_id_t target; + lnet_process_id_t initiator; + lnet_nid_t sender; + lnet_event_kind_t type; + unsigned int pt_index; + __u64 match_bits; + unsigned int rlength; + unsigned int mlength; + lnet_handle_md_t md_handle; + lnet_md_t md; + __u64 hdr_data; + int status; + int unlinked; + unsigned int offset; +#ifdef CRAY_XT3 + lnet_uid_t uid; +#endif + + volatile lnet_seq_t sequence; +} lnet_event_t; #ifdef __CYGWIN__ #pragma pop #endif typedef enum { - PTL_ACK_REQ, - PTL_NOACK_REQ -} ptl_ack_req_t; - -typedef void (*ptl_eq_handler_t)(ptl_event_t *event); -#define PTL_EQ_HANDLER_NONE NULL - -typedef struct { - volatile ptl_seq_t sequence; - ptl_size_t size; - ptl_event_t *base; - ptl_handle_any_t cb_eq_handle; -} ptl_eq_t; + LNET_ACK_REQ, + LNET_NOACK_REQ +} lnet_ack_req_t; -typedef struct { - ptl_eq_t *eq; -} ptl_ni_t; - -typedef struct { - int max_mes; - int max_mds; - int max_eqs; - int max_ac_index; - int max_pt_index; - int max_md_iovecs; - int max_me_list; - int max_getput_md; -} ptl_ni_limits_t; - -/* - * Status registers - */ -typedef enum { - PTL_SR_DROP_COUNT, - PTL_SR_DROP_LENGTH, - PTL_SR_RECV_COUNT, - PTL_SR_RECV_LENGTH, - PTL_SR_SEND_COUNT, - PTL_SR_SEND_LENGTH, - PTL_SR_MSGS_MAX, -} ptl_sr_index_t; - -typedef int ptl_sr_value_t; - -typedef int ptl_interface_t; -#define PTL_IFACE_DEFAULT (-1) +typedef void (*lnet_eq_handler_t)(lnet_event_t *event); +#define LNET_EQ_HANDLER_NONE NULL #endif