00001 #ifndef MOC_INTERNAL_ADDRESS_MACROS_H_
00002 #define MOC_INTERNAL_ADDRESS_MACROS_H_
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #define IMOC_EA_REMOTE_QUEUE(proc) ( (proc > node_handle.rank) ? node_handle.moc_process_list[proc].inbox_queue_base+sizeof(moc_message_envelope_t)*node_handle.queue_size*node_handle.rank : node_handle.moc_process_list[proc].inbox_queue_base+sizeof(moc_message_envelope_t)*node_handle.queue_size*(node_handle.rank-1) )
00020
00021
00022
00023
00024
00025
00026 #define IMOC_LOCAL_QUEUE(proc) ( (proc < node_handle.rank) ? node_handle.message_queue_base+node_handle.queue_size*(proc) : node_handle.message_queue_base+node_handle.queue_size*(proc-1) )
00027
00028
00029
00030
00031
00032
00033
00034 #define IMOC_EA_REMOTE_QUEUE_ENTRY(proc, index) ( (proc > node_handle.rank) ? node_handle.moc_process_list[proc].inbox_queue_base+sizeof(moc_message_envelope_t)*node_handle.queue_size*node_handle.rank+sizeof(moc_message_envelope_t)*(index) : node_handle.moc_process_list[proc].inbox_queue_base+sizeof(moc_message_envelope_t)*node_handle.queue_size*(node_handle.rank-1)+sizeof(moc_message_envelope_t)*(index) )
00035
00036
00037
00038
00039
00040
00041 #define IMOC_LOCAL_QUEUE_ENTRY(proc, index) ( (proc < node_handle.rank) ? node_handle.message_queue_base+node_handle.queue_size*(proc)+(index) : node_handle.message_queue_base+node_handle.queue_size*(proc-1)+(index) )
00042
00043
00044
00045
00046
00047
00048
00049 #define IMOC_EA_REMOTE_STATUS_ENTRY(id, rank) ( node_handle.moc_process_list[rank].stat_array_base+sizeof(moc_message_status_t)*(id) )
00050
00051
00052
00053
00054
00055
00056
00057
00058
00059
00060
00061
00062
00063
00064
00065
00066
00067 #define IMOC_TEST_COMM_SEND(comm) if ( (comm) != MOC_COMM_WORLD && (comm) != MOC_COMM_SELF ) \
00068 { return MOC_ERR_COMM; }
00069
00070
00071
00072
00073
00074 #define IMOC_TEST_COMM_RECV(comm) if ( (comm) != MOC_COMM_WORLD && (comm) != MOC_COMM_SELF ) \
00075 { return MOC_ERR_COMM; }
00076
00077
00078
00079
00080
00081 #define IMOC_TEST_TAG_SEND(tag) if ( (tag) > 255 || (tag) < 0 ) \
00082 { return MOC_ERR_TAG; }
00083
00084
00085
00086
00087
00088 #define IMOC_TEST_TAG_RECV(tag) if ( (tag)!=MOC_ANY_TAG && ((tag) > 255 || (tag) < 0) ) \
00089 { return MOC_ERR_TAG; }
00090
00091
00092
00093
00094
00095 #define IMOC_TEST_RANK(rank) if ( (rank) < 0 || (rank) >= node_handle.comm_size ) \
00096 { return MOC_ERR_RANK; }
00097
00098
00099
00100
00101
00102 #define IMOC_TEST_RANK_RECV(rank) if ( rank != MOC_ANY_SOURCE && ((rank) < 0 || (rank) >= node_handle.comm_size) ) \
00103 { return MOC_ERR_RANK; }
00104
00105
00106
00107
00108
00109 #define IMOC_TEST_BYTECOUNT(count) if ( (count) < 0 || (count) > MAX_MOC_MESSAGE_SIZE ) \
00110 { return MOC_ERR_COUNT; }
00111
00112
00113
00114
00115
00116 #define IMOC_TEST_BUFFER(buf) if ( (buf) == 0 ) \
00117 { return MOC_ERR_BUFFER; }
00118
00119
00120
00121
00122 #define IMOC_TEST_PROC_NULL(rank) if ((rank) == MOC_PROC_NULL ) \
00123 { return MOC_SUCCESS; }
00124
00125
00126
00127
00128 #define IMOC_TEST_PROC_SELF(proc) if ( (proc) == node_handle.rank ) \
00129 { return MOC_SUCCESS; }
00130
00131
00132
00133
00134
00135 #define IMOC_TEST_ALIGNMENT(address) if ( ((unsigned long)(address)) % 16 != 0 ) \
00136 { return MOC_ERR_BAD_ALIGNMENT; }
00137
00138
00139
00140
00141 #endif