VirtualBox

Changeset 38877 in vbox for trunk/include/VBox/vmm


Ignore:
Timestamp:
Sep 27, 2011 9:04:46 AM (13 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
74199
Message:

VMM/PDMBlkCache: Add discard API

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/include/VBox/vmm/pdmblkcache.h

    r35361 r38877  
    5757    /** Write */
    5858    PDMBLKCACHEXFERDIR_WRITE,
    59     /** FLush */
    60     PDMBLKCACHEXFERDIR_FLUSH
     59    /** Flush */
     60    PDMBLKCACHEXFERDIR_FLUSH,
     61    /** Discard */
     62    PDMBLKCACHEXFERDIR_DISCARD
    6163} PDMBLKCACHEXFERDIR;
    6264
     
    8789
    8890/**
     91 * Discard enqueue callback for drivers.
     92 *
     93 * @param   pDrvIns        The driver instance.
     94 * @param   paRanges       Ranges to discard.
     95 * @param   cRanges        Number of range entries.
     96 * @param   hIoXfer        I/O handle to return on completion.
     97 */
     98typedef DECLCALLBACK(int) FNPDMBLKCACHEXFERENQUEUEDISCARDDRV(PPDMDRVINS pDrvIns,
     99                                                             PCRTRANGE paRanges, unsigned cRanges,
     100                                                             PPDMBLKCACHEIOXFER hIoXfer);
     101/** Pointer to a FNPDMBLKCACHEXFERENQUEUEDISCARDDRV(). */
     102typedef FNPDMBLKCACHEXFERENQUEUEDISCARDDRV *PFNPDMBLKCACHEXFERENQUEUEDISCARDDRV;
     103
     104/**
    89105 * Completion callback for devices.
    90106 *
    91  * @param   pDrvIns        The driver instance.
     107 * @param   pDrvIns        The device instance.
    92108 * @param   pvUser         User argument given during request initiation.
    93109 * @param   rc             The status code of the completed request.
     
    100116 * I/O enqueue callback for devices.
    101117 *
    102  * @param   pDrvIns        The driver instance.
     118 * @param   pDevIns        The device instance.
    103119 * @param   pvUser         User argument given during request initiation.
    104120 * @param   rc             The status code of the completed request.
     
    112128
    113129/**
     130 * Discard enqueue callback for devices.
     131 *
     132 * @param   pDrvIns        The driver instance.
     133 * @param   paRanges       Ranges to discard.
     134 * @param   cRanges        Number of range entries.
     135 * @param   hIoXfer        I/O handle to return on completion.
     136 */
     137typedef DECLCALLBACK(int) FNPDMBLKCACHEXFERENQUEUEDISCARDDEV(PPDMDEVINS pDevIns,
     138                                                             PCRTRANGE paRanges, unsigned cRanges,
     139                                                             PPDMBLKCACHEIOXFER hIoXfer);
     140/** Pointer to a FNPDMBLKCACHEXFERENQUEUEDISCARDDEV(). */
     141typedef FNPDMBLKCACHEXFERENQUEUEDISCARDDEV *PFNPDMBLKCACHEXFERENQUEUEDISCARDDEV;
     142
     143/**
    114144 * Completion callback for drivers.
    115145 *
     
    137167
    138168/**
     169 * Discard enqueue callback for VMM internal users.
     170 *
     171 * @param   pDrvIns        The driver instance.
     172 * @param   paRanges       Ranges to discard.
     173 * @param   cRanges        Number of range entries.
     174 * @param   hIoXfer        I/O handle to return on completion.
     175 */
     176typedef DECLCALLBACK(int) FNPDMBLKCACHEXFERENQUEUEDISCARDINT(void *pvUser,
     177                                                             PCRTRANGE paRanges, unsigned cRanges,
     178                                                             PPDMBLKCACHEIOXFER hIoXfer);
     179/** Pointer to a FNPDMBLKCACHEXFERENQUEUEDISCARDINT(). */
     180typedef FNPDMBLKCACHEXFERENQUEUEDISCARDINT *PFNPDMBLKCACHEXFERENQUEUEDISCARDINT;
     181
     182/**
    139183 * Completion callback for USB.
    140184 *
     
    162206
    163207/**
     208 * Discard enqueue callback for USB devices.
     209 *
     210 * @param   pUsbIns        The USB device instance.
     211 * @param   paRanges       Ranges to discard.
     212 * @param   cRanges        Number of range entries.
     213 * @param   hIoXfer        I/O handle to return on completion.
     214 */
     215typedef DECLCALLBACK(int) FNPDMBLKCACHEXFERENQUEUEDISCARDUSB(PPDMUSBINS pUsbIns,
     216                                                             PCRTRANGE paRanges, unsigned cRanges,
     217                                                             PPDMBLKCACHEIOXFER hIoXfer);
     218/** Pointer to a FNPDMBLKCACHEXFERENQUEUEDISCARDUSB(). */
     219typedef FNPDMBLKCACHEXFERENQUEUEDISCARDUSB *PFNPDMBLKCACHEXFERENQUEUEDISCARDUSB;
     220
     221/**
    164222 * Create a block cache user for a driver instance.
    165223 *
    166224 * @returns VBox status code.
    167  * @param   pVM             Pointer to the shared VM structure.
    168  * @param   pDrvIns         The driver instance.
    169  * @param   ppBlkCache      Where to store the handle to the block cache.
    170  * @param   pfnXferComplete The I/O transfer complete callback.
    171  * @param   pfnXferEnqueue  The I/O request enqueue callback.
    172  * @param   pcszId          Unique ID used to identify the user.
     225 * @param   pVM                      Pointer to the shared VM structure.
     226 * @param   pDrvIns                  The driver instance.
     227 * @param   ppBlkCache               Where to store the handle to the block cache.
     228 * @param   pfnXferComplete          The I/O transfer complete callback.
     229 * @param   pfnXferEnqueue           The I/O request enqueue callback.
     230 * @param   pfnXferEnqueueDiscard    The discard request enqueue callback.
     231 * @param   pcszId                   Unique ID used to identify the user.
    173232 */
    174233VMMR3DECL(int) PDMR3BlkCacheRetainDriver(PVM pVM, PPDMDRVINS pDrvIns, PPPDMBLKCACHE ppBlkCache,
    175234                                         PFNPDMBLKCACHEXFERCOMPLETEDRV pfnXferComplete,
    176235                                         PFNPDMBLKCACHEXFERENQUEUEDRV pfnXferEnqueue,
     236                                         PFNPDMBLKCACHEXFERENQUEUEDISCARDDRV pfnXferEnqueueDiscard,
    177237                                         const char *pcszId);
    178238
     
    181241 *
    182242 * @returns VBox status code.
    183  * @param   pVM             Pointer to the shared VM structure.
    184  * @param   pDevIns         The device instance.
    185  * @param   ppBlkCache      Where to store the handle to the block cache.
    186  * @param   pfnXferComplete The I/O transfer complete callback.
    187  * @param   pfnXferEnqueue  The I/O request enqueue callback.
    188  * @param   pcszId          Unique ID used to identify the user.
     243 * @param   pVM                      Pointer to the shared VM structure.
     244 * @param   pDevIns                  The device instance.
     245 * @param   ppBlkCache               Where to store the handle to the block cache.
     246 * @param   pfnXferComplete          The I/O transfer complete callback.
     247 * @param   pfnXferEnqueue           The I/O request enqueue callback.
     248 * @param   pfnXferEnqueueDiscard    The discard request enqueue callback.
     249 * @param   pcszId                   Unique ID used to identify the user.
    189250 */
    190251VMMR3DECL(int) PDMR3BlkCacheRetainDevice(PVM pVM, PPDMDEVINS pDevIns, PPPDMBLKCACHE ppBlkCache,
    191252                                         PFNPDMBLKCACHEXFERCOMPLETEDEV pfnXferComplete,
    192253                                         PFNPDMBLKCACHEXFERENQUEUEDEV pfnXferEnqueue,
     254                                         PFNPDMBLKCACHEXFERENQUEUEDISCARDDEV pfnXferEnqueueDiscard,
    193255                                         const char *pcszId);
    194256
     
    197259 *
    198260 * @returns VBox status code.
    199  * @param   pVM             Pointer to the shared VM structure.
    200  * @param   pUsbIns         The USB device instance.
    201  * @param   ppBlkCache      Where to store the handle to the block cache.
    202  * @param   pfnXferComplete The I/O transfer complete callback.
    203  * @param   pfnXferEnqueue  The I/O request enqueue callback.
    204  * @param   pcszId          Unique ID used to identify the user.
     261 * @param   pVM                      Pointer to the shared VM structure.
     262 * @param   pUsbIns                  The USB device instance.
     263 * @param   ppBlkCache               Where to store the handle to the block cache.
     264 * @param   pfnXferComplete          The I/O transfer complete callback.
     265 * @param   pfnXferEnqueue           The I/O request enqueue callback.
     266 * @param   pfnXferEnqueueDiscard    The discard request enqueue callback.
     267 * @param   pcszId                   Unique ID used to identify the user.
    205268 */
    206269VMMR3DECL(int) PDMR3BlkCacheRetainUsb(PVM pVM, PPDMUSBINS pUsbIns, PPPDMBLKCACHE ppBlkCache,
    207270                                      PFNPDMBLKCACHEXFERCOMPLETEUSB pfnXferComplete,
    208271                                      PFNPDMBLKCACHEXFERENQUEUEUSB pfnXferEnqueue,
     272                                      PFNPDMBLKCACHEXFERENQUEUEDISCARDUSB pfnXferEnqueueDiscard,
    209273                                      const char *pcszId);
    210274
     
    213277 *
    214278 * @returns VBox status code.
    215  * @param   pVM             Pointer to the shared VM structure.
    216  * @param   pvUser          Opaque user data.
    217  * @param   ppBlkCache      Where to store the handle to the block cache.
    218  * @param   pfnXferComplete The I/O transfer complete callback.
    219  * @param   pfnXferEnqueue  The I/O request enqueue callback.
    220  * @param   pcszId          Unique ID used to identify the user.
     279 * @param   pVM                      Pointer to the shared VM structure.
     280 * @param   pvUser                   Opaque user data.
     281 * @param   ppBlkCache               Where to store the handle to the block cache.
     282 * @param   pfnXferComplete          The I/O transfer complete callback.
     283 * @param   pfnXferEnqueue           The I/O request enqueue callback.
     284 * @param   pfnXferEnqueueDiscard    The discard request enqueue callback.
     285 * @param   pcszId                   Unique ID used to identify the user.
    221286 */
    222287VMMR3DECL(int) PDMR3BlkCacheRetainInt(PVM pVM, void *pvUser, PPPDMBLKCACHE ppBlkCache,
    223288                                      PFNPDMBLKCACHEXFERCOMPLETEINT pfnXferComplete,
    224289                                      PFNPDMBLKCACHEXFERENQUEUEINT pfnXferEnqueue,
     290                                      PFNPDMBLKCACHEXFERENQUEUEDISCARDINT pfnXferEnqueueDiscard,
    225291                                      const char *pcszId);
    226292
     
    297363 * @param   pvUser          Opaque user data returned in the completion callback
    298364 *                          upon completion of the task.
    299  * @param   ppTask          Where to store the task handle on success.
    300365 */
    301366VMMR3DECL(int) PDMR3BlkCacheFlush(PPDMBLKCACHE pBlkCache, void *pvUser);
     367
     368/**
     369 * Discards the given ranges from the cache.
     370 *
     371 * @returns VBox status code.
     372 * @param   pEndpoint       The file endpoint to flush.
     373 * @param   paRanges        Array of ranges to discard.
     374 * @param   cRanges         Number of ranges in the array.
     375 * @param   pvUser          Opaque user data returned in the completion callback
     376 *                          upon completion of the task.
     377 */
     378VMMR3DECL(int) PDMR3BlkCacheDiscard(PPDMBLKCACHE pBlkCache, PCRTRANGE paRanges, unsigned cRanges, void *pvUser);
    302379
    303380/**
Note: See TracChangeset for help on using the changeset viewer.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette