All Classes Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
coremask.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include <cvmx.h>
4 #include <cvmx-version.h>
5 #include <cvmx-coremask.h>
6 #include "caviumaccess.h"
7 
8 class CCoremask
9 {
10 
11 public:
12 
13  void Set(void)
14  {
15 #if OCTEON_SDK_VERSION_NUM < 301000000ull // SDK 3.1.0 build 000
16  m_uiCoremask = cvmx_sysinfo_get()->core_mask;
17 #else
18  cvmx_coremask_copy(&m_tCoremask, &cvmx_sysinfo_get()->core_mask);
19 #endif
20  }
21 
22  void SetByGroup(int iGroup)
23  {
24  uint64_t uxMask = 0;
25  for (int iCore=0; iCore<CVMX_MAX_CORES; iCore++)
26  {
27  if (CCaviumAccess::PowGetGroupMask(iCore) & GRP_MASK(iGroup))
28  {
29  uxMask |= CORE_MASK(iCore);
30  }
31  }
32 #if OCTEON_SDK_VERSION_NUM < 301000000ull // SDK 3.1.0 build 000
33  m_uiCoremask = uxMask;
34 #else
35  cvmx_coremask_set64(&m_tCoremask, uxMask);
36 #endif
37  }
38 
39 
40  bool IsFirstCore(void)
41  {
42 #if OCTEON_SDK_VERSION_NUM < 301000000ull // SDK 3.1.0 build 000
43  return cvmx_coremask_first_core(m_uiCoremask);
44 #else
45  return cvmx_coremask_is_core_first_core(&m_tCoremask, cvmx_get_core_num());
46 #endif
47 
48  }
49 
50  static bool IsFirstCoreStatic(void)
51  {
52 #if OCTEON_SDK_VERSION_NUM < 301000000ull // SDK 3.1.0 build 000
53  return cvmx_coremask_first_core(cvmx_sysinfo_get()->core_mask);
54 #else
55  return cvmx_coremask_is_core_first_core(&cvmx_sysinfo_get()->core_mask, cvmx_get_core_num());
56 #endif
57 
58  }
59 
60  static bool IsCoreActiveStatic(int iCore)
61  {
62 #if OCTEON_SDK_VERSION_NUM < 301000000ull // SDK 3.1.0 build 000
63 
64  return cvmx_sysinfo_get()->core_mask & cvmx_coremask_core(iCore);
65 #else
66  return cvmx_coremask_is_core_set(&cvmx_sysinfo_get()->core_mask, iCore);
67 #endif
68 
69  }
70 
71  void BarrierSync(void)
72  {
73 #if OCTEON_SDK_VERSION_NUM < 301000000ull // SDK 3.1.0 build 000
74  cvmx_coremask_barrier_sync(m_uiCoremask);
75 #else
76  cvmx_coremask_barrier_sync(&m_tCoremask);
77 #endif
78  }
79 
80  static void BarrierSyncStatic(void)
81  {
82 #if OCTEON_SDK_VERSION_NUM < 301000000ull // SDK 3.1.0 build 000
83  cvmx_coremask_barrier_sync(cvmx_sysinfo_get()->core_mask);
84 #else
85  cvmx_coremask_barrier_sync(&cvmx_sysinfo_get()->core_mask);
86 #endif
87  }
88 
89 #if OCTEON_SDK_VERSION_NUM < 301000000ull // SDK 3.1.0 build 000
90  void SetMask(uint16_t uiCoremask)
91  {
92  m_uiCoremask = uiCoremask;
93  }
94 #else
95  void SetMask(cvmx_coremask* ptCoremask)
96  {
97  cvmx_coremask_copy(&m_tCoremask, ptCoremask);
98  }
99 #endif
100 
101 #if OCTEON_SDK_VERSION_NUM < 301000000ull // SDK 3.1.0 build 000
102  uint16_t GetMask(void)
103  {
104  return m_uiCoremask;
105  }
106 #else
107  cvmx_coremask* GetMask(void)
108  {
109  return &m_tCoremask;
110  }
111 #endif
112 
113  bool Core_Is_Member(int iCore)
114  {
115 #if OCTEON_SDK_VERSION_NUM < 301000000ull // SDK 3.1.0 build 000
116  return (m_uiCoremask & (1<<iCore)) ? true : false;
117 #else
118  return (cvmx_coremask_is_core_set(&m_tCoremask, iCore)) ? true : false;
119 #endif
120  }
121 
122  static bool CoreMask_Is_Member(uint64_t uxCoreMask)
123  {
124 #if OCTEON_SDK_VERSION_NUM < 301000000ull // SDK 3.1.0 build 000
125  return (cvmx_coremask_is_member(uxCoreMask)) ? true : false;
126 #else
127  return (CORE_MASK(cvmx_get_core_num()) & uxCoreMask);
128 #endif
129  }
130 
131  static unsigned int Num_Groups(void)
132  {
133 #if OCTEON_SDK_VERSION_NUM < 301000000ull // SDK 3.1.0 build 000
134  if (octeon_has_feature(OCTEON_FEATURE_CN68XX_WQE))
135  return 64;
136  else
137  return 16;
138 #else
139  return cvmx_pow_num_groups();
140 #endif
141  }
142 
143 private:
144 
145 #if OCTEON_SDK_VERSION_NUM < 301000000ull // SDK 3.1.0 build 000
146  uint16_t m_uiCoremask;
147 #else
148  cvmx_coremask m_tCoremask;
149 #endif
150 };
static unsigned int Num_Groups(void)
Definition: coremask.h:131
static bool CoreMask_Is_Member(uint64_t uxCoreMask)
Definition: coremask.h:122
static bool IsFirstCoreStatic(void)
Definition: coremask.h:50
static bool IsCoreActiveStatic(int iCore)
Definition: coremask.h:60
bool IsFirstCore(void)
Definition: coremask.h:40
void BarrierSync(void)
Definition: coremask.h:71
void Set(void)
Definition: coremask.h:13
void SetMask(uint16_t uiCoremask)
Definition: coremask.h:90
static void BarrierSyncStatic(void)
Definition: coremask.h:80
static uint64_t PowGetGroupMask(uint64_t core_num)
bool Core_Is_Member(int iCore)
Definition: coremask.h:113
uint16_t GetMask(void)
Definition: coremask.h:102
#define CORE_MASK(x)
Definition: caviumaccess.h:19
void SetByGroup(int iGroup)
Definition: coremask.h:22
#define GRP_MASK(x)
Definition: caviumaccess.h:18