[ovs-dev] [PATCH v7 1/6] datapath-windows: Percpu allocation support function

Sorin Vinturis svinturis at cloudbasesolutions.com
Thu Mar 24 16:53:49 UTC 2016


Signed-off-by: Sorin Vinturis <svinturis at cloudbasesolutions.com>
Co-authored-by: Alin Gabriel Serdean <aserdean at cloudbasesolutions.com>
Acked-by: Nithin Raju <nithin at vmware.com>
---
 datapath-windows/ovsext/Util.c | 16 ++++++++++++++++
 datapath-windows/ovsext/Util.h |  1 +
 2 files changed, 17 insertions(+)

diff --git a/datapath-windows/ovsext/Util.c b/datapath-windows/ovsext/Util.c
index 65dd132..14c4493 100644
--- a/datapath-windows/ovsext/Util.c
+++ b/datapath-windows/ovsext/Util.c
@@ -116,3 +116,19 @@ OvsCompareString(PVOID string1, PVOID string2)
     RtlInitString(&str2, string2);
     return RtlEqualString(&str1, &str2, FALSE);
 }
+
+VOID *
+OvsAllocateMemoryPerCpu(size_t size, ULONG tag)
+{
+    VOID *ptr = NULL;
+    ULONG count = KeQueryActiveProcessorCountEx(ALL_PROCESSOR_GROUPS);
+
+    ASSERT(KeQueryActiveGroupCount() == 1);
+
+    ptr = OvsAllocateMemoryWithTag(count * size, tag);
+    if (ptr) {
+        RtlZeroMemory(ptr, count * size);
+    }
+
+    return ptr;
+}
diff --git a/datapath-windows/ovsext/Util.h b/datapath-windows/ovsext/Util.h
index a81c723..b2ec798 100644
--- a/datapath-windows/ovsext/Util.h
+++ b/datapath-windows/ovsext/Util.h
@@ -40,6 +40,7 @@
 VOID *OvsAllocateMemory(size_t size);
 VOID *OvsAllocateMemoryWithTag(size_t size, ULONG tag);
 VOID *OvsAllocateAlignedMemory(size_t size, UINT16 align);
+VOID *OvsAllocateMemoryPerCpu(size_t size, ULONG tag);
 VOID OvsFreeMemory(VOID *ptr);
 VOID OvsFreeMemoryWithTag(VOID *ptr, ULONG tag);
 VOID OvsFreeAlignedMemory(VOID *ptr);
-- 
1.9.0.msysgit.0



More information about the dev mailing list