summaryrefslogtreecommitdiff
path: root/include/VBox/vmm/pdmnetshaper.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/VBox/vmm/pdmnetshaper.h')
-rw-r--r--include/VBox/vmm/pdmnetshaper.h91
1 files changed, 25 insertions, 66 deletions
diff --git a/include/VBox/vmm/pdmnetshaper.h b/include/VBox/vmm/pdmnetshaper.h
index b2aa5bab..d3610564 100644
--- a/include/VBox/vmm/pdmnetshaper.h
+++ b/include/VBox/vmm/pdmnetshaper.h
@@ -3,7 +3,7 @@
*/
/*
- * Copyright (C) 2011-2012 Oracle Corporation
+ * Copyright (C) 2011-2013 Oracle Corporation
*
* This file is part of VirtualBox Open Source Edition (OSE), as
* available from http://www.virtualbox.org. This file is free software;
@@ -33,84 +33,43 @@
#include <iprt/sg.h>
-#define PDM_NETSHAPER_MIN_BUCKET_SIZE 65536 /* bytes */
-#define PDM_NETSHAPER_MAX_LATENCY 100 /* milliseconds */
+/** @defgroup grp_pdm_net_shaper The PDM Network Shaper API
+ * @ingroup grp_pdm
+ * @{
+ */
+
+
+#define PDM_NETSHAPER_MIN_BUCKET_SIZE UINT32_C(65536) /**< bytes */
+#define PDM_NETSHAPER_MAX_LATENCY UINT32_C(100) /**< milliseconds */
RT_C_DECLS_BEGIN
typedef struct PDMNSFILTER
{
- /** [R3] Pointer to the next group in the list. */
- struct PDMNSFILTER *pNext;
- /** [R3] Pointer to the bandwidth group. */
- struct PDMNSBWGROUP *pBwGroupR3;
- /** [R0] Pointer to the bandwidth group. */
- R0PTRTYPE(struct PDMNSBWGROUP *) pBwGroupR0;
- /** Becomes true when filter fails to obtain bandwidth. */
- bool fChoked;
- /** [R3] The driver this filter is aggregated into. */
- PPDMINETWORKDOWN pIDrvNet;
+ /** Pointer to the next group in the list (ring-3). */
+ R3PTRTYPE(struct PDMNSFILTER *) pNextR3;
+ /** Pointer to the bandwidth group (ring-3). */
+ R3PTRTYPE(struct PDMNSBWGROUP *) pBwGroupR3;
+ /** Pointer to the bandwidth group (ring-0). */
+ R0PTRTYPE(struct PDMNSBWGROUP *) pBwGroupR0;
+ /** Set when the filter fails to obtain bandwidth. */
+ bool fChoked;
+ /** Aligment padding. */
+ bool afPadding[HC_ARCH_BITS == 32 ? 3 : 7];
+ /** The driver this filter is aggregated into (ring-3). */
+ R3PTRTYPE(PPDMINETWORKDOWN) pIDrvNetR3;
} PDMNSFILTER;
-/** @defgroup grp_pdm_net_shaper The PDM Network Shaper API
- * @ingroup grp_pdm
- * @{
- */
-
/** Pointer to a PDM filter handle. */
typedef struct PDMNSFILTER *PPDMNSFILTER;
/** Pointer to a network shaper. */
typedef struct PDMNETSHAPER *PPDMNETSHAPER;
-/**
- * Obtain bandwidth in a bandwidth group (R0 version).
- *
- * @returns VBox status code.
- * @param pFilter Pointer to the filter that allocates bandwidth.
- * @param cbTransfer Number of bytes to allocate.
- */
-VMMR0DECL(bool) PDMR0NsAllocateBandwidth(PPDMNSFILTER pFilter, size_t cbTransfer);
-
-/**
- * Obtain bandwidth in a bandwidth group.
- *
- * @returns VBox status code.
- * @param pFilter Pointer to the filter that allocates bandwidth.
- * @param cbTransfer Number of bytes to allocate.
- */
-VMMR3DECL(bool) PDMR3NsAllocateBandwidth(PPDMNSFILTER pFilter, size_t cbTransfer);
-
-/**
- * Attach network filter driver from bandwidth group.
- *
- * @returns VBox status code.
- * @param pVM Handle of VM.
- * @param pDrvIns The driver instance.
- * @param pcszBwGroup Name of the bandwidth group to attach to.
- * @param pFilter Pointer to the filter we attach.
- */
-VMMR3DECL(int) PDMR3NsAttach(PVM pVM, PPDMDRVINS pDrvIns, const char *pcszBwGroup, PPDMNSFILTER pFilter);
-
-/**
- * Detach network filter driver from bandwidth group.
- *
- * @returns VBox status code.
- * @param pVM Handle of VM.
- * @param pDrvIns The driver instance.
- * @param pFilter Pointer to the filter we detach.
- */
-VMMR3DECL(int) PDMR3NsDetach(PVM pVM, PPDMDRVINS pDrvIns, PPDMNSFILTER pFilter);
-
-/**
- * Adjusts the maximum rate for the bandwidth group.
- *
- * @returns VBox status code.
- * @param pVM Handle of VM.
- * @param pcszBwGroup Name of the bandwidth group to attach to.
- * @param cbTransferPerSecMax Maximum number of bytes per second to be transmitted.
- */
-VMMR3DECL(int) PDMR3NsBwGroupSetLimit(PVM pVM, const char *pcszBwGroup, uint64_t cbTransferPerSecMax);
+VMMDECL(bool) PDMNsAllocateBandwidth(PPDMNSFILTER pFilter, size_t cbTransfer);
+VMMR3_INT_DECL(int) PDMR3NsAttach(PUVM pUVM, PPDMDRVINS pDrvIns, const char *pcszBwGroup, PPDMNSFILTER pFilter);
+VMMR3_INT_DECL(int) PDMR3NsDetach(PUVM pUVM, PPDMDRVINS pDrvIns, PPDMNSFILTER pFilter);
+VMMR3DECL(int) PDMR3NsBwGroupSetLimit(PUVM pUVM, const char *pszBwGroup, uint64_t cbPerSecMax);
/** @} */