+ ControlFlowEntry entry = (ControlFlowEntry) event.getEntry();\r
+ IStateSystemQuerier ssq = entry.getTrace().getStateSystem();\r
+ int tid = entry.getThreadId();\r
+\r
+ try {\r
+ //Find every CPU first, then get the current thread\r
+ int cpusQuark = ssq.getQuarkAbsolute(Attributes.CPUS);\r
+ List<Integer> cpuQuarks = ssq.getSubAttributes(cpusQuark, false);\r
+ for (Integer cpuQuark : cpuQuarks) {\r
+ int currentThreadQuark = ssq.getQuarkRelative(cpuQuark, Attributes.CURRENT_THREAD);\r
+ ITmfStateInterval interval = ssq.querySingleState(event.getTime(), currentThreadQuark);\r
+ if (!interval.getStateValue().isNull()) {\r
+ ITmfStateValue state = interval.getStateValue();\r
+ int currentThreadId = state.unboxInt();\r
+ if (tid == currentThreadId) {\r
+ retMap.put(Messages.ControlFlowView_attributeCpuName, ssq.getAttributeName(cpuQuark));\r
+ break;\r
+ }\r
+ }\r
+ }\r
+\r
+ } catch (AttributeNotFoundException e) {\r
+ e.printStackTrace();\r
+ } catch (TimeRangeException e) {\r
+ e.printStackTrace();\r
+ } catch (StateValueTypeException e) {\r
+ e.printStackTrace();\r
+ }\r