Browse Source

Merge remote branch 'refs/remotes/svn/trunk' into svn

0.8
Gavin Andresen 14 years ago
parent
commit
90e165aa0c
  1. 4
      cryptopp/secblock.h
  2. 1
      headers.h
  3. 14
      init.cpp
  4. 66
      main.cpp
  5. 6
      net.cpp
  6. 2
      serialize.h
  7. 1
      util.cpp
  8. 1
      util.h

4
cryptopp/secblock.h

@ -184,8 +184,8 @@ public:
void deallocate(void *p, size_type n) void deallocate(void *p, size_type n)
{ {
//// Bitcoin: can't figure out why this is tripping on a few compiles. //// Bitcoin: don't know why this trips, probably a false alarm, depends on the compiler used.
//assert(false); //assert(false);
} }
size_type max_size() const {return 0;} size_type max_size() const {return 0;}

1
headers.h

@ -99,6 +99,7 @@
#include <net/if.h> #include <net/if.h>
#include <ifaddrs.h> #include <ifaddrs.h>
#include <fcntl.h> #include <fcntl.h>
#include <signal.h>
#endif #endif
#ifdef BSD #ifdef BSD
#include <netinet/in.h> #include <netinet/in.h>

14
init.cpp

@ -10,7 +10,6 @@
////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////
// //
// Shutdown // Shutdown
@ -57,6 +56,11 @@ void Shutdown(void* parg)
} }
} }
void HandleSIGTERM(int)
{
fRequestShutdown = true;
}
@ -130,6 +134,14 @@ bool AppInit2(int argc, char* argv[])
#ifndef __WXMSW__ #ifndef __WXMSW__
umask(077); umask(077);
#endif #endif
#ifndef __WXMSW__
// Clean shutdown on SIGTERM
struct sigaction sa;
sa.sa_handler = HandleSIGTERM;
sigemptyset(&sa.sa_mask);
sa.sa_flags = 0;
sigaction(SIGTERM, &sa, NULL);
#endif
// //
// Parameters // Parameters

66
main.cpp

@ -2767,6 +2767,68 @@ inline void SHA256Transform(void* pstate, void* pinput, const void* pinit)
static const int NPAR = 32; static const int NPAR = 32;
extern void Double_BlockSHA256(const void* pin, void* pout, const void* pinit, unsigned int hash[8][NPAR], const void* init2); extern void Double_BlockSHA256(const void* pin, void* pout, const void* pinit, unsigned int hash[8][NPAR], const void* init2);
#ifdef __GNUC__
void CallCPUID(int in, int& aret, int& cret)
{
int a, c;
asm (
"mov %2, %%eax; " // in into eax
"cpuid;"
"mov %%eax, %0;" // eax into ret
"mov %%ecx, %1;" // eax into ret
:"=r"(a),"=r"(c) /* output */
:"r"(in) /* input */
:"%eax","%ecx" /* clobbered register */
);
aret = a;
cret = c;
}
bool Detect128BitSSE2()
{
int a, c, nBrand;
CallCPUID(0, a, nBrand);
bool fIntel = (nBrand == 0x6c65746e); // ntel
bool fAMD = (nBrand == 0x444d4163); // cAMD
struct
{
unsigned int nStepping : 4;
unsigned int nModel : 4;
unsigned int nFamily : 4;
unsigned int nProcessorType : 2;
unsigned int nUnused : 2;
unsigned int nExtendedModel : 4;
unsigned int nExtendedFamily : 8;
}
cpu;
CallCPUID(1, a, c);
memcpy(&cpu, &a, sizeof(cpu));
int nFamily = cpu.nExtendedFamily + cpu.nFamily;
int nModel = cpu.nExtendedModel*16 + cpu.nModel;
// We need Intel Nehalem or AMD K10 or better for 128bit SSE2
// Nehalem = i3/i5/i7 and some Xeon
// K10 = Opterons with 4 or more cores, Phenom, Phenom II, Athlon II
// Intel Core i5 family 6, model 26 or 30
// Intel Core i7 family 6, model 26 or 30
// Intel Core i3 family 6, model 37
// AMD Phenom family 16, model 10
bool fUseSSE2 = ((fIntel && nFamily * 10000 + nModel >= 60026) ||
(fAMD && nFamily * 10000 + nModel >= 160010));
static bool fPrinted;
if (!fPrinted)
{
fPrinted = true;
printf("CPUID %08x family %d, model %d, stepping %d, fUseSSE2=%d\n", nBrand, nFamily, nModel, cpu.nStepping, fUseSSE2);
}
return fUseSSE2;
}
#else
bool Detect128BitSSE2() { return false; }
#endif
@ -2774,6 +2836,9 @@ void BitcoinMiner()
{ {
printf("BitcoinMiner started\n"); printf("BitcoinMiner started\n");
SetThreadPriority(THREAD_PRIORITY_LOWEST); SetThreadPriority(THREAD_PRIORITY_LOWEST);
bool f4WaySSE2 = Detect128BitSSE2();
if (mapArgs.count("-4way"))
f4WaySSE2 = (mapArgs["-4way"] != "0");
CKey key; CKey key;
key.MakeNewKey(); key.MakeNewKey();
@ -2913,7 +2978,6 @@ void BitcoinMiner()
// //
// Search // Search
// //
bool f4WaySSE2 = mapArgs.count("-4way");
int64 nStart = GetTime(); int64 nStart = GetTime();
uint256 hashTarget = CBigNum().SetCompact(pblock->nBits).getuint256(); uint256 hashTarget = CBigNum().SetCompact(pblock->nBits).getuint256();
uint256 hashbuf[2]; uint256 hashbuf[2];

6
net.cpp

@ -1160,9 +1160,13 @@ void ThreadMessageHandler2(void* parg)
pnode->Release(); pnode->Release();
} }
// Wait and allow messages to bunch up // Wait and allow messages to bunch up.
// Reduce vnThreadsRunning so StopNode has permission to exit while
// we're sleeping, but we must always check fShutdown after doing this.
vnThreadsRunning[2]--; vnThreadsRunning[2]--;
Sleep(100); Sleep(100);
if (fRequestShutdown)
Shutdown(NULL);
vnThreadsRunning[2]++; vnThreadsRunning[2]++;
if (fShutdown) if (fShutdown)
return; return;

2
serialize.h

@ -23,7 +23,7 @@ class CAutoFile;
static const unsigned int MAX_SIZE = 0x02000000; static const unsigned int MAX_SIZE = 0x02000000;
static const int VERSION = 312; static const int VERSION = 312;
static const char* pszSubVer = ".1"; static const char* pszSubVer = ".2";

1
util.cpp

@ -11,6 +11,7 @@ bool fDebug = false;
bool fPrintToConsole = false; bool fPrintToConsole = false;
bool fPrintToDebugger = false; bool fPrintToDebugger = false;
char pszSetDataDir[MAX_PATH] = ""; char pszSetDataDir[MAX_PATH] = "";
bool fRequestShutdown = false;
bool fShutdown = false; bool fShutdown = false;
bool fDaemon = false; bool fDaemon = false;
bool fCommandLine = false; bool fCommandLine = false;

1
util.h

@ -140,6 +140,7 @@ extern bool fDebug;
extern bool fPrintToConsole; extern bool fPrintToConsole;
extern bool fPrintToDebugger; extern bool fPrintToDebugger;
extern char pszSetDataDir[MAX_PATH]; extern char pszSetDataDir[MAX_PATH];
extern bool fRequestShutdown;
extern bool fShutdown; extern bool fShutdown;
extern bool fDaemon; extern bool fDaemon;
extern bool fCommandLine; extern bool fCommandLine;

Loading…
Cancel
Save