Changeset 87594 in vbox for trunk/src/VBox/VMM/include/DBGFInternal.h
- Timestamp:
- Feb 3, 2021 8:23:46 PM (4 years ago)
- svn:sync-xref-src-repo-rev:
- 142626
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/include/DBGFInternal.h
r87130 r87594 55 55 56 56 57 #ifdef VBOX_WITH_LOTS_OF_DBGF_BPS58 57 /** @name Global breakpoint table handling defines. 59 58 * @{ */ … … 81 80 #define DBGF_BP_L2_TBL_CHUNK_COUNT (DBGF_BP_L2_TBL_ENTRY_COUNT_MAX / DBGF_BP_L2_TBL_ENTRIES_PER_CHUNK) 82 81 /** @} */ 83 #endif84 82 85 83 … … 775 773 776 774 777 #ifndef VBOX_WITH_LOTS_OF_DBGF_BPS778 /**779 * Breakpoint search optimization.780 */781 typedef struct DBGFBPSEARCHOPT782 {783 /** Where to start searching for hits.784 * (First enabled is #DBGF::aBreakpoints[iStartSearch]). */785 uint32_t volatile iStartSearch;786 /** The number of aBreakpoints entries to search.787 * (Last enabled is #DBGF::aBreakpoints[iStartSearch + cToSearch - 1]) */788 uint32_t volatile cToSearch;789 } DBGFBPSEARCHOPT;790 /** Pointer to a breakpoint search optimziation structure. */791 typedef DBGFBPSEARCHOPT *PDBGFBPSEARCHOPT;792 #else793 794 775 /** An invalid breakpoint chunk ID. */ 795 776 #define DBGF_BP_CHUNK_ID_INVALID UINT32_MAX … … 1087 1068 /** Pointer to a breakpoint L2 lookup table chunk - Ring-0 Ptr. */ 1088 1069 typedef R0PTRTYPE(DBGFBPL2TBLCHUNKR0 *) PDBGFBPL2TBLCHUNKR0; 1089 #endif1090 1070 1091 1071 … … 1117 1097 /** The number of enabled hardware I/O breakpoints. */ 1118 1098 uint8_t cEnabledHwIoBreakpoints; 1119 #ifndef VBOX_WITH_LOTS_OF_DBGF_BPS 1099 uint8_t au8Alignment1[2]; /**< Alignment padding. */ 1120 1100 /** The number of enabled INT3 breakpoints. */ 1121 uint8_t cEnabledInt3Breakpoints; 1122 uint8_t abPadding; /**< Unused padding space up for grabs. */ 1123 uint32_t uPadding; 1124 #else 1125 uint16_t u16Pad; /**< Unused padding space up for grabs. */ 1126 /** The number of enabled INT3 breakpoints. */ 1127 volatile uint32_t cEnabledInt3Breakpoints; 1128 #endif 1101 uint32_t volatile cEnabledInt3Breakpoints; 1129 1102 1130 1103 /** Debugger Attached flag. … … 1161 1134 } SteppingFilter; 1162 1135 1163 uint32_t u32Padding[2]; /**< Alignment padding. */ 1164 1165 #ifndef VBOX_WITH_LOTS_OF_DBGF_BPS 1166 /** Array of hardware breakpoints. (0..3) 1167 * This is shared among all the CPUs because life is much simpler that way. */ 1168 DBGFBP aHwBreakpoints[4]; 1169 /** Array of int 3 and REM breakpoints. (4..) 1170 * @remark This is currently a fixed size array for reasons of simplicity. */ 1171 DBGFBP aBreakpoints[32]; 1172 1173 /** MMIO breakpoint search optimizations. */ 1174 DBGFBPSEARCHOPT Mmio; 1175 /** I/O port breakpoint search optimizations. */ 1176 DBGFBPSEARCHOPT PortIo; 1177 /** INT3 breakpoint search optimizations. */ 1178 DBGFBPSEARCHOPT Int3; 1179 #else 1136 uint32_t au32Alignment2[2]; /**< Alignment padding. */ 1137 1180 1138 /** @name Breakpoint handling related state. 1181 1139 * @{ */ 1182 1140 /** Array of hardware breakpoints (0..3). 1183 1141 * This is shared among all the CPUs because life is much simpler that way. */ 1184 DBGFBPHW 1142 DBGFBPHW aHwBreakpoints[4]; 1185 1143 /** @} */ 1186 #endif1187 1144 1188 1145 /** … … 1249 1206 uint32_t offVM; 1250 1207 1251 #ifndef VBOX_WITH_LOTS_OF_DBGF_BPS 1252 /** Current active breakpoint (id). 1253 * This is ~0U if not active. It is set when a execution engine 1254 * encounters a breakpoint and returns VINF_EM_DBG_BREAKPOINT. This is 1255 * currently not used for REM breakpoints because of the lazy coupling 1256 * between VBox and REM. 1257 * 1258 * @todo drop this in favor of aEvents! */ 1259 uint32_t iActiveBp; 1260 #else 1208 /** Flag whether the to invoke any owner handlers in ring-3 before dropping into the debugger. */ 1209 bool fBpInvokeOwnerCallback; 1210 /** Set if we're singlestepping in raw mode. 1211 * This is checked and cleared in the \#DB handler. */ 1212 bool fSingleSteppingRaw; 1213 /** Alignment padding. */ 1214 bool afPadding[2]; 1261 1215 /** Current active breakpoint handle. 1262 1216 * This is NIL_DBGFBP if not active. It is set when a execution engine … … 1265 1219 * @todo drop this in favor of aEvents! */ 1266 1220 DBGFBP hBpActive; 1267 /** Flag whether the to invoke any owner handlers in ring-3 before dropping into the debugger. */1268 bool fBpInvokeOwnerCallback;1269 #endif1270 /** Set if we're singlestepping in raw mode.1271 * This is checked and cleared in the \#DB handler. */1272 bool fSingleSteppingRaw;1273 1274 /** Alignment padding. */1275 bool afPadding[3];1276 1221 1277 1222 /** The number of events on the stack (aEvents). … … 1326 1271 R0PTRTYPE(struct DBGFTRACERINSR0 *) pTracerR0; 1327 1272 1328 #ifdef VBOX_WITH_LOTS_OF_DBGF_BPS1329 1273 /** @name Breakpoint handling related state, Ring-0 only part. 1330 1274 * @{ */ … … 1349 1293 bool fInit; 1350 1294 /** @} */ 1351 #endif1352 1295 } DBGFR0PERVM; 1353 1296 … … 1424 1367 /** @} */ 1425 1368 1426 #ifdef VBOX_WITH_LOTS_OF_DBGF_BPS1427 1369 /** @name Breakpoint handling related state. 1428 1370 * @{ */ … … 1442 1384 RTSEMFASTMUTEX hMtxBpL2Wr; 1443 1385 /** @} */ 1444 #endif1445 1386 1446 1387 /** The type database lock. */ … … 1490 1431 void dbgfR3AsTerm(PUVM pUVM); 1491 1432 void dbgfR3AsRelocate(PUVM pUVM, RTGCUINTPTR offDelta); 1492 #ifdef VBOX_WITH_LOTS_OF_DBGF_BPS1493 1433 DECLHIDDEN(int) dbgfR3BpInit(PUVM pUVM); 1494 1434 DECLHIDDEN(int) dbgfR3BpTerm(PUVM pUVM); 1495 #else1496 int dbgfR3BpInit(PVM pVM);1497 #endif1498 1435 int dbgfR3InfoInit(PUVM pUVM); 1499 1436 int dbgfR3InfoTerm(PUVM pUVM);
Note:
See TracChangeset
for help on using the changeset viewer.