Whamcloud - gitweb
- remove trailing spaces, expand tabs.
[fs/lustre-release.git] / lnet / include / lnet / types.h
index 0269290..d080c96 100644 (file)
-#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__
 
-#ifdef __linux__
-# include <asm/types.h>
-# include <asm/timex.h>
-#else
-# include <sys/types.h>
-typedef u_int32_t __u32;
-typedef u_int64_t __u64;
-#endif
+#include <libcfs/libcfs.h>
 
-#ifdef __KERNEL__
-# include <linux/time.h>
-#else
-# include <sys/time.h>
-# define do_gettimeofday(tv) gettimeofday(tv, NULL)
+#define LNET_RESERVED_PORTAL      0  /* portals reserved for lnet's own use */
+
+typedef __u64 lnet_nid_t;
+typedef __u32 lnet_pid_t;
+
+#define LNET_NID_ANY      ((lnet_nid_t) -1)
+#define LNET_PID_ANY      ((lnet_pid_t) -1)
+
+#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 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_HANDLE_NONE \
-    ((const ptl_handle_any_t){.nal_idx = -1, .cookie = -1})
-#define PTL_EQ_NONE PTL_HANDLE_NONE
+#define LNET_INVALID_HANDLE \
+    ((const lnet_handle_any_t){.cookie = -1})
+#define LNET_EQ_NONE LNET_INVALID_HANDLE
 
-static inline int PtlHandleEqual (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;
-
-typedef struct {
-       struct page     *kiov_page;
-       unsigned int     kiov_len;
-       unsigned int     kiov_offset;
-} ptl_kiov_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;
-       unsigned int     niov;
-} 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<<LNET_MTU_BITS)
+
+/* limit on the number of entries in discontiguous MDs */
+#define LNET_MAX_IOV    256
+
+/* Max payload size */
+#ifndef LNET_MAX_PAYLOAD
+# error "LNET_MAX_PAYLOAD must be defined in config.h"
+#else
+# if (LNET_MAX_PAYLOAD < LNET_MTU)
+#  error "LNET_MAX_PAYLOAD too small - error in configure --with-max-payload-mb"
+# elif defined(__KERNEL__)
+#  if (LNET_MAX_PAYLOAD > (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)
-#define PTL_MD_AUTO_UNLINK      (1 << 3)
-#define PTL_MD_TRUNCATE         (1 << 4)
-#define PTL_MD_ACK_DISABLE      (1 << 5)
-#define PTL_MD_IOV             (1 << 6)
-#define PTL_MD_MAX_SIZE                (1 << 7)
-#define PTL_MD_KIOV             (1 << 8)
-
-#define PTL_MD_THRESH_INF       (-1)
+#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)
 
-typedef enum {
-        PTL_EVENT_GET,
-        PTL_EVENT_PUT,
-        PTL_EVENT_REPLY,
-        PTL_EVENT_ACK,
-        PTL_EVENT_SENT
-} ptl_event_kind_t;
+/* For compatibility with Cray Portals */
+#define LNET_MD_PHYS                         0
+
+#define LNET_MD_THRESH_INF       (-1)
 
-#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)
+/* NB lustre portals uses struct iovec internally! */
+typedef struct iovec lnet_md_iovec_t;
 
 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, mlength, offset;
-        ptl_handle_me_t unlinked_me;
-        ptl_md_t mem_desc;
-        ptl_hdr_data_t hdr_data;
-        struct timeval arrival_time;
-        volatile ptl_seq_t sequence;
-} ptl_event_t;
+        cfs_page_t      *kiov_page;
+        unsigned int     kiov_len;
+        unsigned int     kiov_offset;
+} lnet_kiov_t;
 
 typedef enum {
-        PTL_ACK_REQ,
-        PTL_NOACK_REQ
-} ptl_ack_req_t;
-
+        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.
+ * checking!!!
+ */
+#ifdef __CYGWIN__
+#pragma pack(push, 4)
+#endif
 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_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
 
-typedef struct {
-        ptl_eq_t *eq;
-} ptl_ni_t;
+        volatile lnet_seq_t sequence;
+} lnet_event_t;
+#ifdef __CYGWIN__
+#pragma pop
+#endif
 
-typedef struct {
-        int max_match_entries;    /* max number of match entries */
-        int max_mem_descriptors;  /* max number of memory descriptors */
-        int max_event_queues;     /* max number of event queues */
-        int max_atable_index;     /* maximum access control list table index */
-        int max_ptable_index;     /* maximum portals table index */
-} 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;
+        LNET_ACK_REQ,
+        LNET_NOACK_REQ
+} lnet_ack_req_t;
+
+typedef void (*lnet_eq_handler_t)(lnet_event_t *event);
+#define LNET_EQ_HANDLER_NONE NULL
 
 #endif