53 printf(
"ERRROR : Could not locate either an IO partition or an Analyzer\n");
58 int target_partition_id = an_desc->
id;
65 printf(
"Failed to map Instrumentation to Analyzer or IO Connector\n");
void Event_Packer_flush()
Processes the send of all events present in the internal FIFO.
uint8_t contains_metadata
Indicates whether the pack contains at least one MALP_EVENT_META event.
MALP_Spinlock is_in_instrum
struct Event_Pack * pack
The event pack.
static struct Event_Packer * Event_Packer()
Getter on the current event packer.
The event contains meta data.
int VMPI_Stream_open_map(VMPI_Stream *st, VMPI_Map *map, char *mode)
Open a stream according to a mapping.
Map processes in a round robin fashion.
void * Buffered_FIFO_push(struct Buffered_FIFO *fifo, void *elem)
Pushes an element into a FIFO.
Struct defining a pack of events.
void Event_Packer_push(struct MALP_Trace_Event *event)
Sends an event.
void * Buffered_FIFO_pop(struct Buffered_FIFO *fifo, void *dest)
Pops an element from a FIFO.
void Event_Packer_release()
Releases the event packer.
struct MALP_Trace_Event events[EVENT_PACK_SIZE]
The events.
int MALP_Spinlock_unlock(MALP_Spinlock *mutex)
Unlocks the given MALP_Spinlock.
static VMPI_Partition_desc * VMPI_Get_desc_by_name(char *name)
Find a descriptions by its name.
struct Stream_Infos * __trace_module
This is a global Stream_Infos (not shared between threads)
static void VMPI_Map_clear(VMPI_Map *map)
Clears a map.
Struct defining an event.
int VMPI_Map_partitions(int target, VMPI_Map_mode mode, VMPI_Map *map)
Map to another partition (can be additive)
static int Stream_Infos_is_in_mpi()
Checks if we are currently inside a MPI call.
Structure holding partitions descriptions.
This is the struct used to send events throuh a stream.
static struct Stream_Infos * Stream_infos_get()
Getter on the current Stream_Infos.
MALP_Trace_event_type type
The type of the event.
uint32_t application
tha application id
uint32_t offset
The number of packed events.
uint64_t Buffered_FIFO_count(struct Buffered_FIFO *fifo)
Thread-safely gets the number of elements stored in the FIFO.
uint32_t partition
the partition id
MALP_Trace_event_t event
The event data.
int MALP_Spinlock_lock(MALP_Spinlock *mutex)
Locks the given MALP_Spinlock.
void __Event_Packer_push(struct MALP_Trace_Event *event)
struct Event_Packer _malp_e_packer
The event packer of the current MPI rank.
int id
Unique identifier of the partition.
volatile unsigned int MALP_Spinlock
The type of spinlocks in MALP.
struct Pack_Locus locus
The pack locator.
int VMPI_Stream_init(VMPI_Stream *st, size_t block_size, VMPI_Stream_load_balance lb)
Initializes a stream should be called before any *open call.
static int VMPI_Get_partition_id()
Returns the unique ID of the current partition.
void Event_Packer_init()
Initializes the event packer, maps current process to existing Analyser or IO_WRITE partition and ini...
#define EVENT_PACK_SIZE
The size of a pack of events.
int VMPI_Stream_close(VMPI_Stream *st)
Closes a stream and sends EOF to remote endpoints.
Send or receive from each turn by turn.
int MALP_Spinlock_trylock(MALP_Spinlock *mutex)
Tries to lock the given MALP_Spinlock.
static void Stream_Infos_push_pending_event(struct MALP_Trace_Event *event)
VMPI_Stream stream
The associated stream.
int VMPI_Stream_write(VMPI_Stream *st, char *buff, unsigned int block_count)
Write data to a VMPI_Stream.
#define MAX_PENDING_EVENT
Defines the maximum pending events.
static void Stream_Infos_process_pending_events()
MALP_Spinlock lock
the lock for concurrent access