diff options
author | phajdan.jr@chromium.org <phajdan.jr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-01-13 17:38:49 +0000 |
---|---|---|
committer | phajdan.jr@chromium.org <phajdan.jr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-01-13 17:38:49 +0000 |
commit | c78566309f95a11cd5253e1cac681038d9885f21 (patch) | |
tree | 74bac802565ea385f1585d5d7d8ca15891b1979c /net/disk_cache/rankings.cc | |
parent | 2ccbdbe2508fdf17fde95a96ee197d45faabe467 (diff) | |
download | chromium_src-c78566309f95a11cd5253e1cac681038d9885f21.zip chromium_src-c78566309f95a11cd5253e1cac681038d9885f21.tar.gz chromium_src-c78566309f95a11cd5253e1cac681038d9885f21.tar.bz2 |
Port crash_cache tool to Linux.
Review URL: http://codereview.chromium.org/17353
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@7939 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'net/disk_cache/rankings.cc')
-rw-r--r-- | net/disk_cache/rankings.cc | 49 |
1 files changed, 35 insertions, 14 deletions
diff --git a/net/disk_cache/rankings.cc b/net/disk_cache/rankings.cc index e3ff489..d786077 100644 --- a/net/disk_cache/rankings.cc +++ b/net/disk_cache/rankings.cc @@ -63,10 +63,20 @@ enum CrashLocation { ON_REMOVE_3, ON_REMOVE_4, ON_REMOVE_5, ON_REMOVE_6, ON_REMOVE_7, ON_REMOVE_8 }; +void TerminateSelf() { +#if defined(OS_WIN) + // Windows does more work on _exit() than we would like, so we force exit. + TerminateProcess(GetCurrentProcess(), 0); +#elif defined(OS_POSIX) + // On POSIX, _exit() will terminate the process with minimal cleanup, + // and it is cleaner than killing. + _exit(0); +#endif +} + // Generates a crash on debug builds, acording to the value of g_rankings_crash. // This used by crash_cache.exe to generate unit-test files. void GenerateCrash(CrashLocation location) { -#if defined(OS_WIN) #ifndef NDEBUG if (disk_cache::NO_CRASH == g_rankings_crash) return; @@ -75,26 +85,32 @@ void GenerateCrash(CrashLocation location) { switch (g_rankings_crash) { case disk_cache::INSERT_ONE_1: case disk_cache::INSERT_LOAD_1: - TerminateProcess(GetCurrentProcess(), 0); + TerminateSelf(); + default: + break; } break; case ON_INSERT_2: if (disk_cache::INSERT_EMPTY_1 == g_rankings_crash) - TerminateProcess(GetCurrentProcess(), 0); + TerminateSelf(); break; case ON_INSERT_3: switch (g_rankings_crash) { case disk_cache::INSERT_EMPTY_2: case disk_cache::INSERT_ONE_2: case disk_cache::INSERT_LOAD_2: - TerminateProcess(GetCurrentProcess(), 0); + TerminateSelf(); + default: + break; } break; case ON_INSERT_4: switch (g_rankings_crash) { case disk_cache::INSERT_EMPTY_3: case disk_cache::INSERT_ONE_3: - TerminateProcess(GetCurrentProcess(), 0); + TerminateSelf(); + default: + break; } break; case ON_REMOVE_1: @@ -103,42 +119,48 @@ void GenerateCrash(CrashLocation location) { case disk_cache::REMOVE_HEAD_1: case disk_cache::REMOVE_TAIL_1: case disk_cache::REMOVE_LOAD_1: - TerminateProcess(GetCurrentProcess(), 0); + TerminateSelf(); + default: + break; } break; case ON_REMOVE_2: if (disk_cache::REMOVE_ONE_2 == g_rankings_crash) - TerminateProcess(GetCurrentProcess(), 0); + TerminateSelf(); break; case ON_REMOVE_3: if (disk_cache::REMOVE_ONE_3 == g_rankings_crash) - TerminateProcess(GetCurrentProcess(), 0); + TerminateSelf(); break; case ON_REMOVE_4: if (disk_cache::REMOVE_HEAD_2 == g_rankings_crash) - TerminateProcess(GetCurrentProcess(), 0); + TerminateSelf(); break; case ON_REMOVE_5: if (disk_cache::REMOVE_TAIL_2 == g_rankings_crash) - TerminateProcess(GetCurrentProcess(), 0); + TerminateSelf(); break; case ON_REMOVE_6: if (disk_cache::REMOVE_TAIL_3 == g_rankings_crash) - TerminateProcess(GetCurrentProcess(), 0); + TerminateSelf(); break; case ON_REMOVE_7: switch (g_rankings_crash) { case disk_cache::REMOVE_ONE_4: case disk_cache::REMOVE_LOAD_2: case disk_cache::REMOVE_HEAD_3: - TerminateProcess(GetCurrentProcess(), 0); + TerminateSelf(); + default: + break; } break; case ON_REMOVE_8: switch (g_rankings_crash) { case disk_cache::REMOVE_HEAD_4: case disk_cache::REMOVE_LOAD_3: - TerminateProcess(GetCurrentProcess(), 0); + TerminateSelf(); + default: + break; } break; default: @@ -146,7 +168,6 @@ void GenerateCrash(CrashLocation location) { return; } #endif // NDEBUG -#endif // OS_WIN } } // namespace |