[42062] | 1 | /* $Id: PDMNetShaperInternal.h 76553 2019-01-01 01:45:53Z vboxsync $ */
|
---|
| 2 | /** @file
|
---|
[44355] | 3 | * PDM Network Shaper - Internal data structures and functions common for both R0 and R3 parts.
|
---|
[42062] | 4 | */
|
---|
| 5 |
|
---|
| 6 | /*
|
---|
[76553] | 7 | * Copyright (C) 2011-2019 Oracle Corporation
|
---|
[42062] | 8 | *
|
---|
| 9 | * This file is part of VirtualBox Open Source Edition (OSE), as
|
---|
| 10 | * available from http://www.virtualbox.org. This file is free software;
|
---|
| 11 | * you can redistribute it and/or modify it under the terms of the GNU
|
---|
| 12 | * General Public License (GPL) as published by the Free Software
|
---|
| 13 | * Foundation, in version 2 as it comes in the "COPYING" file of the
|
---|
| 14 | * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
|
---|
| 15 | * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
|
---|
| 16 | */
|
---|
| 17 |
|
---|
[76543] | 18 | #ifndef VBOX_INCLUDED_PDMNetShaperInternal_h
|
---|
| 19 | #define VBOX_INCLUDED_PDMNetShaperInternal_h
|
---|
| 20 | #ifndef RT_WITHOUT_PRAGMA_ONCE
|
---|
| 21 | # pragma once
|
---|
| 22 | #endif
|
---|
| 23 |
|
---|
[42062] | 24 | /**
|
---|
| 25 | * Bandwidth group instance data
|
---|
| 26 | */
|
---|
| 27 | typedef struct PDMNSBWGROUP
|
---|
| 28 | {
|
---|
| 29 | /** Pointer to the next group in the list. */
|
---|
[44355] | 30 | R3PTRTYPE(struct PDMNSBWGROUP *) pNextR3;
|
---|
[42062] | 31 | /** Pointer to the shared UVM structure. */
|
---|
[44355] | 32 | R3PTRTYPE(struct PDMNETSHAPER *) pShaperR3;
|
---|
[42062] | 33 | /** Critical section protecting all members below. */
|
---|
[44355] | 34 | PDMCRITSECT Lock;
|
---|
[42062] | 35 | /** Pointer to the first filter attached to this group. */
|
---|
[44355] | 36 | R3PTRTYPE(struct PDMNSFILTER *) pFiltersHeadR3;
|
---|
[42062] | 37 | /** Bandwidth group name. */
|
---|
[44355] | 38 | R3PTRTYPE(char *) pszNameR3;
|
---|
[42062] | 39 | /** Maximum number of bytes filters are allowed to transfer. */
|
---|
[44355] | 40 | volatile uint64_t cbPerSecMax;
|
---|
[42062] | 41 | /** Number of bytes we are allowed to transfer in one burst. */
|
---|
[44355] | 42 | volatile uint32_t cbBucket;
|
---|
[42062] | 43 | /** Number of bytes we were allowed to transfer at the last update. */
|
---|
| 44 | volatile uint32_t cbTokensLast;
|
---|
| 45 | /** Timestamp of the last update */
|
---|
| 46 | volatile uint64_t tsUpdatedLast;
|
---|
| 47 | /** Reference counter - How many filters are associated with this group. */
|
---|
| 48 | volatile uint32_t cRefs;
|
---|
| 49 | } PDMNSBWGROUP;
|
---|
| 50 | /** Pointer to a bandwidth group. */
|
---|
| 51 | typedef PDMNSBWGROUP *PPDMNSBWGROUP;
|
---|
| 52 |
|
---|
[76543] | 53 | #endif
|
---|
| 54 |
|
---|