Mercurial > hg > bitcoin
changeset 194:234c055789ec draft
Laszlo's fix to make generate threads idle priority on Linux,
replaced some wxBase dependencies: wxMutex, wxFileExists, wxStandardPaths, wxGetLocalTimeMillis
git-svn-id: https://bitcoin.svn.sourceforge.net/svnroot/bitcoin/trunk@99 1a98c847-1fd6-4fd8-948a-caf3550aa51b
author | s_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b> |
---|---|
date | Thu, 08 Jul 2010 16:14:56 +0000 |
parents | 26a0b8e324b5 |
children | e5db89b6efa4 |
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.

Distributed under the MIT/X11 software license, see the accompanying file 
license.txt or http://www.opensource.org/licenses/mit-license.php.

This product includes software developed by the OpenSSL Project for use in the 
OpenSSL Toolkit (http://www.openssl.org/) and cryptographic software written by 
Eric Young (eay@cryptsoft.com).</property> + <property name="label">Copyright (c) 2009-2010 Satoshi Nakamoto.

This is experimental software.

Distributed under the MIT/X11 software license, see the accompanying file 
license.txt or http://www.opensource.org/licenses/mit-license.php.

This product includes software developed by the OpenSSL Project for use in the 
OpenSSL Toolkit (http://www.openssl.org/) and cryptographic software written by 
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