diff options
Diffstat (limited to 'include/VBox/vmm/pdmnetshaper.h')
-rw-r--r-- | include/VBox/vmm/pdmnetshaper.h | 91 |
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); /** @} */ |