47 #define master_kernel() (kid == 0) 59 #define MAX_LPs 250000 72 #define likely(exp) __builtin_expect(exp, 1) 73 #define unlikely(exp) __builtin_expect(exp, 0) 85 #define F_EQUAL(a,b) (fabsf((a) - (b)) < FLT_EPSILON) 86 #define F_EQUAL_ZERO(a) (fabsf(a) < FLT_EPSILON) 88 #define F_DIFFER(a,b) (fabsf((a) - (b)) >= FLT_EPSILON) 90 #define F_DIFFER_ZERO(a) (fabsf(a) >= FLT_EPSILON) 94 #define D_EQUAL(a,b) (fabs((a) - (b)) < DBL_EPSILON) 95 #define D_EQUAL_ZERO(a) (fabs(a) < DBL_EPSILON) 97 #define D_DIFFER(a,b) (fabs((a) - (b)) >= DBL_EPSILON) 99 #define D_DIFFER_ZERO(a) (fabs(a) >= DBL_EPSILON) 107 ({ __typeof__ (a) _a = (a); \ 108 __typeof__ (b) _b = (b); \ 109 _a > _b ? _a : _b; }) 116 ({ __typeof__ (a) _a = (a); \ 117 __typeof__ (b) _b = (b); \ 118 _a < _b ? _a : _b; }) 121 #define UNION_CAST(x, destType) (((union {__typeof__(x) a; destType b;})x).b) 148 #define is_lid(val) __builtin_types_compatible_p(__typeof__ (val), LID_t) 149 #define is_gid(val) __builtin_types_compatible_p(__typeof__ (val), GID_t) 151 #define set_lid(lid, value) (__builtin_choose_expr(is_lid(lid), lid.to_int, (void)0) = (value)) 152 #define set_gid(gid, value) (__builtin_choose_expr(is_gid(gid), gid.to_int, (void)0) = (value)) 154 typedef enum { positive, negative, control } message_kind_t;
157 typedef unsigned char phase_colour;
160 #define MSG_PADDING offsetof(msg_t, sender) 161 #define MSG_META_SIZE (offsetof(msg_t, event_content) - MSG_PADDING) 182 message_kind_t message_kind;
185 unsigned long long mark;
190 unsigned char event_content[];
203 unsigned long long rendezvous_mark;
207 unsigned long long mark;
215 extern unsigned int kid,
221 extern void ProcessEvent_light(
unsigned int me,
simtime_t now,
int event_type,
void *event_content,
unsigned int size,
void *state);
222 bool OnGVT_light(
unsigned int me,
void *snapshot);
223 extern void ProcessEvent_inc(
unsigned int me,
simtime_t now,
int event_type,
void *event_content,
unsigned int size,
void *state);
224 bool OnGVT_inc(
unsigned int me,
void *snapshot);
232 extern inline bool user_requested_exit(
void);
233 extern inline bool simulation_error(
void);
236 #define rootsim_error(fatal, msg, ...) _rootsim_error(fatal, "%s:%d: %s(): " msg, __FILE__, __LINE__, __FUNCTION__, ##__VA_ARGS__)
unsigned int n_prc
Number of logical processes hosted by the current kernel instance.
ROOT-Sim header for model development.
struct _msg_hdr_t msg_hdr_t
Message envelope definition. This is used to handle the output queue and stores information needed to...
simtime_t timestamp
Unique identifier of the message, used for rendez-vous event.
barrier_t all_thread_barrier
Barrier for all worker threads.
unsigned int to_int
The LID numerical value.
void initialization_complete(void)
unsigned int to_int
The GID numerical value.
Generic thread management facilities.
struct _lid_t LID_t
Definition of a LID.
struct _msg_t msg_t
Message Type definition.
double simtime_t
This defines the type with whom timestamps are represented.
void distribute_lps_on_kernels(void)
unsigned int size
Unique identifier of the message, used for rendez-vous events.
struct _gid_t GID_t
Definition of a GID.
unsigned long long rendezvous_mark
Unique identifier of the message, used for antimessages.
void simulation_shutdown(int code)
void _rootsim_error(bool fatal, const char *msg,...)
unsigned int find_kernel_by_gid(GID_t gid)
unsigned int n_cores
Total number of cores required for simulation.
unsigned int n_ker
Total number of simulation kernel instances running.
Message envelope definition. This is used to handle the output queue and stores information needed to...
unsigned int kid
Identifier of the local kernel.
unsigned int * kernel
Mapping between kernel instances and logical processes.
Thread barrier definition.