~ubuntu-branches/ubuntu/raring/virtualbox-ose/raring

« back to all changes in this revision

Viewing changes to include/VBox/pdmqueue.h

  • Committer: Bazaar Package Importer
  • Author(s): Felix Geyer
  • Date: 2011-01-30 23:27:25 UTC
  • mfrom: (0.3.12 upstream)
  • Revision ID: james.westby@ubuntu.com-20110130232725-2ouajjd2ggdet0zd
Tags: 4.0.2-dfsg-1ubuntu1
* Merge from Debian unstable, remaining changes:
  - Add Apport hook.
    - debian/virtualbox-ose.files/source_virtualbox-ose.py
    - debian/virtualbox-ose.install
  - Drop *-source packages.
* Drop ubuntu-01-fix-build-gcc45.patch, fixed upstream.
* Drop ubuntu-02-as-needed.patch, added to the Debian package.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
/** @file
2
 
 * PDM - Pluggable Device Manager, Queues. (VMM)
3
 
 */
4
 
 
5
 
/*
6
 
 * Copyright (C) 2006-2007 Oracle Corporation
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
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.
24
 
 */
25
 
 
26
 
#ifndef ___VBox_pdmqueue_h
27
 
#define ___VBox_pdmqueue_h
28
 
 
29
 
#include <VBox/types.h>
30
 
 
31
 
RT_C_DECLS_BEGIN
32
 
 
33
 
/** @defgroup grp_pdm_queue     The PDM Queues API
34
 
 * @ingroup grp_pdm
35
 
 * @{
36
 
 */
37
 
 
38
 
/** Pointer to a PDM queue. Also called PDM queue handle. */
39
 
typedef struct PDMQUEUE *PPDMQUEUE;
40
 
 
41
 
/** Pointer to a PDM queue item core. */
42
 
typedef struct PDMQUEUEITEMCORE *PPDMQUEUEITEMCORE;
43
 
 
44
 
/**
45
 
 * PDM queue item core.
46
 
 */
47
 
typedef struct PDMQUEUEITEMCORE
48
 
{
49
 
    /** Pointer to the next item in the pending list - R3 Pointer. */
50
 
    R3PTRTYPE(PPDMQUEUEITEMCORE)    pNextR3;
51
 
    /** Pointer to the next item in the pending list - R0 Pointer. */
52
 
    R0PTRTYPE(PPDMQUEUEITEMCORE)    pNextR0;
53
 
    /** Pointer to the next item in the pending list - RC Pointer. */
54
 
    RCPTRTYPE(PPDMQUEUEITEMCORE)    pNextRC;
55
 
#if HC_ARCH_BITS == 64
56
 
    RTRCPTR                         Alignment0;
57
 
#endif
58
 
} PDMQUEUEITEMCORE;
59
 
 
60
 
 
61
 
/**
62
 
 * Queue consumer callback for devices.
63
 
 *
64
 
 * @returns Success indicator.
65
 
 *          If false the item will not be removed and the flushing will stop.
66
 
 * @param   pDevIns     The device instance.
67
 
 * @param   pItem       The item to consume. Upon return this item will be freed.
68
 
 */
69
 
typedef DECLCALLBACK(bool) FNPDMQUEUEDEV(PPDMDEVINS pDevIns, PPDMQUEUEITEMCORE pItem);
70
 
/** Pointer to a FNPDMQUEUEDEV(). */
71
 
typedef FNPDMQUEUEDEV *PFNPDMQUEUEDEV;
72
 
 
73
 
/**
74
 
 * Queue consumer callback for USB devices.
75
 
 *
76
 
 * @returns Success indicator.
77
 
 *          If false the item will not be removed and the flushing will stop.
78
 
 * @param   pDevIns     The USB device instance.
79
 
 * @param   pItem       The item to consume. Upon return this item will be freed.
80
 
 */
81
 
typedef DECLCALLBACK(bool) FNPDMQUEUEUSB(PPDMUSBINS pUsbIns, PPDMQUEUEITEMCORE pItem);
82
 
/** Pointer to a FNPDMQUEUEUSB(). */
83
 
typedef FNPDMQUEUEUSB *PFNPDMQUEUEUSB;
84
 
 
85
 
/**
86
 
 * Queue consumer callback for drivers.
87
 
 *
88
 
 * @returns Success indicator.
89
 
 *          If false the item will not be removed and the flushing will stop.
90
 
 * @param   pDrvIns     The driver instance.
91
 
 * @param   pItem       The item to consume. Upon return this item will be freed.
92
 
 */
93
 
typedef DECLCALLBACK(bool) FNPDMQUEUEDRV(PPDMDRVINS pDrvIns, PPDMQUEUEITEMCORE pItem);
94
 
/** Pointer to a FNPDMQUEUEDRV(). */
95
 
typedef FNPDMQUEUEDRV *PFNPDMQUEUEDRV;
96
 
 
97
 
/**
98
 
 * Queue consumer callback for internal component.
99
 
 *
100
 
 * @returns Success indicator.
101
 
 *          If false the item will not be removed and the flushing will stop.
102
 
 * @param   pVM         The VM handle.
103
 
 * @param   pItem       The item to consume. Upon return this item will be freed.
104
 
 */
105
 
typedef DECLCALLBACK(bool) FNPDMQUEUEINT(PVM pVM, PPDMQUEUEITEMCORE pItem);
106
 
/** Pointer to a FNPDMQUEUEINT(). */
107
 
typedef FNPDMQUEUEINT *PFNPDMQUEUEINT;
108
 
 
109
 
/**
110
 
 * Queue consumer callback for external component.
111
 
 *
112
 
 * @returns Success indicator.
113
 
 *          If false the item will not be removed and the flushing will stop.
114
 
 * @param   pvUser      User argument.
115
 
 * @param   pItem       The item to consume. Upon return this item will be freed.
116
 
 */
117
 
typedef DECLCALLBACK(bool) FNPDMQUEUEEXT(void *pvUser, PPDMQUEUEITEMCORE pItem);
118
 
/** Pointer to a FNPDMQUEUEEXT(). */
119
 
typedef FNPDMQUEUEEXT *PFNPDMQUEUEEXT;
120
 
 
121
 
VMMR3DECL(int)  PDMR3QueueCreateDevice(PVM pVM, PPDMDEVINS pDevIns, RTUINT cbItem, RTUINT cItems, uint32_t cMilliesInterval,
122
 
                                       PFNPDMQUEUEDEV pfnCallback, bool fGCEnabled, const char *pszName, PPDMQUEUE *ppQueue);
123
 
VMMR3DECL(int)  PDMR3QueueCreateDriver(PVM pVM, PPDMDRVINS pDrvIns, RTUINT cbItem, RTUINT cItems, uint32_t cMilliesInterval,
124
 
                                       PFNPDMQUEUEDRV pfnCallback, const char *pszName, PPDMQUEUE *ppQueue);
125
 
VMMR3DECL(int)  PDMR3QueueCreateInternal(PVM pVM, RTUINT cbItem, RTUINT cItems, uint32_t cMilliesInterval,
126
 
                                         PFNPDMQUEUEINT pfnCallback, bool fGCEnabled, const char *pszName, PPDMQUEUE *ppQueue);
127
 
VMMR3DECL(int)  PDMR3QueueCreateExternal(PVM pVM, RTUINT cbItem, RTUINT cItems, uint32_t cMilliesInterval,
128
 
                                         PFNPDMQUEUEEXT pfnCallback, void *pvUser, const char *pszName, PPDMQUEUE *ppQueue);
129
 
VMMR3DECL(int)  PDMR3QueueDestroy(PPDMQUEUE pQueue);
130
 
VMMR3DECL(int)  PDMR3QueueDestroyDevice(PVM pVM, PPDMDEVINS pDevIns);
131
 
VMMR3DECL(int)  PDMR3QueueDestroyDriver(PVM pVM, PPDMDRVINS pDrvIns);
132
 
VMMR3DECL(void) PDMR3QueueFlushAll(PVM pVM);
133
 
 
134
 
VMMDECL(PPDMQUEUEITEMCORE)    PDMQueueAlloc(PPDMQUEUE pQueue);
135
 
VMMDECL(void)                 PDMQueueInsert(PPDMQUEUE pQueue, PPDMQUEUEITEMCORE pItem);
136
 
VMMDECL(void)                 PDMQueueInsertEx(PPDMQUEUE pQueue, PPDMQUEUEITEMCORE pItem, uint64_t NanoMaxDelay);
137
 
VMMDECL(RCPTRTYPE(PPDMQUEUE)) PDMQueueRCPtr(PPDMQUEUE pQueue);
138
 
VMMDECL(R0PTRTYPE(PPDMQUEUE)) PDMQueueR0Ptr(PPDMQUEUE pQueue);
139
 
 
140
 
/** @} */
141
 
 
142
 
RT_C_DECLS_END
143
 
 
144
 
#endif
145