| 1150 | } |
| 1151 | |
| 1152 | SK_MMCS_TaskEntry* |
| 1153 | SK_MMCS_GetTaskForThreadIDEx ( DWORD dwTid, const char* name, |
| 1154 | const char* task1, |
| 1155 | const char* task2 ) |
| 1156 | { |
| 1157 | auto& task_map = |
| 1158 | SK_MMCS_GetTaskMap (); |
| 1159 | |
| 1160 | SK_MMCS_TaskEntry* task_me = |
| 1161 | nullptr; |
| 1162 | |
| 1163 | if (task_map.count (dwTid)) |
| 1164 | task_me = task_map.at (dwTid); |
| 1165 | else |
| 1166 | { |
| 1167 | SK_MMCS_TaskEntry* new_entry = |
| 1168 | new SK_MMCS_TaskEntry { |
| 1169 | dwTid, 0, INVALID_HANDLE_VALUE, 0, AVRT_PRIORITY_NORMAL, "", "", "" |
| 1170 | }; |
| 1171 | |
| 1172 | strncpy_s ( new_entry->name, 63, |
| 1173 | name, _TRUNCATE ); |
| 1174 | |
| 1175 | strncpy_s ( new_entry->task0, 63, |
| 1176 | task1, _TRUNCATE ); |
| 1177 | strncpy_s ( new_entry->task1, 63, |
| 1178 | task2, _TRUNCATE ); |
| 1179 | |
| 1180 | new_entry->hTask = |
| 1181 | SK_AvSetMmMaxThreadCharacteristicsA ( task1, task2, |
| 1182 | &new_entry->dwTaskIdx ); |
| 1183 | |
| 1184 | SK_TLS* pTLS = |
| 1185 | SK_TLS_Bottom (); |
| 1186 | |
| 1187 | if (pTLS != nullptr) |
| 1188 | { |
| 1189 | pTLS->scheduler->mmcs_task = |
| 1190 | new_entry; |
| 1191 | } |
| 1192 | |
| 1193 | task_map [dwTid] = new_entry; |
| 1194 | task_me = |
| 1195 | task_map [dwTid]; |
| 1196 | } |
| 1197 | |
| 1198 | return |
| 1199 | task_me; |
| 1200 | } |
| 1201 | |
| 1202 | SK_MMCS_TaskEntry* |
| 1203 | SK_MMCS_GetTaskForThreadID (DWORD dwTid, const char* name) |
no test coverage detected