[1] | 1 | /** @file
|
---|
| 2 | * SSM - The Save State Manager.
|
---|
| 3 | */
|
---|
| 4 |
|
---|
| 5 | /*
|
---|
[8155] | 6 | * Copyright (C) 2006-2007 Sun Microsystems, Inc.
|
---|
[1] | 7 | *
|
---|
| 8 | * This file is part of VirtualBox Open Source Edition (OSE), as
|
---|
| 9 | * available from http://www.virtualbox.org. This file is free software;
|
---|
| 10 | * you can redistribute it and/or modify it under the terms of the GNU
|
---|
[5999] | 11 | * General Public License (GPL) as published by the Free Software
|
---|
| 12 | * Foundation, in version 2 as it comes in the "COPYING" file of the
|
---|
| 13 | * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
|
---|
| 14 | * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
|
---|
| 15 | *
|
---|
| 16 | * The contents of this file may alternatively be used under the terms
|
---|
| 17 | * of the Common Development and Distribution License Version 1.0
|
---|
| 18 | * (CDDL) only, as it comes in the "COPYING.CDDL" file of the
|
---|
| 19 | * VirtualBox OSE distribution, in which case the provisions of the
|
---|
| 20 | * CDDL are applicable instead of those of the GPL.
|
---|
| 21 | *
|
---|
| 22 | * You may elect to license modified versions of this file under the
|
---|
| 23 | * terms and conditions of either the GPL or the CDDL or both.
|
---|
[8155] | 24 | *
|
---|
| 25 | * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa
|
---|
| 26 | * Clara, CA 95054 USA or visit http://www.sun.com if you need
|
---|
| 27 | * additional information or have any questions.
|
---|
[1] | 28 | */
|
---|
| 29 |
|
---|
[3632] | 30 | #ifndef ___VBox_ssm_h
|
---|
| 31 | #define ___VBox_ssm_h
|
---|
[1] | 32 |
|
---|
| 33 | #include <VBox/cdefs.h>
|
---|
| 34 | #include <VBox/types.h>
|
---|
| 35 | #include <VBox/tm.h>
|
---|
| 36 | #include <VBox/vmapi.h>
|
---|
| 37 |
|
---|
| 38 | __BEGIN_DECLS
|
---|
| 39 |
|
---|
| 40 | /** @defgroup grp_ssm The Saved State Manager API
|
---|
| 41 | * @{
|
---|
| 42 | */
|
---|
| 43 |
|
---|
[6401] | 44 | /**
|
---|
| 45 | * Determine the major version of the SSM version. If the major SSM version of two snapshots is
|
---|
| 46 | * different, the snapshots are incompatible.
|
---|
| 47 | */
|
---|
| 48 | #define SSM_VERSION_MAJOR(ver) ((ver) & 0xffff0000)
|
---|
| 49 |
|
---|
| 50 | /**
|
---|
| 51 | * Determine the minor version of the SSM version. If the major SSM version of two snapshots is
|
---|
| 52 | * the same, the code must handle incompatibilies between minor version changes (e.g. use dummy
|
---|
| 53 | * values for non-existent fields).
|
---|
| 54 | */
|
---|
| 55 | #define SSM_VERSION_MINOR(ver) ((ver) & 0x0000ffff)
|
---|
| 56 |
|
---|
| 57 | /**
|
---|
| 58 | * Determine if the major version changed between two SSM versions.
|
---|
| 59 | */
|
---|
| 60 | #define SSM_VERSION_MAJOR_CHANGED(ver1,ver2) (SSM_VERSION_MAJOR(ver1) != SSM_VERSION_MAJOR(ver2))
|
---|
| 61 |
|
---|
| 62 |
|
---|
[1] | 63 | #ifdef IN_RING3
|
---|
| 64 | /** @defgroup grp_ssm_r3 The SSM Host Context Ring-3 API
|
---|
| 65 | * @{
|
---|
| 66 | */
|
---|
| 67 |
|
---|
| 68 |
|
---|
| 69 | /**
|
---|
| 70 | * What to do after the save/load operation.
|
---|
| 71 | */
|
---|
| 72 | typedef enum SSMAFTER
|
---|
| 73 | {
|
---|
| 74 | /** Will resume the loaded state. */
|
---|
| 75 | SSMAFTER_RESUME = 1,
|
---|
| 76 | /** Will destroy the VM after saving. */
|
---|
| 77 | SSMAFTER_DESTROY,
|
---|
| 78 | /** Will continue execution after saving the VM. */
|
---|
| 79 | SSMAFTER_CONTINUE,
|
---|
[6287] | 80 | /** Will debug the saved state.
|
---|
| 81 | * This is used to drop some of the stricter consitentcy checks so it'll
|
---|
[4185] | 82 | * load fine in the debugger or animator. */
|
---|
| 83 | SSMAFTER_DEBUG_IT,
|
---|
[1] | 84 | /** The file was opened using SSMR3Open() and we have no idea what the plan is. */
|
---|
| 85 | SSMAFTER_OPENED
|
---|
| 86 | } SSMAFTER;
|
---|
| 87 |
|
---|
| 88 |
|
---|
| 89 | /**
|
---|
| 90 | * A structure field description.
|
---|
| 91 | */
|
---|
| 92 | typedef struct SSMFIELD
|
---|
| 93 | {
|
---|
| 94 | /** Field offset into the structure. */
|
---|
| 95 | uint32_t off;
|
---|
| 96 | /** The size of the field. */
|
---|
| 97 | uint32_t cb;
|
---|
| 98 | } SSMFIELD;
|
---|
| 99 | /** Pointer to a structure field description. */
|
---|
| 100 | typedef SSMFIELD *PSSMFIELD;
|
---|
| 101 | /** Pointer to a const structure field description. */
|
---|
| 102 | typedef const SSMFIELD *PCSSMFIELD;
|
---|
| 103 |
|
---|
| 104 | /** Emit a SSMFIELD array entry. */
|
---|
| 105 | #define SSMFIELD_ENTRY(Type, Field) { RT_OFFSETOF(Type, Field), RT_SIZEOFMEMB(Type, Field) }
|
---|
| 106 | /** Emit the terminating entry of a SSMFIELD array. */
|
---|
| 107 | #define SSMFIELD_ENTRY_TERM() { UINT32_MAX, UINT32_MAX }
|
---|
| 108 |
|
---|
| 109 |
|
---|
| 110 |
|
---|
| 111 | /** The PDM Device callback variants.
|
---|
| 112 | * @{
|
---|
| 113 | */
|
---|
| 114 |
|
---|
| 115 | /**
|
---|
| 116 | * Prepare state save operation.
|
---|
| 117 | *
|
---|
| 118 | * @returns VBox status code.
|
---|
| 119 | * @param pDevIns Device instance of the device which registered the data unit.
|
---|
| 120 | * @param pSSM SSM operation handle.
|
---|
| 121 | */
|
---|
| 122 | typedef DECLCALLBACK(int) FNSSMDEVSAVEPREP(PPDMDEVINS pDevIns, PSSMHANDLE pSSM);
|
---|
| 123 | /** Pointer to a FNSSMDEVSAVEPREP() function. */
|
---|
| 124 | typedef FNSSMDEVSAVEPREP *PFNSSMDEVSAVEPREP;
|
---|
| 125 |
|
---|
| 126 | /**
|
---|
| 127 | * Execute state save operation.
|
---|
| 128 | *
|
---|
| 129 | * @returns VBox status code.
|
---|
| 130 | * @param pDevIns Device instance of the device which registered the data unit.
|
---|
| 131 | * @param pSSM SSM operation handle.
|
---|
| 132 | */
|
---|
| 133 | typedef DECLCALLBACK(int) FNSSMDEVSAVEEXEC(PPDMDEVINS pDevIns, PSSMHANDLE pSSM);
|
---|
| 134 | /** Pointer to a FNSSMDEVSAVEEXEC() function. */
|
---|
| 135 | typedef FNSSMDEVSAVEEXEC *PFNSSMDEVSAVEEXEC;
|
---|
| 136 |
|
---|
| 137 | /**
|
---|
| 138 | * Done state save operation.
|
---|
| 139 | *
|
---|
| 140 | * @returns VBox status code.
|
---|
| 141 | * @param pDevIns Device instance of the device which registered the data unit.
|
---|
| 142 | * @param pSSM SSM operation handle.
|
---|
| 143 | */
|
---|
| 144 | typedef DECLCALLBACK(int) FNSSMDEVSAVEDONE(PPDMDEVINS pDevIns, PSSMHANDLE pSSM);
|
---|
| 145 | /** Pointer to a FNSSMDEVSAVEDONE() function. */
|
---|
| 146 | typedef FNSSMDEVSAVEDONE *PFNSSMDEVSAVEDONE;
|
---|
| 147 |
|
---|
| 148 | /**
|
---|
| 149 | * Prepare state load operation.
|
---|
| 150 | *
|
---|
| 151 | * @returns VBox status code.
|
---|
| 152 | * @param pDevIns Device instance of the device which registered the data unit.
|
---|
| 153 | * @param pSSM SSM operation handle.
|
---|
| 154 | */
|
---|
| 155 | typedef DECLCALLBACK(int) FNSSMDEVLOADPREP(PPDMDEVINS pDevIns, PSSMHANDLE pSSM);
|
---|
| 156 | /** Pointer to a FNSSMDEVLOADPREP() function. */
|
---|
| 157 | typedef FNSSMDEVLOADPREP *PFNSSMDEVLOADPREP;
|
---|
| 158 |
|
---|
| 159 | /**
|
---|
| 160 | * Execute state load operation.
|
---|
| 161 | *
|
---|
| 162 | * @returns VBox status code.
|
---|
| 163 | * @param pDevIns Device instance of the device which registered the data unit.
|
---|
| 164 | * @param pSSM SSM operation handle.
|
---|
| 165 | * @param u32Version Data layout version.
|
---|
| 166 | */
|
---|
| 167 | typedef DECLCALLBACK(int) FNSSMDEVLOADEXEC(PPDMDEVINS pDevIns, PSSMHANDLE pSSM, uint32_t u32Version);
|
---|
| 168 | /** Pointer to a FNSSMDEVLOADEXEC() function. */
|
---|
| 169 | typedef FNSSMDEVLOADEXEC *PFNSSMDEVLOADEXEC;
|
---|
| 170 |
|
---|
| 171 | /**
|
---|
| 172 | * Done state load operation.
|
---|
| 173 | *
|
---|
| 174 | * @returns VBox load code.
|
---|
| 175 | * @param pDevIns Device instance of the device which registered the data unit.
|
---|
| 176 | * @param pSSM SSM operation handle.
|
---|
| 177 | */
|
---|
| 178 | typedef DECLCALLBACK(int) FNSSMDEVLOADDONE(PPDMDEVINS pDevIns, PSSMHANDLE pSSM);
|
---|
| 179 | /** Pointer to a FNSSMDEVLOADDONE() function. */
|
---|
| 180 | typedef FNSSMDEVLOADDONE *PFNSSMDEVLOADDONE;
|
---|
| 181 |
|
---|
| 182 | /** @} */
|
---|
| 183 |
|
---|
| 184 |
|
---|
| 185 | /** The PDM Driver callback variants.
|
---|
| 186 | * @{
|
---|
| 187 | */
|
---|
| 188 |
|
---|
| 189 | /**
|
---|
| 190 | * Prepare state save operation.
|
---|
| 191 | *
|
---|
| 192 | * @returns VBox status code.
|
---|
| 193 | * @param pDrvIns Driver instance of the driver which registered the data unit.
|
---|
| 194 | * @param pSSM SSM operation handle.
|
---|
| 195 | */
|
---|
| 196 | typedef DECLCALLBACK(int) FNSSMDRVSAVEPREP(PPDMDRVINS pDrvIns, PSSMHANDLE pSSM);
|
---|
| 197 | /** Pointer to a FNSSMDRVSAVEPREP() function. */
|
---|
| 198 | typedef FNSSMDRVSAVEPREP *PFNSSMDRVSAVEPREP;
|
---|
| 199 |
|
---|
| 200 | /**
|
---|
| 201 | * Execute state save operation.
|
---|
| 202 | *
|
---|
| 203 | * @returns VBox status code.
|
---|
| 204 | * @param pDrvIns Driver instance of the driver which registered the data unit.
|
---|
| 205 | * @param pSSM SSM operation handle.
|
---|
| 206 | */
|
---|
| 207 | typedef DECLCALLBACK(int) FNSSMDRVSAVEEXEC(PPDMDRVINS pDrvIns, PSSMHANDLE pSSM);
|
---|
| 208 | /** Pointer to a FNSSMDRVSAVEEXEC() function. */
|
---|
| 209 | typedef FNSSMDRVSAVEEXEC *PFNSSMDRVSAVEEXEC;
|
---|
| 210 |
|
---|
| 211 | /**
|
---|
| 212 | * Done state save operation.
|
---|
| 213 | *
|
---|
| 214 | * @returns VBox status code.
|
---|
| 215 | * @param pDrvIns Driver instance of the driver which registered the data unit.
|
---|
| 216 | * @param pSSM SSM operation handle.
|
---|
| 217 | */
|
---|
| 218 | typedef DECLCALLBACK(int) FNSSMDRVSAVEDONE(PPDMDRVINS pDrvIns, PSSMHANDLE pSSM);
|
---|
| 219 | /** Pointer to a FNSSMDRVSAVEDONE() function. */
|
---|
| 220 | typedef FNSSMDRVSAVEDONE *PFNSSMDRVSAVEDONE;
|
---|
| 221 |
|
---|
| 222 | /**
|
---|
| 223 | * Prepare state load operation.
|
---|
| 224 | *
|
---|
| 225 | * @returns VBox status code.
|
---|
| 226 | * @param pDrvIns Driver instance of the driver which registered the data unit.
|
---|
| 227 | * @param pSSM SSM operation handle.
|
---|
| 228 | */
|
---|
| 229 | typedef DECLCALLBACK(int) FNSSMDRVLOADPREP(PPDMDRVINS pDrvIns, PSSMHANDLE pSSM);
|
---|
| 230 | /** Pointer to a FNSSMDRVLOADPREP() function. */
|
---|
| 231 | typedef FNSSMDRVLOADPREP *PFNSSMDRVLOADPREP;
|
---|
| 232 |
|
---|
| 233 | /**
|
---|
| 234 | * Execute state load operation.
|
---|
| 235 | *
|
---|
| 236 | * @returns VBox status code.
|
---|
| 237 | * @param pDrvIns Driver instance of the driver which registered the data unit.
|
---|
| 238 | * @param pSSM SSM operation handle.
|
---|
| 239 | * @param u32Version Data layout version.
|
---|
| 240 | */
|
---|
| 241 | typedef DECLCALLBACK(int) FNSSMDRVLOADEXEC(PPDMDRVINS pDrvIns, PSSMHANDLE pSSM, uint32_t u32Version);
|
---|
| 242 | /** Pointer to a FNSSMDRVLOADEXEC() function. */
|
---|
| 243 | typedef FNSSMDRVLOADEXEC *PFNSSMDRVLOADEXEC;
|
---|
| 244 |
|
---|
| 245 | /**
|
---|
| 246 | * Done state load operation.
|
---|
| 247 | *
|
---|
| 248 | * @returns VBox load code.
|
---|
| 249 | * @param pDrvIns Driver instance of the driver which registered the data unit.
|
---|
| 250 | * @param pSSM SSM operation handle.
|
---|
| 251 | */
|
---|
| 252 | typedef DECLCALLBACK(int) FNSSMDRVLOADDONE(PPDMDRVINS pDrvIns, PSSMHANDLE pSSM);
|
---|
| 253 | /** Pointer to a FNSSMDRVLOADDONE() function. */
|
---|
| 254 | typedef FNSSMDRVLOADDONE *PFNSSMDRVLOADDONE;
|
---|
| 255 |
|
---|
| 256 | /** @} */
|
---|
| 257 |
|
---|
| 258 |
|
---|
| 259 | /** The internal callback variants.
|
---|
| 260 | * @{
|
---|
| 261 | */
|
---|
| 262 |
|
---|
| 263 | /**
|
---|
| 264 | * Prepare state save operation.
|
---|
| 265 | *
|
---|
| 266 | * @returns VBox status code.
|
---|
| 267 | * @param pVM VM Handle.
|
---|
| 268 | * @param pSSM SSM operation handle.
|
---|
| 269 | */
|
---|
| 270 | typedef DECLCALLBACK(int) FNSSMINTSAVEPREP(PVM pVM, PSSMHANDLE pSSM);
|
---|
| 271 | /** Pointer to a FNSSMINTSAVEPREP() function. */
|
---|
| 272 | typedef FNSSMINTSAVEPREP *PFNSSMINTSAVEPREP;
|
---|
| 273 |
|
---|
| 274 | /**
|
---|
| 275 | * Execute state save operation.
|
---|
| 276 | *
|
---|
| 277 | * @returns VBox status code.
|
---|
| 278 | * @param pVM VM Handle.
|
---|
| 279 | * @param pSSM SSM operation handle.
|
---|
| 280 | */
|
---|
| 281 | typedef DECLCALLBACK(int) FNSSMINTSAVEEXEC(PVM pVM, PSSMHANDLE pSSM);
|
---|
| 282 | /** Pointer to a FNSSMINTSAVEEXEC() function. */
|
---|
| 283 | typedef FNSSMINTSAVEEXEC *PFNSSMINTSAVEEXEC;
|
---|
| 284 |
|
---|
| 285 | /**
|
---|
| 286 | * Done state save operation.
|
---|
| 287 | *
|
---|
| 288 | * @returns VBox status code.
|
---|
| 289 | * @param pVM VM Handle.
|
---|
| 290 | * @param pSSM SSM operation handle.
|
---|
| 291 | */
|
---|
| 292 | typedef DECLCALLBACK(int) FNSSMINTSAVEDONE(PVM pVM, PSSMHANDLE pSSM);
|
---|
| 293 | /** Pointer to a FNSSMINTSAVEDONE() function. */
|
---|
| 294 | typedef FNSSMINTSAVEDONE *PFNSSMINTSAVEDONE;
|
---|
| 295 |
|
---|
| 296 | /**
|
---|
| 297 | * Prepare state load operation.
|
---|
| 298 | *
|
---|
| 299 | * @returns VBox status code.
|
---|
| 300 | * @param pVM VM Handle.
|
---|
| 301 | * @param pSSM SSM operation handle.
|
---|
| 302 | */
|
---|
| 303 | typedef DECLCALLBACK(int) FNSSMINTLOADPREP(PVM pVM, PSSMHANDLE pSSM);
|
---|
| 304 | /** Pointer to a FNSSMINTLOADPREP() function. */
|
---|
| 305 | typedef FNSSMINTLOADPREP *PFNSSMINTLOADPREP;
|
---|
| 306 |
|
---|
| 307 | /**
|
---|
| 308 | * Execute state load operation.
|
---|
| 309 | *
|
---|
| 310 | * @returns VBox status code.
|
---|
| 311 | * @param pVM VM Handle.
|
---|
| 312 | * @param pSSM SSM operation handle.
|
---|
| 313 | * @param u32Version Data layout version.
|
---|
| 314 | */
|
---|
| 315 | typedef DECLCALLBACK(int) FNSSMINTLOADEXEC(PVM pVM, PSSMHANDLE pSSM, uint32_t u32Version);
|
---|
| 316 | /** Pointer to a FNSSMINTLOADEXEC() function. */
|
---|
| 317 | typedef FNSSMINTLOADEXEC *PFNSSMINTLOADEXEC;
|
---|
| 318 |
|
---|
| 319 | /**
|
---|
| 320 | * Done state load operation.
|
---|
| 321 | *
|
---|
| 322 | * @returns VBox load code.
|
---|
| 323 | * @param pVM VM Handle.
|
---|
| 324 | * @param pSSM SSM operation handle.
|
---|
| 325 | */
|
---|
| 326 | typedef DECLCALLBACK(int) FNSSMINTLOADDONE(PVM pVM, PSSMHANDLE pSSM);
|
---|
| 327 | /** Pointer to a FNSSMINTLOADDONE() function. */
|
---|
| 328 | typedef FNSSMINTLOADDONE *PFNSSMINTLOADDONE;
|
---|
| 329 |
|
---|
| 330 | /** @} */
|
---|
| 331 |
|
---|
| 332 |
|
---|
| 333 | /** The External callback variants.
|
---|
| 334 | * @{
|
---|
| 335 | */
|
---|
| 336 |
|
---|
| 337 | /**
|
---|
| 338 | * Prepare state save operation.
|
---|
| 339 | *
|
---|
| 340 | * @returns VBox status code.
|
---|
| 341 | * @param pSSM SSM operation handle.
|
---|
| 342 | * @param pvUser User argument.
|
---|
| 343 | */
|
---|
| 344 | typedef DECLCALLBACK(int) FNSSMEXTSAVEPREP(PSSMHANDLE pSSM, void *pvUser);
|
---|
| 345 | /** Pointer to a FNSSMEXTSAVEPREP() function. */
|
---|
| 346 | typedef FNSSMEXTSAVEPREP *PFNSSMEXTSAVEPREP;
|
---|
| 347 |
|
---|
| 348 | /**
|
---|
| 349 | * Execute state save operation.
|
---|
| 350 | *
|
---|
| 351 | * @param pSSM SSM operation handle.
|
---|
| 352 | * @param pvUser User argument.
|
---|
| 353 | * @author The lack of return code is for legacy reasons.
|
---|
| 354 | */
|
---|
| 355 | typedef DECLCALLBACK(void) FNSSMEXTSAVEEXEC(PSSMHANDLE pSSM, void *pvUser);
|
---|
| 356 | /** Pointer to a FNSSMEXTSAVEEXEC() function. */
|
---|
| 357 | typedef FNSSMEXTSAVEEXEC *PFNSSMEXTSAVEEXEC;
|
---|
| 358 |
|
---|
| 359 | /**
|
---|
| 360 | * Done state save operation.
|
---|
| 361 | *
|
---|
| 362 | * @returns VBox status code.
|
---|
| 363 | * @param pSSM SSM operation handle.
|
---|
| 364 | * @param pvUser User argument.
|
---|
| 365 | */
|
---|
| 366 | typedef DECLCALLBACK(int) FNSSMEXTSAVEDONE(PSSMHANDLE pSSM, void *pvUser);
|
---|
| 367 | /** Pointer to a FNSSMEXTSAVEDONE() function. */
|
---|
| 368 | typedef FNSSMEXTSAVEDONE *PFNSSMEXTSAVEDONE;
|
---|
| 369 |
|
---|
| 370 | /**
|
---|
| 371 | * Prepare state load operation.
|
---|
| 372 | *
|
---|
| 373 | * @returns VBox status code.
|
---|
| 374 | * @param pSSM SSM operation handle.
|
---|
| 375 | * @param pvUser User argument.
|
---|
| 376 | */
|
---|
| 377 | typedef DECLCALLBACK(int) FNSSMEXTLOADPREP(PSSMHANDLE pSSM, void *pvUser);
|
---|
| 378 | /** Pointer to a FNSSMEXTLOADPREP() function. */
|
---|
| 379 | typedef FNSSMEXTLOADPREP *PFNSSMEXTLOADPREP;
|
---|
| 380 |
|
---|
| 381 | /**
|
---|
| 382 | * Execute state load operation.
|
---|
| 383 | *
|
---|
| 384 | * @returns 0 on success.
|
---|
| 385 | * @returns Not 0 on failure.
|
---|
| 386 | * @param pSSM SSM operation handle.
|
---|
| 387 | * @param pvUser User argument.
|
---|
| 388 | * @param u32Version Data layout version.
|
---|
| 389 | * @remark The odd return value is for legacy reasons.
|
---|
| 390 | */
|
---|
| 391 | typedef DECLCALLBACK(int) FNSSMEXTLOADEXEC(PSSMHANDLE pSSM, void *pvUser, uint32_t u32Version);
|
---|
| 392 | /** Pointer to a FNSSMEXTLOADEXEC() function. */
|
---|
| 393 | typedef FNSSMEXTLOADEXEC *PFNSSMEXTLOADEXEC;
|
---|
| 394 |
|
---|
| 395 | /**
|
---|
| 396 | * Done state load operation.
|
---|
| 397 | *
|
---|
| 398 | * @returns VBox load code.
|
---|
| 399 | * @param pSSM SSM operation handle.
|
---|
| 400 | * @param pvUser User argument.
|
---|
| 401 | */
|
---|
| 402 | typedef DECLCALLBACK(int) FNSSMEXTLOADDONE(PSSMHANDLE pSSM, void *pvUser);
|
---|
| 403 | /** Pointer to a FNSSMEXTLOADDONE() function. */
|
---|
| 404 | typedef FNSSMEXTLOADDONE *PFNSSMEXTLOADDONE;
|
---|
| 405 |
|
---|
| 406 | /** @} */
|
---|
| 407 |
|
---|
| 408 |
|
---|
| 409 | SSMR3DECL(int) SSMR3Register(PVM pVM, PPDMDEVINS pDevIns, const char *pszName, uint32_t u32Instance, uint32_t u32Version, size_t cbGuess,
|
---|
| 410 | PFNSSMDEVSAVEPREP pfnSavePrep, PFNSSMDEVSAVEEXEC pfnSaveExec, PFNSSMDEVSAVEDONE pfnSaveDone,
|
---|
| 411 | PFNSSMDEVLOADPREP pfnLoadPrep, PFNSSMDEVLOADEXEC pfnLoadExec, PFNSSMDEVLOADDONE pfnLoadDone);
|
---|
| 412 | SSMR3DECL(int) SSMR3RegisterDriver(PVM pVM, PPDMDRVINS pDrvIns, const char *pszName, uint32_t u32Instance, uint32_t u32Version, size_t cbGuess,
|
---|
| 413 | PFNSSMDRVSAVEPREP pfnSavePrep, PFNSSMDRVSAVEEXEC pfnSaveExec, PFNSSMDRVSAVEDONE pfnSaveDone,
|
---|
| 414 | PFNSSMDRVLOADPREP pfnLoadPrep, PFNSSMDRVLOADEXEC pfnLoadExec, PFNSSMDRVLOADDONE pfnLoadDone);
|
---|
| 415 | SSMR3DECL(int) SSMR3RegisterInternal(PVM pVM, const char *pszName, uint32_t u32Instance, uint32_t u32Version, size_t cbGuess,
|
---|
| 416 | PFNSSMINTSAVEPREP pfnSavePrep, PFNSSMINTSAVEEXEC pfnSaveExec, PFNSSMINTSAVEDONE pfnSaveDone,
|
---|
| 417 | PFNSSMINTLOADPREP pfnLoadPrep, PFNSSMINTLOADEXEC pfnLoadExec, PFNSSMINTLOADDONE pfnLoadDone);
|
---|
| 418 | SSMR3DECL(int) SSMR3RegisterExternal(PVM pVM, const char *pszName, uint32_t u32Instance, uint32_t u32Version, size_t cbGuess,
|
---|
| 419 | PFNSSMEXTSAVEPREP pfnSavePrep, PFNSSMEXTSAVEEXEC pfnSaveExec, PFNSSMEXTSAVEDONE pfnSaveDone,
|
---|
| 420 | PFNSSMEXTLOADPREP pfnLoadPrep, PFNSSMEXTLOADEXEC pfnLoadExec, PFNSSMEXTLOADDONE pfnLoadDone, void *pvUser);
|
---|
| 421 | SSMR3DECL(int) SSMR3Deregister(PVM pVM, PPDMDEVINS pDevIns, const char *pszName, uint32_t u32Instance);
|
---|
| 422 | SSMR3DECL(int) SSMR3DeregisterDriver(PVM pVM, PPDMDRVINS pDrvIns, const char *pszName, uint32_t u32Instance);
|
---|
| 423 | SSMR3DECL(int) SSMR3DeregisterInternal(PVM pVM, const char *pszName);
|
---|
[900] | 424 | SSMR3DECL(int) SSMR3DeregisterExternal(PVM pVM, const char *pszName);
|
---|
[1] | 425 | SSMR3DECL(int) SSMR3Save(PVM pVM, const char *pszFilename, SSMAFTER enmAfter, PFNVMPROGRESS pfnProgress, void *pvUser);
|
---|
| 426 | SSMR3DECL(int) SSMR3Load(PVM pVM, const char *pszFilename, SSMAFTER enmAfter, PFNVMPROGRESS pfnProgress, void *pvUser);
|
---|
| 427 | SSMR3DECL(int) SSMR3ValidateFile(const char *pszFilename);
|
---|
| 428 | SSMR3DECL(int) SSMR3Open(const char *pszFilename, unsigned fFlags, PSSMHANDLE *ppSSM);
|
---|
| 429 | SSMR3DECL(int) SSMR3Close(PSSMHANDLE pSSM);
|
---|
| 430 | SSMR3DECL(int) SSMR3Seek(PSSMHANDLE pSSM, const char *pszUnit, uint32_t iInstance, uint32_t *piVersion);
|
---|
[7112] | 431 | SSMR3DECL(int) SSMR3HandleGetStatus(PSSMHANDLE pSSM);
|
---|
| 432 | SSMR3DECL(int) SSMR3HandleSetStatus(PSSMHANDLE pSSM, int iStatus);
|
---|
| 433 | SSMR3DECL(SSMAFTER) SSMR3HandleGetAfter(PSSMHANDLE pSSM);
|
---|
[1] | 434 |
|
---|
| 435 |
|
---|
| 436 | /** Save operations.
|
---|
| 437 | * @{
|
---|
| 438 | */
|
---|
| 439 | SSMR3DECL(int) SSMR3PutStruct(PSSMHANDLE pSSM, const void *pvStruct, PCSSMFIELD paFields);
|
---|
| 440 | SSMR3DECL(int) SSMR3PutBool(PSSMHANDLE pSSM, bool fBool);
|
---|
| 441 | SSMR3DECL(int) SSMR3PutU8(PSSMHANDLE pSSM, uint8_t u8);
|
---|
| 442 | SSMR3DECL(int) SSMR3PutS8(PSSMHANDLE pSSM, int8_t i8);
|
---|
| 443 | SSMR3DECL(int) SSMR3PutU16(PSSMHANDLE pSSM, uint16_t u16);
|
---|
| 444 | SSMR3DECL(int) SSMR3PutS16(PSSMHANDLE pSSM, int16_t i16);
|
---|
| 445 | SSMR3DECL(int) SSMR3PutU32(PSSMHANDLE pSSM, uint32_t u32);
|
---|
| 446 | SSMR3DECL(int) SSMR3PutS32(PSSMHANDLE pSSM, int32_t i32);
|
---|
| 447 | SSMR3DECL(int) SSMR3PutU64(PSSMHANDLE pSSM, uint64_t u64);
|
---|
| 448 | SSMR3DECL(int) SSMR3PutS64(PSSMHANDLE pSSM, int64_t i64);
|
---|
| 449 | SSMR3DECL(int) SSMR3PutU128(PSSMHANDLE pSSM, uint128_t u128);
|
---|
| 450 | SSMR3DECL(int) SSMR3PutS128(PSSMHANDLE pSSM, int128_t i128);
|
---|
| 451 | SSMR3DECL(int) SSMR3PutUInt(PSSMHANDLE pSSM, RTUINT u);
|
---|
| 452 | SSMR3DECL(int) SSMR3PutSInt(PSSMHANDLE pSSM, RTINT i);
|
---|
| 453 | SSMR3DECL(int) SSMR3PutGCUInt(PSSMHANDLE pSSM, RTGCUINT u);
|
---|
| 454 | SSMR3DECL(int) SSMR3PutGCSInt(PSSMHANDLE pSSM, RTGCINT i);
|
---|
[7072] | 455 | SSMR3DECL(int) SSMR3PutGCPhys32(PSSMHANDLE pSSM, RTGCPHYS32 GCPhys);
|
---|
[7588] | 456 | SSMR3DECL(int) SSMR3PutGCPhys64(PSSMHANDLE pSSM, RTGCPHYS64 GCPhys);
|
---|
[1] | 457 | SSMR3DECL(int) SSMR3PutGCPhys(PSSMHANDLE pSSM, RTGCPHYS GCPhys);
|
---|
| 458 | SSMR3DECL(int) SSMR3PutGCPtr(PSSMHANDLE pSSM, RTGCPTR GCPtr);
|
---|
| 459 | SSMR3DECL(int) SSMR3PutGCUIntPtr(PSSMHANDLE pSSM, RTGCUINTPTR GCPtr);
|
---|
| 460 | SSMR3DECL(int) SSMR3PutHCUInt(PSSMHANDLE pSSM, RTHCUINT u);
|
---|
| 461 | SSMR3DECL(int) SSMR3PutHCSInt(PSSMHANDLE pSSM, RTHCINT i);
|
---|
| 462 | SSMR3DECL(int) SSMR3PutIOPort(PSSMHANDLE pSSM, RTIOPORT IOPort);
|
---|
| 463 | SSMR3DECL(int) SSMR3PutSel(PSSMHANDLE pSSM, RTSEL Sel);
|
---|
| 464 | SSMR3DECL(int) SSMR3PutMem(PSSMHANDLE pSSM, const void *pv, size_t cb);
|
---|
| 465 | SSMR3DECL(int) SSMR3PutStrZ(PSSMHANDLE pSSM, const char *psz);
|
---|
| 466 | /** @} */
|
---|
| 467 |
|
---|
| 468 |
|
---|
| 469 |
|
---|
| 470 | /** Load operations.
|
---|
| 471 | * @{
|
---|
| 472 | */
|
---|
| 473 | SSMR3DECL(int) SSMR3GetStruct(PSSMHANDLE pSSM, void *pvStruct, PCSSMFIELD paFields);
|
---|
| 474 | SSMR3DECL(int) SSMR3GetBool(PSSMHANDLE pSSM, bool *pfBool);
|
---|
| 475 | SSMR3DECL(int) SSMR3GetU8(PSSMHANDLE pSSM, uint8_t *pu8);
|
---|
| 476 | SSMR3DECL(int) SSMR3GetS8(PSSMHANDLE pSSM, int8_t *pi8);
|
---|
| 477 | SSMR3DECL(int) SSMR3GetU16(PSSMHANDLE pSSM, uint16_t *pu16);
|
---|
| 478 | SSMR3DECL(int) SSMR3GetS16(PSSMHANDLE pSSM, int16_t *pi16);
|
---|
| 479 | SSMR3DECL(int) SSMR3GetU32(PSSMHANDLE pSSM, uint32_t *pu32);
|
---|
| 480 | SSMR3DECL(int) SSMR3GetS32(PSSMHANDLE pSSM, int32_t *pi32);
|
---|
| 481 | SSMR3DECL(int) SSMR3GetU64(PSSMHANDLE pSSM, uint64_t *pu64);
|
---|
| 482 | SSMR3DECL(int) SSMR3GetS64(PSSMHANDLE pSSM, int64_t *pi64);
|
---|
| 483 | SSMR3DECL(int) SSMR3GetU128(PSSMHANDLE pSSM, uint128_t *pu128);
|
---|
| 484 | SSMR3DECL(int) SSMR3GetS128(PSSMHANDLE pSSM, int128_t *pi128);
|
---|
| 485 | SSMR3DECL(int) SSMR3GetUInt(PSSMHANDLE pSSM, PRTUINT pu);
|
---|
| 486 | SSMR3DECL(int) SSMR3GetSInt(PSSMHANDLE pSSM, PRTINT pi);
|
---|
| 487 | SSMR3DECL(int) SSMR3GetGCUInt(PSSMHANDLE pSSM, PRTGCUINT pu);
|
---|
| 488 | SSMR3DECL(int) SSMR3GetGCSInt(PSSMHANDLE pSSM, PRTGCINT pi);
|
---|
[7072] | 489 | SSMR3DECL(int) SSMR3GetGCPhys32(PSSMHANDLE pSSM, PRTGCPHYS32 pGCPhys);
|
---|
[7582] | 490 | SSMR3DECL(int) SSMR3GetGCPhys64(PSSMHANDLE pSSM, PRTGCPHYS64 pGCPhys);
|
---|
[1] | 491 | SSMR3DECL(int) SSMR3GetGCPhys(PSSMHANDLE pSSM, PRTGCPHYS pGCPhys);
|
---|
| 492 | SSMR3DECL(int) SSMR3GetGCPtr(PSSMHANDLE pSSM, PRTGCPTR pGCPtr);
|
---|
| 493 | SSMR3DECL(int) SSMR3GetGCUIntPtr(PSSMHANDLE pSSM, PRTGCUINTPTR pGCPtr);
|
---|
| 494 | SSMR3DECL(int) SSMR3GetIOPort(PSSMHANDLE pSSM, PRTIOPORT pIOPort);
|
---|
| 495 | SSMR3DECL(int) SSMR3GetHCUInt(PSSMHANDLE pSSM, PRTHCUINT pu);
|
---|
| 496 | SSMR3DECL(int) SSMR3GetHCSInt(PSSMHANDLE pSSM, PRTHCINT pi);
|
---|
| 497 | SSMR3DECL(int) SSMR3GetSel(PSSMHANDLE pSSM, PRTSEL pSel);
|
---|
| 498 | SSMR3DECL(int) SSMR3GetMem(PSSMHANDLE pSSM, void *pv, size_t cb);
|
---|
| 499 | SSMR3DECL(int) SSMR3GetStrZ(PSSMHANDLE pSSM, char *psz, size_t cbMax);
|
---|
| 500 | SSMR3DECL(int) SSMR3GetStrZEx(PSSMHANDLE pSSM, char *psz, size_t cbMax, size_t *pcbStr);
|
---|
| 501 | SSMR3DECL(int) SSMR3GetTimer(PSSMHANDLE pSSM, PTMTIMER pTimer);
|
---|
| 502 |
|
---|
| 503 | /** @} */
|
---|
| 504 |
|
---|
[6287] | 505 | /** @} */
|
---|
[1] | 506 | #endif /* IN_RING3 */
|
---|
| 507 |
|
---|
| 508 |
|
---|
| 509 | /** @} */
|
---|
| 510 |
|
---|
| 511 | __END_DECLS
|
---|
| 512 |
|
---|
| 513 | #endif
|
---|
| 514 |
|
---|