EM-ODP 4.4.0
Event Machine on ODP
Loading...
Searching...
No Matches
core_map_t Struct Reference

#include <em_core_types.h>

Collaboration diagram for core_map_t:

Data Fields

odp_atomic_u32_t current_core_count
 
odp_atomic_u32_t worker_core_count
 
odp_atomic_u32_t control_core_count
 
odp_atomic_u32_t external_thread_count
 
odp_atomic_u32_t ongoing_term_reqs [ODP_THREAD_COUNT_MAX]
 
odp_rwlock_t rwlock
 
struct { 
 
   struct { 
 
      uint8_t   logic [ODP_THREAD_COUNT_MAX] 
 
      uint16_t   odp_thr [EM_MAX_CORES
 
   }   thr_vs_logic 
 
   em_core_mask_t   logic_mask 
 
   em_core_mask_t   worker_mask 
 
   em_core_mask_t   control_mask 
 
   odp_thrmask_t   thrmask_emcores 
 
   odp_thrmask_t   thrmask_extthrs 
 
   odp_thrmask_t   thrmask_all 
 
   pid_t   tids [EM_MAX_CORES
 
   pid_t   ext_tids [ODP_THREAD_COUNT_MAX] 
 
   em_core_type_t   core_types [EM_MAX_CORES
 
   char   proc_tid_stat_paths [EM_MAX_CORES][32] 
 
rwlocked 
 
void *end[0] ENV_CACHE_LINE_ALIGNED
 

Detailed Description

EM mapping from physical core ids <-> logical core ids

Definition at line 55 of file em_core_types.h.

Field Documentation

◆ control_core_count

odp_atomic_u32_t core_map_t::control_core_count

Number of EM control cores currently running

Definition at line 64 of file em_core_types.h.

◆ control_mask

em_core_mask_t core_map_t::control_mask

Mask of logic control EM-core ids

Definition at line 104 of file em_core_types.h.

◆ core_types

em_core_type_t core_map_t::core_types[EM_MAX_CORES]

Type of each EM-core: worker or ctrl (not external)

Definition at line 119 of file em_core_types.h.

◆ current_core_count

odp_atomic_u32_t core_map_t::current_core_count

Number of EM-cores currently running (em_init_local/core() called). Includes EM worker and control cores, but not external threads.

Definition at line 60 of file em_core_types.h.

◆ ENV_CACHE_LINE_ALIGNED

void* end [0] core_map_t::ENV_CACHE_LINE_ALIGNED

Definition at line 129 of file em_core_types.h.

◆ ext_tids

pid_t core_map_t::ext_tids[ODP_THREAD_COUNT_MAX]

Thread ids of external EM threads/processes

Definition at line 116 of file em_core_types.h.

◆ external_thread_count

odp_atomic_u32_t core_map_t::external_thread_count

Number of EM external threads currently running

Definition at line 66 of file em_core_types.h.

◆ logic

uint8_t core_map_t::logic[ODP_THREAD_COUNT_MAX]

From ODP thread ids to logical EM core ids

Definition at line 94 of file em_core_types.h.

◆ logic_mask

em_core_mask_t core_map_t::logic_mask

Mask of logic EM-core ids (worker and control EM-cores)

Definition at line 100 of file em_core_types.h.

◆ odp_thr

uint16_t core_map_t::odp_thr[EM_MAX_CORES]

From logical EM core ids to ODP thread ids

Definition at line 96 of file em_core_types.h.

◆ ongoing_term_reqs

odp_atomic_u32_t core_map_t::ongoing_term_reqs[ODP_THREAD_COUNT_MAX]

Number of ongoing TERM_THREAD_REQ operations per thread

Definition at line 69 of file em_core_types.h.

◆ proc_tid_stat_paths

char core_map_t::proc_tid_stat_paths[EM_MAX_CORES][32]

Store file paths to each EM-core's /proc/[tid]/stat file so that the paths don't have to be generated each time.

Definition at line 125 of file em_core_types.h.

◆ rwlock

odp_rwlock_t core_map_t::rwlock

Read-write lock for the 'rwlocked'-struct below.

Multiple readers of core-map data are allowed at the same time, but only one writer. The only two scenarios where the lock is taken for writes are adding an EM-core via em_init_local/core() and removing an EM-core via em_term_local/core() - thus taking the lock for reads in control operations is not time crtitical since add/rem core operations can afford to wait.

This lock is also used to block EM-core adds or rems when an internal control operation is under way that needs info about the cores available and sends control events to them - cores can not be allowed to be removed in the middle of this.

Definition at line 86 of file em_core_types.h.

◆ thrmask_all

odp_thrmask_t core_map_t::thrmask_all

Mask of ODP-thread ids of all threads

Definition at line 111 of file em_core_types.h.

◆ thrmask_emcores

odp_thrmask_t core_map_t::thrmask_emcores

Mask of ODP-thread ids of worker and control EM-cores

Definition at line 107 of file em_core_types.h.

◆ thrmask_extthrs

odp_thrmask_t core_map_t::thrmask_extthrs

Mask of ODP-thread ids of EM external threads

Definition at line 109 of file em_core_types.h.

◆ tids

pid_t core_map_t::tids[EM_MAX_CORES]

Thread ids of EM-cores (worker and control)

Definition at line 114 of file em_core_types.h.

◆ worker_core_count

odp_atomic_u32_t core_map_t::worker_core_count

Number of EM worker cores currently running

Definition at line 62 of file em_core_types.h.

◆ worker_mask

em_core_mask_t core_map_t::worker_mask

Mask of logic worker EM-core ids

Definition at line 102 of file em_core_types.h.


The documentation for this struct was generated from the following file: