OpenMPI  0.1.1
btl_elan_frag.h
1 /*
2  * Copyright (c) 2004-2008 The University of Tennessee and The University
3  * of Tennessee Research Foundation. All rights
4  * reserved.
5  * $COPYRIGHT$
6  *
7  * Additional copyrights may follow
8  *
9  * $HEADER$
10  */
11 
12 #ifndef MCA_BTL_ELAN_FRAG_H
13 #define MCA_BTL_ELAN_FRAG_H
14 
15 #include "ompi_config.h"
16 #include "btl_elan.h"
17 
18 BEGIN_C_DECLS
19 
20 #define MCA_BTL_ELAN_HDR_TYPE_SEND 1
21 #define MCA_BTL_ELAN_HDR_TYPE_PUT 2
22 #define MCA_BTL_ELAN_HDR_TYPE_GET 3
23 #define MCA_BTL_ELAN_HDR_TYPE_RECV 4
24 
25 
26 /**
27  * Elan send fragment derived type.
28  */
31  mca_btl_base_segment_t segment;
32  struct mca_btl_base_endpoint_t *endpoint;
33  struct mca_btl_elan_module_t* btl;
34  int type;
35  ompi_free_list_t* my_list;
36  mca_btl_base_tag_t tag;
37  struct ELAN_EVENT* elan_event;
38  size_t size;
39 };
42 
44 
46 
48 
50 
52 
54 
55 
56 /*
57  * Macros to allocate/return descriptors from module specific
58  * free list(s).
59  */
60 #define MCA_BTL_ELAN_FRAG_ALLOC_LIST( list, frag, rc ) \
61 { \
62  ompi_free_list_item_t *item; \
63  OMPI_FREE_LIST_GET(&(list), item, rc); \
64  frag = (mca_btl_elan_frag_t*) item; \
65 }
66 
67 #define MCA_BTL_ELAN_FRAG_ALLOC_EAGER(frag, rc) \
68  MCA_BTL_ELAN_FRAG_ALLOC_LIST(mca_btl_elan_component.elan_frag_eager, frag, rc)
69 
70 #define MCA_BTL_ELAN_FRAG_ALLOC_MAX(frag, rc) \
71  MCA_BTL_ELAN_FRAG_ALLOC_LIST(mca_btl_elan_component.elan_frag_max, frag, rc)
72 
73 #define MCA_BTL_ELAN_FRAG_ALLOC_USER(frag, rc) \
74  MCA_BTL_ELAN_FRAG_ALLOC_LIST(mca_btl_elan_component.elan_frag_user, frag, rc)
75 
76 #define MCA_BTL_ELAN_FRAG_RETURN(frag) \
77  { \
78  OMPI_FREE_LIST_RETURN(frag->my_list, \
79  (ompi_free_list_item_t*)(frag)); \
80  }
81 
82 
83 END_C_DECLS
84 
85 #endif /* MCA_BTL_ELAN_FRAG_H */
A descriptor that holds the parameters to a send/put/get operation along w/ a callback routine that i...
Definition: btl.h:275
Elan send fragment derived type.
Definition: btl_elan_frag.h:29
BTL Module Interface.
Definition: btl_elan.h:83
Definition: ompi_free_list.h:39
State of ELAN endpoint connection.
Definition: btl_elan_endpoint.h:33
Describes a region/segment of memory that is addressable by an BTL.
Definition: btl.h:236
#define OBJ_CLASS_DECLARATION(NAME)
Declaration for class descriptor.
Definition: opal_object.h:236