git-svn-id: svn://db.shs.com.ru/pip@492 12ceb7fc-bf1f-11e4-8940-5bc7170c53b5

This commit is contained in:
2017-05-02 12:40:56 +00:00
parent 08052ac9e2
commit 2bb1ab82a9
8 changed files with 162 additions and 117 deletions

View File

@@ -28,7 +28,17 @@
#ifdef WINDOWS
# include <winsock2.h>
extern FILETIME __pi_ftjan1970;
extern PINtQueryTimerResolution getTimerResolutionAddr;
extern PINtSetTimerResolution setTimerResolutionAddr;
void __PISetTimerResolution() {
if (setTimerResolutionAddr == NULL || getTimerResolutionAddr == NULL)
return;
ULONG max(0), min(0), cur(0);
getTimerResolutionAddr(&max, &min, &cur);
//printf("getTimerResolution %lu %lu %lu\n", min, max, cur);
setTimerResolutionAddr(min, TRUE, &cur);
//printf("setTimerResolution %lu\n", cur);
}
#else
# include <pwd.h>
# include <sys/utsname.h>
@@ -135,7 +145,11 @@ PIInit::PIInit() {
// Sleep precision init
PRIVATE->ntlib = LoadLibrary("ntdll.dll");
if (PRIVATE->ntlib) setTimerResolutionAddr = (PINtSetTimerResolution)GetProcAddress(PRIVATE->ntlib, "NtSetTimerResolution");
if (PRIVATE->ntlib) {
getTimerResolutionAddr = (PINtQueryTimerResolution)GetProcAddress(PRIVATE->ntlib, "NtQueryTimerResolution");
setTimerResolutionAddr = (PINtSetTimerResolution)GetProcAddress(PRIVATE->ntlib, "NtSetTimerResolution");
}
__PISetTimerResolution();
/*if (setTimerResolution) setTimerResolutionAddr(1, TRUE, &(PRIVATE->prev_res));*/
# endif
//piDebug = true;