Main Page | Data Structures | Directories | File List | Data Fields | Globals | Related Pages

vipl_structs.h

Go to the documentation of this file.
00001 /********************************************************
00002  * Myricom VI-GM networking software and documentation  *
00003  * Copyright (c) 2001 by Myricom, Inc.                  *
00004  * All rights reserved.                                 *
00005  * See the file `COPYING' for copyright notice.         *
00006  ********************************************************/
00007 
00008 #ifndef __VIPL_STRUCTS
00009 #define __VIPL_STRUCTS
00010 
00019 typedef gm_up_t VIP_UINTPTR;
00020 
00021 
00028 typedef struct VIP_SEND_REQ
00029 {
00031   VIP_UCHAR type;
00033   VIP_UCHAR dest_port_id;
00035   VIP_UINT16 dest_gm_id;
00037   VIP_UINT32 length;
00039   VIP_PVOID64 target_ptr;
00043   VIP_PVOID ptr;
00045   struct VIP_GM *vip_gm_ptr;
00047   struct VIP_NIC *vip_nic_ptr;
00049   struct VIP_VI *vip_vi_ptr;
00051   VIP_DESCRIPTOR *vip_desc_ptr;
00053   struct VIP_SEND_REQ *next;
00054 }
00055 VIP_SEND_REQ;
00056 
00057 
00060 typedef struct VIP_HANDLE
00061 {
00063   VIP_UINT16 magic;
00065   VIP_UINT16 seq_num;
00068   VIP_UINT32 ref_count;
00070   struct VIP_HANDLE *prev;
00072   struct VIP_HANDLE *next;
00074   struct VIP_NIC *vip_nic_ptr;
00075 }
00076 VIP_HANDLE;
00077 
00078 
00080 typedef struct VIP_HANDLE_SET
00081 {
00084   struct gm_lookaside *lookaside;
00086   VIP_UINT16 set_magic;
00089   VIP_UINT16 cur_seq_num;
00091   VIP_UINT32 count;
00093   VIP_UINT32 max_count;
00095   VIP_HANDLE *head;
00097   VIP_HANDLE *tail;
00099   struct VIP_NIC *vip_nic_ptr;
00100 }
00101 VIP_HANDLE_SET;
00102 
00103 
00105 typedef struct VIP_GM
00106 {
00108   struct gm_port *gm_port;
00110   VIP_PVOID **recv_buffers;
00112   VIP_PVOID **send_buffers;
00114   VIP_PVOID *send_buffers_free;
00116   struct gm_lookaside *vip_send_req_lookaside;
00118   VIP_SEND_REQ *send_fifo_head;
00120   VIP_SEND_REQ *send_fifo_tail;
00122   VIP_UINTPTR memory_registered;
00124   VIP_UINT32 send_buf_free_cnt;
00126   VIP_UINT32 send_fifo_queued;
00128   VIP_UINT32 ref_count;
00130   VIP_UINT32 gm_id;
00132   VIP_UINT32 conn_mgr_gm_id;
00134   VIP_UINT32 magic;
00136   gm_alarm_t alive_alarm;
00138   VIP_PACKET_ALIVE *alive_buffer;
00140   struct VIP_CONN *head_waiting_conn_ptr;
00142   struct VIP_CONN *tail_waiting_conn_ptr;
00144   struct VIP_NIC *vip_nic_ptrs[VI_GM_MAX_NIC_HANDLES + 1];
00146   struct gm_lookaside *notify_lookaside;
00148   struct gm_lookaside *regmem_avl_lookaside;
00150   VIP_AVL_TREE_T regmem_avl_tree;
00152   VIP_UINT16 gm_board_id;
00154   VIP_UINT16 gm_port_id;
00156   VIP_UINT16 recv_tokens;
00158   VIP_UINT16 max_recv_tokens;
00160   VIP_UINT16 send_tokens;
00162   VIP_UINT16 max_send_tokens;
00164   VIP_THREAD_T plumber_periodic;
00166   VIP_THREAD_T plumber_blocking;
00168   VIP_MUTEX_T lock;
00170   VIP_MUTEX_T recv_lock;
00173   VIP_SEMAPHORE_T blocking_plumber_tokens;
00175   VIP_BOOLEAN periodic_plumber_cancelled;
00177   VIP_BOOLEAN blocking_plumber_cancelled;
00179   VIP_UCHAR mac_address[VI_GM_MAC_ADDRESS_LEN];
00180 }
00181 VIP_GM;
00182 
00183 
00185 typedef struct VIP_NIC
00186 {
00188   VIP_UINT16 magic;
00191   VIP_UINT16 index;
00194   VIP_UINT32 ptag_last_id;
00196   VIP_GM *vip_gm_ptr;
00198   VIP_HANDLE_SET vip_vi_set;
00200   VIP_HANDLE_SET vip_ptag_set;
00202   VIP_HANDLE_SET vip_mem_set;
00204   VIP_HANDLE_SET vip_cq_set;
00206   VIP_HANDLE_SET vip_conn_set;
00209   VIP_MEM_HANDLE vip_mem_handle_free;
00213   struct VIP_MEM *vip_mem_handle_ptrs[VI_GM_MAX_REGISTER_REGIONS + 1];
00215   VIP_UINT16 vip_vi_index_free;
00219   struct VIP_VI *vip_vi_ptrs[VI_GM_MAX_VI + 1];
00221   void (*error_callback) (VIP_PVOID, VIP_ERROR_DESCRIPTOR *);
00223   VIP_PVOID error_callback_context;
00225   VIP_MUTEX_T lock;
00227   VIP_BOOLEAN ns_initialized;
00228 }
00229 VIP_NIC;
00230 
00231 
00233 typedef struct VIP_CQ_ENTRY
00234 {
00237   struct VIP_VI *vip_vi_ptr;
00240   VIP_BOOLEAN recv_queue;
00243   VIP_BOOLEAN completed;
00244 }
00245 VIP_CQ_ENTRY;
00246 
00247 
00249 typedef struct VIP_CQ
00250 {
00252   VIP_HANDLE handle;
00254   VIP_CQ_ENTRY *queue;
00256   VIP_UINT32 count;
00259   VIP_UINT32 next_poll;
00261   VIP_UINT32 next_completion;
00263   VIP_UINT32 event_count;
00265   VIP_EVENT_T event;
00267   VIP_SEMAPHORE_T notify_tokens;
00269   VIP_BOOLEAN notify_initialized;
00271   VIP_BOOLEAN notify_cancelled;
00273   VIP_THREAD_T notify_thread;
00275   struct VIP_NOTIFY *first_notify_handler;
00277   struct VIP_NOTIFY *last_notify_handler;
00278 }
00279 VIP_CQ;
00280 
00281 
00283 typedef struct VIP_PTAG
00284 {
00286   VIP_HANDLE handle;
00288   VIP_UINT32 id;
00289 }
00290 VIP_PTAG;
00291 
00292 
00294 typedef struct VIP_MEM
00295 {
00297   VIP_HANDLE handle;
00299   VIP_BOOLEAN rdma_write;
00301   VIP_ULONG length;
00303   VIP_PVOID address;
00305   VIP_PTAG *vip_ptag_ptr;
00306 }
00307 VIP_MEM;
00308 
00309 
00310 
00312 typedef struct VIP_VI_QUEUE
00313 {
00315   VIP_DESCRIPTOR *first;
00317   VIP_DESCRIPTOR *last;
00319   VIP_DESCRIPTOR *current_desc;
00321   VIP_MEM_HANDLE current_mem;
00323   VIP_UINT32 total_count;
00325   VIP_CQ *vip_cq_ptr;
00327   VIP_ULONG count_to_process;
00329   VIP_UINT32 event_count;
00331   VIP_EVENT_T event;
00333   VIP_SEMAPHORE_T notify_tokens;
00335   VIP_BOOLEAN notify_initialized;
00337   VIP_BOOLEAN notify_cancelled;
00339   VIP_THREAD_T notify_thread;
00341   struct VIP_NOTIFY *first_notify_handler;
00343   struct VIP_NOTIFY *last_notify_handler;
00344 }
00345 VIP_VI_QUEUE;
00346 
00347 
00349 typedef struct VIP_VI
00350 {
00352   VIP_HANDLE handle;
00354   VIP_VI_QUEUE send_queue;
00356   VIP_VI_QUEUE recv_queue;
00358   VIP_PTAG *vip_ptag_ptr;
00360   struct VIP_CONN *conn_ptr;
00362   VIP_NET_UINT16 net_remote_nic_index;
00364   VIP_NET_UINT16 net_remote_vi_index;
00366   VIP_UINT32 mtu;
00368   VIP_QOS qos;
00370   VIP_UINT16 index;
00372   VIP_UINT16 gm_dest_id;
00374   VIP_UCHAR gm_dest_port;
00376   VIP_BOOLEAN rdma_write;
00378   VIP_RELIABILITY_LEVEL reliability;
00380   VIP_UCHAR pending_callbacks;
00382   VIP_VI_STATE state;
00383 }
00384 VIP_VI;
00385 
00386 
00389 typedef struct VIP_CONN
00390 {
00392   VIP_HANDLE handle;
00394   VIP_NET_UINT16 net_remote_seq_num;
00396   VIP_NET_UINT64 net_remote_conn_ptr;
00398   VIP_VI *vip_vi_ptr;
00400   struct VIP_CONN *prev_waiting_conn_ptr;
00402   struct VIP_CONN *next_waiting_conn_ptr;
00405   gm_alarm_t peer_timeout_alarm;
00407   VIP_BOOLEAN waiting_list;
00411   VIP_NET_UINT32 net_srv_magic[VI_GM_MAX_PORTS];
00413   VIP_VI_ATTRIBUTES remote_vi_attribs;
00415   VIP_UINT16 locale_disc_len;
00417   VIP_UCHAR locale_net_addr[VI_GM_MAC_ADDRESS_LEN
00418                             + VI_GM_MAX_DISCRIMINATOR_LEN];
00420   VIP_UINT16 remote_disc_len;
00422   VIP_UCHAR remote_net_addr[VI_GM_MAC_ADDRESS_LEN
00423                             + VI_GM_MAX_DISCRIMINATOR_LEN];
00425   VIP_UINT16 remote_gm_id;
00427   VIP_UCHAR remote_port_id;
00429   VIP_UCHAR type;
00431   VIP_RETURN status;
00433   VIP_EVENT_T event;
00434 }
00435 VIP_CONN;
00436 
00437 
00440 typedef struct VIP_CHKSUM
00441 {
00443   VIP_UINT64 sum;
00445   VIP_UINT64 len;
00446 }
00447 VIP_CHKSUM;
00448 
00449 
00451 typedef struct VIP_AVL_RANGE
00452 {
00454   VIP_UINTPTR addr;
00456   VIP_UINT32 length;
00458   VIP_UINT32 count;
00459 }
00460 VIP_AVL_RANGE;
00461 
00462 
00464 typedef struct VIP_NOTIFY
00465 {
00467   VIP_PVOID handler;
00469   VIP_PVOID context;
00471   struct VIP_NOTIFY *next;
00472 }
00473 VIP_NOTIFY;
00474 
00475 #endif
VI-GM-1.3 by Myricom © 1997-2006. Documentation generated on 20 May 2006 by doxygen 1.4.4.