changeset 170:642cec0d33f5 draft

Laszlo's fix to make generate threads idle priority on Linux, replaced some wxBase dependencies: wxMutex, wxFileExists, wxStandardPaths, wxGetLocalTimeMillis
author s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
date Thu, 08 Jul 2010 16:14:56 +0000
parents 026b492731f9
children eb1b88111663
files headers.h init.cpp locale/de/LC_MESSAGES/bitcoin.mo locale/de/LC_MESSAGES/bitcoin.po locale/it/LC_MESSAGES/bitcoin.mo locale/it/LC_MESSAGES/bitcoin.po locale/nl/LC_MESSAGES/bitcoin.mo locale/nl/LC_MESSAGES/bitcoin.po main.cpp makefile.unix rpc.cpp serialize.h uibase.cpp uibase.h uiproject.fbp util.cpp util.h
diffstat 17 files changed, 167 insertions(+), 101 deletions(-) [+]
line wrap: on
line diff
--- a/headers.h
+++ b/headers.h
@@ -59,6 +59,10 @@
 #include <boost/function.hpp>
 #include <boost/filesystem.hpp>
 #include <boost/algorithm/string.hpp>
+#include <boost/interprocess/sync/interprocess_mutex.hpp>
+#include <boost/interprocess/sync/interprocess_recursive_mutex.hpp>
+#include <boost/date_time/gregorian/gregorian_types.hpp>
+#include <boost/date_time/posix_time/posix_time_types.hpp>
 
 #ifdef __WXMSW__
 #include <windows.h>
--- a/init.cpp
+++ b/init.cpp
@@ -4,6 +4,8 @@
 
 #include "headers.h"
 
+extern string GetDefaultDataDir(); /// todo: delete this later, just used by debug test
+
 
 
 
@@ -59,40 +61,6 @@
 //
 
 #ifdef __WXMSW__
-typedef WINSHELLAPI BOOL (WINAPI *PSHGETSPECIALFOLDERPATHA)(HWND hwndOwner, LPSTR lpszPath, int nFolder, BOOL fCreate);
-
-string MyGetSpecialFolderPath(int nFolder, bool fCreate)
-{
-    char pszPath[MAX_PATH+100] = "";
-
-    // SHGetSpecialFolderPath is not usually available on NT 4.0
-    HMODULE hShell32 = LoadLibraryA("shell32.dll");
-    if (hShell32)
-    {
-        PSHGETSPECIALFOLDERPATHA pSHGetSpecialFolderPath =
-            (PSHGETSPECIALFOLDERPATHA)GetProcAddress(hShell32, "SHGetSpecialFolderPathA");
-        if (pSHGetSpecialFolderPath)
-            (*pSHGetSpecialFolderPath)(NULL, pszPath, nFolder, fCreate);
-        FreeModule(hShell32);
-    }
-
-    // Backup option
-    if (pszPath[0] == '\0')
-    {
-        if (nFolder == CSIDL_STARTUP)
-        {
-            strcpy(pszPath, getenv("USERPROFILE"));
-            strcat(pszPath, "\\Start Menu\\Programs\\Startup");
-        }
-        else if (nFolder == CSIDL_APPDATA)
-        {
-            strcpy(pszPath, getenv("APPDATA"));
-        }
-    }
-
-    return pszPath;
-}
-
 string StartupShortcutPath()
 {
     return MyGetSpecialFolderPath(CSIDL_STARTUP, true) + "\\Bitcoin.lnk";
@@ -100,7 +68,7 @@
 
 bool GetStartOnSystemStartup()
 {
-    return wxFileExists(StartupShortcutPath());
+    return filesystem::exists(StartupShortcutPath().c_str());
 }
 
 void SetStartOnSystemStartup(bool fAutoStart)
@@ -166,7 +134,7 @@
 //
 
 // Define a new application
-class CMyApp: public wxApp
+class CMyApp : public wxApp
 {
 public:
     wxLocale m_locale;
@@ -216,7 +184,10 @@
             #ifdef __WXMSW__
             if (str.size() >= 1 && str[0] == '/')
                 str[0] = '-';
-            str = str.MakeLower();
+            char pszLower[MAX_PATH];
+            strlcpy(pszLower, str.c_str(), sizeof(pszLower));
+            strlwr(pszLower);
+            str = pszLower;
             #endif
             // haven't decided which argument to use for this yet
             if (str == "-daemon" || str == "-d" || str == "start")
@@ -356,18 +327,14 @@
             "  -daemon         \t  " + _("Run in the background as a daemon and accept commands\n") +
             "  -?              \t  " + _("This help message\n");
 
-
-        if (fWindows && fGUI)
-        {
-            // Tabs make the columns line up in the message box
-            wxMessageBox(strUsage, "Bitcoin", wxOK);
-        }
-        else
-        {
-            // Remove tabs
-            strUsage.Replace("\t", "");
-            fprintf(stderr, "%s", ((string)strUsage).c_str());
-        }
+#if defined(__WXMSW__) && wxUSE_GUI
+        // Tabs make the columns line up in the message box
+        wxMessageBox(strUsage, "Bitcoin", wxOK);
+#else
+        // Remove tabs
+        strUsage.Replace("\t", "");
+        fprintf(stderr, "%s", ((string)strUsage).c_str());
+#endif
         return false;
     }
 
@@ -387,6 +354,15 @@
     printf("System default language is %d %s\n", m_locale.GetSystemLanguage(), ((string)m_locale.GetSysName()).c_str());
     printf("Language file %s (%s)\n", (string("locale/") + (string)m_locale.GetCanonicalName() + "/LC_MESSAGES/bitcoin.mo").c_str(), ((string)m_locale.GetLocale()).c_str());
 
+        /// debug - for now, just watching if these match
+        if (pszSetDataDir[0] == 0)
+        {
+            if (GetDefaultDataDir() != GetDataDir())
+                printf("**** GetDefaultDataDir() %s != %s\n", GetDefaultDataDir().c_str(), GetDataDir().c_str());
+            else
+                printf("OK GetDefaultDataDir() %s == %s\n", GetDefaultDataDir().c_str(), GetDataDir().c_str());
+        }
+
     if (mapArgs.count("-loadblockindextest"))
     {
         CTxDB txdb("r");
index e6c860eec597e780de408131cc2daa60aa144217..d53b22f7b132668a15441870a5b84999063ad360
GIT binary patch
literal 16092
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
--- a/locale/de/LC_MESSAGES/bitcoin.po
+++ b/locale/de/LC_MESSAGES/bitcoin.po
@@ -692,6 +692,8 @@
 msgid ""
 "Copyright (c) 2009-2010 Satoshi Nakamoto.\n"
 "\n"
+"This is experimental software.\n"
+"\n"
 "Distributed under the MIT/X11 software license, see the accompanying file \n"
 "license.txt or http://www.opensource.org/licenses/mit-license.php.\n"
 "\n"
@@ -701,6 +703,8 @@
 msgstr ""
 "Copyright (c) 2009-2010 Satoshi Nakamoto.\n"
 "\n"
+"Dies ist experimentelle Software.\n"
+"\n"
 "Lizensiert unter der MIT/X11 Software-Lizenz. Beachten Sie die beiliegende\n"
 "Datei license.txt oder http://www.opensource.org/licenses/mit-license.php.\n"
 "\n"
index b3160d13582a1ad63a75cb746f42f09619ee2d0d..dc7b94edfafb3cb0b74c8760a21d544c688c92c5
GIT binary patch
literal 15616
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
ae)^&##RnB%xXTYkO!qBC=MVi~RsI*w^@s5Q
--- a/locale/it/LC_MESSAGES/bitcoin.po
+++ b/locale/it/LC_MESSAGES/bitcoin.po
@@ -690,6 +690,8 @@
 msgid ""
 "Copyright (c) 2009-2010 Satoshi Nakamoto.\n"
 "\n"
+"This is experimental software.\n"
+"\n"
 "Distributed under the MIT/X11 software license, see the accompanying file \n"
 "license.txt or http://www.opensource.org/licenses/mit-license.php.\n"
 "\n"
@@ -699,6 +701,8 @@
 msgstr ""
 "Copyright (c) 2009-2010 Satoshi Nakamoto.\n"
 "\n"
+"Questo รจ un software sperimentale.\n"
+"\n"
 "Distribuito sotto la licenza software MIT/X11, guarda il file license.txt\n"
 "incluso oppure su http://www.opensource.org/licenses/mit-license.php.\n"
 "\n"
index 79f5c83ac2f5ca56387b0c497ae9656cb83ef69c..380eafe929d9182657d220a3d9d4c580a5a28e6c
GIT binary patch
literal 14923
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
R_U@D01UK!K1--5N{{z^miB<pr
--- a/locale/nl/LC_MESSAGES/bitcoin.po
+++ b/locale/nl/LC_MESSAGES/bitcoin.po
@@ -691,6 +691,8 @@
 msgid ""
 "Copyright (c) 2009-2010 Satoshi Nakamoto.\n"
 "\n"
+"This is experimental software.\n"
+"\n"
 "Distributed under the MIT/X11 software license, see the accompanying file \n"
 "license.txt or http://www.opensource.org/licenses/mit-license.php.\n"
 "\n"
@@ -700,6 +702,8 @@
 msgstr ""
 "Copyright (c) 2009-2010 Satoshi Nakamoto.\n"
 "\n"
+"Dit is experimentele software.\n"
+"\n"
 "Gedistributeerd onder de MIT/X11 software licentie, see het bijbehorende bestand \n"
 "license.txt of http://www.opensource.org/licenses/mit-license.php.\n"
 "\n"
--- a/main.cpp
+++ b/main.cpp
@@ -1477,7 +1477,10 @@
     if (nFreeBytesAvailable < (int64)15000000 + nAdditionalBytes)
     {
         fShutdown = true;
+        printf("***  %s***\n", _("Warning: Disk space is low  "));
+#if wxUSE_GUI
         ThreadSafeMessageBox(_("Warning: Disk space is low  "), "Bitcoin", wxOK | wxICON_EXCLAMATION);
+#endif
         CreateThread(Shutdown, NULL);
         return false;
     }
@@ -2713,25 +2716,32 @@
             if ((++tmp.block.nNonce & nMask) == 0)
             {
                 // Meter hashes/sec
-                static int64 nHashCounter;
-                static int64 nLastTick;
-                if (nLastTick == 0)
-                    nLastTick = GetTimeMillis();
+                static int64 nTimerStart;
+                static int nHashCounter;
+                if (nTimerStart == 0)
+                    nTimerStart = GetTimeMillis();
                 else
-                    nHashCounter += nMask + 1;
-                if (GetTimeMillis() - nLastTick > 4000)
+                    nHashCounter++;
+                if (GetTimeMillis() - nTimerStart > 4000)
                 {
-                    double dHashesPerSec = 1000.0 * nHashCounter / (GetTimeMillis() - nLastTick);
-                    nLastTick = GetTimeMillis();
-                    nHashCounter = 0;
-                    string strStatus = strprintf("    %.0f khash/s", dHashesPerSec/1000.0);
-                    UIThreadCall(bind(CalledSetStatusBar, strStatus, 0));
-                    static int64 nLogTime;
-                    if (GetTime() - nLogTime > 30 * 60)
+                    static CCriticalSection cs;
+                    CRITICAL_BLOCK(cs)
                     {
-                        nLogTime = GetTime();
-                        printf("%s ", DateTimeStrFormat("%x %H:%M", GetTime()).c_str());
-                        printf("hashmeter %3d CPUs %6.0f khash/s\n", vnThreadsRunning[3], dHashesPerSec/1000.0);
+                        if (GetTimeMillis() - nTimerStart > 4000)
+                        {
+                            double dHashesPerSec = 1000.0 * (nMask+1) * nHashCounter / (GetTimeMillis() - nTimerStart);
+                            nTimerStart = GetTimeMillis();
+                            nHashCounter = 0;
+                            string strStatus = strprintf("    %.0f khash/s", dHashesPerSec/1000.0);
+                            UIThreadCall(bind(CalledSetStatusBar, strStatus, 0));
+                            static int64 nLogTime;
+                            if (GetTime() - nLogTime > 30 * 60)
+                            {
+                                nLogTime = GetTime();
+                                printf("%s ", DateTimeStrFormat("%x %H:%M", GetTime()).c_str());
+                                printf("hashmeter %3d CPUs %6.0f khash/s\n", vnThreadsRunning[3], dHashesPerSec/1000.0);
+                            }
+                        }
                     }
                 }
 
--- a/makefile.unix
+++ b/makefile.unix
@@ -68,6 +68,6 @@
 
 
 clean:
-	-rm obj/*.o
-	-rm obj/nogui/*.o
-	-rm headers.h.gch
+	-rm -f obj/*.o
+	-rm -f obj/nogui/*.o
+	-rm -f headers.h.gch
--- a/rpc.cpp
+++ b/rpc.cpp
@@ -927,20 +927,22 @@
         string strResult = (result.type() == str_type ? result.get_str() : write_string(result, true));
         if (result.type() != null_type)
         {
-            if (fWindows && fGUI)
-                // Windows GUI apps can't print to command line,
-                // so settle for a message box yuck
-                MyMessageBox(strResult.c_str(), "Bitcoin", wxOK);
-            else
-                fprintf(stdout, "%s\n", strResult.c_str());
+#if defined(__WXMSW__) && wxUSE_GUI
+            // Windows GUI apps can't print to command line,
+            // so settle for a message box yuck
+            MyMessageBox(strResult.c_str(), "Bitcoin", wxOK);
+#else
+            fprintf(stdout, "%s\n", strResult.c_str());
+#endif
         }
         return 0;
     }
     catch (std::exception& e) {
-        if (fWindows && fGUI)
-            MyMessageBox(strprintf("error: %s\n", e.what()).c_str(), "Bitcoin", wxOK);
-        else
-            fprintf(stderr, "error: %s\n", e.what());
+#if defined(__WXMSW__) && wxUSE_GUI
+        MyMessageBox(strprintf("error: %s\n", e.what()).c_str(), "Bitcoin", wxOK);
+#else
+        fprintf(stderr, "error: %s\n", e.what());
+#endif
     } catch (...) {
         PrintException(NULL, "CommandLineRPC()");
     }
--- a/serialize.h
+++ b/serialize.h
@@ -20,7 +20,7 @@
 class CAutoFile;
 
 static const int VERSION = 300;
-static const char* pszSubVer = "";
+static const char* pszSubVer = ".1";
 
 
 
--- a/uibase.cpp
+++ b/uibase.cpp
@@ -554,7 +554,7 @@
 	
 	bSizer631->Add( 0, 4, 0, wxEXPAND, 5 );
 	
-	m_staticTextMain = new wxStaticText( this, wxID_ANY, _("Copyright (c) 2009-2010 Satoshi Nakamoto.\n\nDistributed under the MIT/X11 software license, see the accompanying file \nlicense.txt or http://www.opensource.org/licenses/mit-license.php.\n\nThis product includes software developed by the OpenSSL Project for use in the \nOpenSSL Toolkit (http://www.openssl.org/) and cryptographic software written by \nEric Young (eay@cryptsoft.com)."), wxDefaultPosition, wxDefaultSize, 0 );
+	m_staticTextMain = new wxStaticText( this, wxID_ANY, _("Copyright (c) 2009-2010 Satoshi Nakamoto.\n\nThis is experimental software.\n\nDistributed under the MIT/X11 software license, see the accompanying file \nlicense.txt or http://www.opensource.org/licenses/mit-license.php.\n\nThis product includes software developed by the OpenSSL Project for use in the \nOpenSSL Toolkit (http://www.openssl.org/) and cryptographic software written by \nEric Young (eay@cryptsoft.com)."), wxDefaultPosition, wxDefaultSize, 0 );
 	m_staticTextMain->Wrap( -1 );
 	bSizer631->Add( m_staticTextMain, 0, wxALL, 5 );
 	
--- a/uibase.h
+++ b/uibase.h
@@ -227,7 +227,7 @@
 	
 	public:
 		wxStaticText* m_staticTextVersion;
-		CAboutDialogBase( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("About Bitcoin"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 532,315 ), long style = wxDEFAULT_DIALOG_STYLE );
+		CAboutDialogBase( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("About Bitcoin"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 532,329 ), long style = wxDEFAULT_DIALOG_STYLE );
 		~CAboutDialogBase();
 	
 };
--- a/uiproject.fbp
+++ b/uiproject.fbp
@@ -2866,7 +2866,7 @@
             <property name="minimum_size"></property>
             <property name="name">CAboutDialogBase</property>
             <property name="pos"></property>
-            <property name="size">532,315</property>
+            <property name="size">532,329</property>
             <property name="style">wxDEFAULT_DIALOG_STYLE</property>
             <property name="subclass"></property>
             <property name="title">About Bitcoin</property>
@@ -3130,7 +3130,7 @@
                                                 <property name="font"></property>
                                                 <property name="hidden">0</property>
                                                 <property name="id">wxID_ANY</property>
-                                                <property name="label">Copyright (c) 2009-2010 Satoshi Nakamoto.&#x0A;&#x0A;Distributed under the MIT/X11 software license, see the accompanying file &#x0A;license.txt or http://www.opensource.org/licenses/mit-license.php.&#x0A;&#x0A;This product includes software developed by the OpenSSL Project for use in the &#x0A;OpenSSL Toolkit (http://www.openssl.org/) and cryptographic software written by &#x0A;Eric Young (eay@cryptsoft.com).</property>
+                                                <property name="label">Copyright (c) 2009-2010 Satoshi Nakamoto.&#x0A;&#x0A;This is experimental software.&#x0A;&#x0A;Distributed under the MIT/X11 software license, see the accompanying file &#x0A;license.txt or http://www.opensource.org/licenses/mit-license.php.&#x0A;&#x0A;This product includes software developed by the OpenSSL Project for use in the &#x0A;OpenSSL Toolkit (http://www.openssl.org/) and cryptographic software written by &#x0A;Eric Young (eay@cryptsoft.com).</property>
                                                 <property name="maximum_size"></property>
                                                 <property name="minimum_size"></property>
                                                 <property name="name">m_staticTextMain</property>
--- a/util.cpp
+++ b/util.cpp
@@ -20,13 +20,13 @@
 
 
 // Init openssl library multithreading support
-static wxMutex** ppmutexOpenSSL;
+static boost::interprocess::interprocess_mutex** ppmutexOpenSSL;
 void locking_callback(int mode, int i, const char* file, int line)
 {
     if (mode & CRYPTO_LOCK)
-        ppmutexOpenSSL[i]->Lock();
+        ppmutexOpenSSL[i]->lock();
     else
-        ppmutexOpenSSL[i]->Unlock();
+        ppmutexOpenSSL[i]->unlock();
 }
 
 // Init
@@ -36,9 +36,9 @@
     CInit()
     {
         // Init openssl library multithreading support
-        ppmutexOpenSSL = (wxMutex**)OPENSSL_malloc(CRYPTO_num_locks() * sizeof(wxMutex*));
+        ppmutexOpenSSL = (boost::interprocess::interprocess_mutex**)OPENSSL_malloc(CRYPTO_num_locks() * sizeof(boost::interprocess::interprocess_mutex*));
         for (int i = 0; i < CRYPTO_num_locks(); i++)
-            ppmutexOpenSSL[i] = new wxMutex();
+            ppmutexOpenSSL[i] = new boost::interprocess::interprocess_mutex();
         CRYPTO_set_locking_callback(locking_callback);
 
 #ifdef __WXMSW__
@@ -152,7 +152,7 @@
         if (fileout)
         {
             //// Debug print useful for profiling
-            //fprintf(fileout, " %"PRI64d" ", wxGetLocalTimeMillis().GetValue());
+            //fprintf(fileout, " %"PRI64d" ", GetTimeMillis());
             va_list arg_ptr;
             va_start(arg_ptr, pszFormat);
             ret = vfprintf(fileout, pszFormat, arg_ptr);
@@ -521,6 +521,69 @@
 
 
 
+#ifdef __WXMSW__
+typedef WINSHELLAPI BOOL (WINAPI *PSHGETSPECIALFOLDERPATHA)(HWND hwndOwner, LPSTR lpszPath, int nFolder, BOOL fCreate);
+
+string MyGetSpecialFolderPath(int nFolder, bool fCreate)
+{
+    char pszPath[MAX_PATH+100] = "";
+
+    // SHGetSpecialFolderPath isn't always available on old Windows versions
+    HMODULE hShell32 = LoadLibraryA("shell32.dll");
+    if (hShell32)
+    {
+        PSHGETSPECIALFOLDERPATHA pSHGetSpecialFolderPath =
+            (PSHGETSPECIALFOLDERPATHA)GetProcAddress(hShell32, "SHGetSpecialFolderPathA");
+        if (pSHGetSpecialFolderPath)
+            (*pSHGetSpecialFolderPath)(NULL, pszPath, nFolder, fCreate);
+        FreeModule(hShell32);
+    }
+
+    // Backup option
+    if (pszPath[0] == '\0')
+    {
+        if (nFolder == CSIDL_STARTUP)
+        {
+            strcpy(pszPath, getenv("USERPROFILE"));
+            strcat(pszPath, "\\Start Menu\\Programs\\Startup");
+        }
+        else if (nFolder == CSIDL_APPDATA)
+        {
+            strcpy(pszPath, getenv("APPDATA"));
+        }
+    }
+
+    return pszPath;
+}
+#endif
+
+string GetDefaultDataDir()
+{
+    // Windows: C:\Documents and Settings\username\Application Data\Appname
+    // Mac: ~/Library/Application Support/Appname
+    // Unix: ~/.appname
+#ifdef __WXMSW__
+    // Windows
+    return MyGetSpecialFolderPath(CSIDL_APPDATA, true) + "\\Bitcoin";
+#else
+    char* pszHome = getenv("HOME");
+    if (pszHome == NULL || strlen(pszHome) == 0)
+        pszHome = (char*)"/";
+    string strHome = pszHome;
+    if (strHome[strHome.size()-1] != '/')
+        strHome += '/';
+#ifdef __WXOSX__
+    // Mac
+    strHome += "Library/Application Support/";
+    _mkdir(strHome.c_str());
+    return strHome + "Bitcoin";
+#else
+    // Unix
+    return strHome + ".bitcoin";
+#endif
+#endif
+}
+
 void GetDataDir(char* pszDir)
 {
     // pszDir must be at least MAX_PATH length.
@@ -538,11 +601,6 @@
     {
         // This can be called during exceptions by printf, so we cache the
         // value so we don't have to do memory allocations after that.
-        // wxStandardPaths::GetUserDataDir
-        //  Return the directory for the user-dependent application data files:
-        //  Unix: ~/.appname
-        //  Windows: C:\Documents and Settings\username\Application Data\appname
-        //  Mac: ~/Library/Application Support/appname
         static char pszCachedDir[MAX_PATH];
         if (pszCachedDir[0] == 0)
         {
--- a/util.h
+++ b/util.h
@@ -141,6 +141,9 @@
 const char* wxGetTranslation(const char* psz);
 int GetFilesize(FILE* file);
 void GetDataDir(char* pszDirRet);
+#ifdef __WXMSW__
+string MyGetSpecialFolderPath(int nFolder, bool fCreate);
+#endif
 string GetDataDir();
 void ShrinkDebugFile();
 uint64 GetRand(uint64 nMax);
@@ -174,13 +177,13 @@
     bool TryEnter() { return TryEnterCriticalSection(&cs); }
 #else
 protected:
-    wxMutex mutex;
+    boost::interprocess::interprocess_recursive_mutex mutex;
 public:
-    explicit CCriticalSection() : mutex(wxMUTEX_RECURSIVE) { }
+    explicit CCriticalSection() { }
     ~CCriticalSection() { }
-    void Enter() { mutex.Lock(); }
-    void Leave() { mutex.Unlock(); }
-    bool TryEnter() { return mutex.TryLock() == wxMUTEX_NO_ERROR; }
+    void Enter() { mutex.lock(); }
+    void Leave() { mutex.unlock(); }
+    bool TryEnter() { return mutex.try_lock(); }
 #endif
 public:
     const char* pszFile;
@@ -324,7 +327,8 @@
 
 inline int64 GetTimeMillis()
 {
-    return wxGetLocalTimeMillis().GetValue();
+    return (posix_time::ptime(posix_time::microsec_clock::universal_time()) -
+            posix_time::ptime(gregorian::date(1970,1,1))).total_milliseconds();
 }
 
 inline string DateTimeStrFormat(const char* pszFormat, int64 nTime)
@@ -513,7 +517,7 @@
     return hthread;
 }
 
-#define THREAD_PRIORITY_LOWEST          PRIO_MIN
+#define THREAD_PRIORITY_LOWEST          PRIO_MAX
 #define THREAD_PRIORITY_BELOW_NORMAL    2
 #define THREAD_PRIORITY_NORMAL          0
 #define THREAD_PRIORITY_ABOVE_NORMAL    0