[host] removed deprecated MTMemcpy from the project

This commit is contained in:
Geoffrey McRae 2017-11-28 11:15:16 +11:00
parent 4a850f531c
commit 6c9269b64f
4 changed files with 0 additions and 160 deletions

View File

@ -1,97 +0,0 @@
/*
KVMGFX Client - A KVM Client for VGA Passthrough
Copyright (C) 2017 Geoffrey McRae <geoff@hostfission.com>
This program is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free Software
Foundation; either version 2 of the License, or (at your option) any later
version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with
this program; if not, write to the Free Software Foundation, Inc., 59 Temple
Place, Suite 330, Boston, MA 02111-1307 USA
*/
#include "MTMemcpy.h"
MTMemcpy::MTMemcpy() :
m_initialized(false)
{
}
MTMemcpy::~MTMemcpy()
{
DeInitialize();
}
DWORD WINAPI MTMemcpy::thread_copy_proc(LPVOID param)
{
mt_cpy_t * p = (mt_cpy_t *)param;
while (1)
{
WaitForSingleObject(p->s->hCopyStartSemaphores[p->ct], INFINITE);
memcpy(p->dest, p->src, p->size);
ReleaseSemaphore(p->s->hCopyStopSemaphores[p->ct], 1, NULL);
}
return 0;
}
bool MTMemcpy::Initialize()
{
if (m_initialized)
DeInitialize();
for (int ctr = 0; ctr < NUM_CPY_THREADS; ctr++)
{
hCopyStartSemaphores[ctr] = CreateSemaphore(NULL, 0, 1, NULL);
hCopyStopSemaphores[ctr] = CreateSemaphore(NULL, 0, 1, NULL);
mtParamters[ctr].s = this;
mtParamters[ctr].ct = ctr;
hCopyThreads[ctr] = CreateThread(0, 0, thread_copy_proc, &mtParamters[ctr], 0, NULL);
}
m_initialized = true;
return true;
}
bool MTMemcpy::Copy(void * dest, void * src, size_t bytes)
{
if (!m_initialized)
return false;
//set up parameters
for (int ctr = 0; ctr < NUM_CPY_THREADS; ctr++)
{
mtParamters[ctr].dest = (char *)dest + ctr * bytes / NUM_CPY_THREADS;
mtParamters[ctr].src = (char *)src + ctr * bytes / NUM_CPY_THREADS;
mtParamters[ctr].size = (ctr + 1) * bytes / NUM_CPY_THREADS - ctr * bytes / NUM_CPY_THREADS;
ReleaseSemaphore(hCopyStartSemaphores[ctr], 1, NULL);
}
//wait for all threads to finish
WaitForMultipleObjects(NUM_CPY_THREADS, hCopyStopSemaphores, TRUE, INFINITE);
return true;
}
void MTMemcpy::DeInitialize()
{
if (!m_initialized)
return;
for (int ctr = 0; ctr < NUM_CPY_THREADS; ctr++)
{
TerminateThread(hCopyThreads[ctr], 0);
CloseHandle(hCopyStartSemaphores[ctr]);
CloseHandle(hCopyStopSemaphores[ctr]);
}
m_initialized = false;
}

View File

@ -1,55 +0,0 @@
/*
KVMGFX Client - A KVM Client for VGA Passthrough
Copyright (C) 2017 Geoffrey McRae <geoff@hostfission.com>
This program is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free Software
Foundation; either version 2 of the License, or (at your option) any later
version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with
this program; if not, write to the Free Software Foundation, Inc., 59 Temple
Place, Suite 330, Boston, MA 02111-1307 USA
*/
#pragma once
#define W32_LEAN_AND_MEAN
#include <Windows.h>
#define NUM_CPY_THREADS 4
class MTMemcpy
{
public:
bool MTMemcpy::Initialize();
void MTMemcpy::DeInitialize();
bool MTMemcpy::Copy(void * dest, void * src, size_t bytes);
MTMemcpy();
~MTMemcpy();
private:
bool m_initialized;
static DWORD WINAPI MTMemcpy::thread_copy_proc(LPVOID param);
typedef struct
{
MTMemcpy * s;
int ct;
void * src;
void * dest;
size_t size;
}
mt_cpy_t;
HANDLE hCopyThreads[NUM_CPY_THREADS] = { 0 };
HANDLE hCopyStartSemaphores[NUM_CPY_THREADS] = { 0 };
HANDLE hCopyStopSemaphores[NUM_CPY_THREADS] = { 0 };
mt_cpy_t mtParamters[NUM_CPY_THREADS] = { 0 };
};

View File

@ -166,7 +166,6 @@
<ClCompile Include="CrashHandler.cpp" /> <ClCompile Include="CrashHandler.cpp" />
<ClCompile Include="ivshmem.cpp" /> <ClCompile Include="ivshmem.cpp" />
<ClCompile Include="main.cpp" /> <ClCompile Include="main.cpp" />
<ClCompile Include="MTMemcpy.cpp" />
<ClCompile Include="Service.cpp" /> <ClCompile Include="Service.cpp" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
@ -176,7 +175,6 @@
<ClInclude Include="CrashHandler.h" /> <ClInclude Include="CrashHandler.h" />
<ClInclude Include="ICapture.h" /> <ClInclude Include="ICapture.h" />
<ClInclude Include="ivshmem.h" /> <ClInclude Include="ivshmem.h" />
<ClInclude Include="MTMemcpy.h" />
<ClInclude Include="Service.h" /> <ClInclude Include="Service.h" />
<ClInclude Include="Util.h" /> <ClInclude Include="Util.h" />
</ItemGroup> </ItemGroup>

View File

@ -33,9 +33,6 @@
<ClCompile Include="Capture\NvFBC.cpp"> <ClCompile Include="Capture\NvFBC.cpp">
<Filter>Source Files\Capture</Filter> <Filter>Source Files\Capture</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="MTMemcpy.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="Capture\DXGI.cpp"> <ClCompile Include="Capture\DXGI.cpp">
<Filter>Source Files\Capture</Filter> <Filter>Source Files\Capture</Filter>
</ClCompile> </ClCompile>
@ -65,9 +62,6 @@
<ClInclude Include="Util.h"> <ClInclude Include="Util.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="MTMemcpy.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="Capture\DXGI.h"> <ClInclude Include="Capture\DXGI.h">
<Filter>Header Files\Capture</Filter> <Filter>Header Files\Capture</Filter>
</ClInclude> </ClInclude>