we gottem????

This commit is contained in:
Hane 2023-07-25 20:21:08 +02:00
commit a4a35bd911
5 changed files with 47 additions and 20 deletions

View file

@ -1 +1,3 @@
clang++ -DDEBUG -shared src\tmrtsc.cpp -o build\libtmrtsc.dll -Wall -Wextra -Wpedantic -std=c++11 -g -gcodeview -Wl,-pdb= -L C:\capybara\libclang\x86_64-w64-mingw32\bin -l c++ -l unwind --verbose clang++ -DDEBUG -shared src\tmrtsc.cpp -o build\libtmrtsc.dll -Wall -Wextra -Wpedantic -std=c++11 -g -gcodeview -Wl,-pdb= -L C:\capybara\libclang\x86_64-w64-mingw32\bin -Wl,-Bstatic -l c++ -l unwind --verbose
REM -lmsvcrt -lucrtbase -lvcruntime140_app

View file

@ -1,3 +1,4 @@
clang++ src\test\test.cpp -o build\test.exe -Wall -Wextra -Wpedantic -std=c++11 -g -gcodeview -Wl,-pdb= -L C:\capybara\libclang\x86_64-w64-mingw32\bin -l c++ -l unwind -L D:\Contenido\Capybara\Cositas\tmr\build -l tmrtsc --verbose clang++ -DDEBUG -dynamic src\test\test.cpp -o build\test.exe -Wall -Wextra -Wpedantic -std=c++11 -g -gcodeview -Wl,-pdb= -L C:\capybara\libclang\x86_64-w64-mingw32\bin -L D:\Contenido\Capybara\Cositas\tmr\build -Wl,-Bstatic -l c++ -l unwind -Wl,-Bdynamic -l tmrtsc --verbose
REM -fms-runtime-lib dll_dbg REM -fms-runtime-lib dll_dbgx
REM -lmsvcrt -lucrtbase -lvcruntime140_app

View file

@ -1,7 +1,15 @@
#ifdef _WIN64 #ifdef _WIN64
#define UNICODE #define UNICODE
#define WIN32_LEAN_AND_MEAN #define WIN32_LEAN_AND_MEAN
//#define DllImport __declspec( dllimport ) #define DllImport __declspec( dllimport )
#define _DEBUG
#define _MT
#define _DLL
/*
* #define _MT
* #define _DLL
* #define _DEBUG
*/
#include <Windows.h> #include <Windows.h>
#include <libloaderapi.h> #include <libloaderapi.h>
#endif #endif
@ -15,22 +23,27 @@ using namespace tmr;
int main(int argc, char** argv){ int main(int argc, char** argv){
HMODULE dell; HMODULE dell;
DWORD fracaso; DWORD fracaso;
//DllImport TSCTimer* timer;
int sleep = 1000; int sleep = 1000;
dell = LoadLibraryExW(TEXT("libtmrtsc.dll"), NULL, NULL); /*
if (dell == NULL) { * dell = LoadLibraryExW(TEXT("libtmrtsc.dll"), NULL, NULL);
fracaso = GetLastError(); * if (dell == NULL) {
return -1; * fracaso = GetLastError();
} * return -1;
* }
*/
TSCTimer* timer = nullptr; TSCTimer* timer = nullptr;
fracaso = TSCTimer::getTimer(timer); timer = TSCTimer::getTimer();
if(fracaso != OPERATION_SUCCESSFUL) if(timer == nullptr)
return -2; return -2;
uint64_t t1 = timer->getTimeStamp(); uint64_t t1 = timer->getTimeStamp();
Sleep(sleep); Sleep(sleep);
uint64_t t2 = timer->getTimeStamp(); uint64_t t2 = timer->getTimeStamp();
uint64_t fr = timer->getBaseFrequency(); uint64_t fr = timer->getBaseFrequency();
std::cout << "Windows Momento: \nt1: " << t1 << " t2: " << " fr: " << fr << std::endl; std::cout << "Siestecita de: " << sleep << " ms" << std::endl;
std::cout << "Windows Momento: \nt1: " << t1 << " t2: " << t2 << " fr: " << fr << std::endl;
std::cout << "restita: " << t2-t1 << std::endl;
return 0; return 0;
} }

View file

@ -1,3 +1,4 @@
//TODO juntar heaps?
#include "tmrtsc.hpp" #include "tmrtsc.hpp"
#if _WIN64 #if _WIN64
@ -166,25 +167,26 @@ namespace tmr {
return (rdxho << 32) + raxlo; //| return (rdxho << 32) + raxlo; //|
} }
int TSCTimer::getTimer(TSCTimer* timer) { TSCTimer* TSCTimer::getTimer() {
if (!checkInvariantTSC()) return INVARIANT_TSC_NOT_SUPPORTED; if (!checkInvariantTSC()) return nullptr;
//TODO debug dis //TODO debug dis
const char vendorNames[2][13] = { const char vendorNames[2][13] = {
{"AuthenticAMD"}, {"AuthenticAMD"},
{"GenuineIntel"} {"GenuineIntel"}
}; };
char* vendorName = readVendorName(); char* vendorName = readVendorName();
int64_t baseFreq; int64_t baseFreq = ART_NOT_REPORTED;
if (strcmp(vendorName, vendorNames[1])) if (strcmp(vendorName, vendorNames[1]) == 0)
baseFreq = intelRetrieveART(); baseFreq = intelRetrieveART();
if (baseFreq == ART_NOT_REPORTED) if (baseFreq == ART_NOT_REPORTED)
baseFreq = getFreqFromSystem(); baseFreq = getFreqFromSystem();
if (baseFreq < OPERATION_SUCCESSFUL) if (baseFreq < OPERATION_SUCCESSFUL)
return CANT_READ_FREQUENCY_FROM_SYSTEM; return nullptr;
timer = new TSCTimer(vendorName, baseFreq); //timer =
return OPERATION_SUCCESSFUL; return new TSCTimer(vendorName, baseFreq);
//return OPERATION_SUCCESSFUL;
} }
uint64_t TSCTimer::getTimeStamp(){ uint64_t TSCTimer::getTimeStamp(){

View file

@ -8,6 +8,14 @@
#define _WIN32_WINNT _WIN32_WINNT_WIN10 //0x0A00 #define _WIN32_WINNT _WIN32_WINNT_WIN10 //0x0A00
#define MAX_KEY_LENGTH 255 #define MAX_KEY_LENGTH 255
#define MAX_VALUE_NAME 32767 #define MAX_VALUE_NAME 32767
#define _DEBUG
#define _MT
#define _DLL
/*
* #define _MT
* #define _DLL
* #define _DEBUG
*/
#include <Windows.h> #include <Windows.h>
#include <winreg.h> #include <winreg.h>
#include <stringapiset.h> #include <stringapiset.h>
@ -77,7 +85,8 @@ namespace tmr {
uint64_t readRDTSCP(uint64_t* logicore = nullptr ); uint64_t readRDTSCP(uint64_t* logicore = nullptr );
public: public:
static int getTimer(TSCTimer* timer = nullptr); // static int getTimer(TSCTimer* timer = nullptr);
static TSCTimer* getTimer();
uint64_t getTimeStamp(); uint64_t getTimeStamp();