Ejemplo n.º 1
0
void kscrashsentry_suspendThreads(void)
{
    KSLOG_DEBUG("Suspending threads.");
    if(!g_threads_are_running)
    {
        KSLOG_DEBUG("Threads already suspended.");
        return;
    }

    if(g_context != NULL)
    {
        int numThreads = sizeof(g_context->reservedThreads) / sizeof(g_context->reservedThreads[0]);
        KSLOG_DEBUG("Suspending all threads except for %d reserved threads.", numThreads);
        if(ksmach_suspendAllThreadsExcept(g_context->reservedThreads, numThreads))
        {
            KSLOG_DEBUG("Suspend successful.");
            g_threads_are_running = false;
        }
    }
    else
    {
        KSLOG_DEBUG("Suspending all threads.");
        if(ksmach_suspendAllThreads())
        {
            KSLOG_DEBUG("Suspend successful.");
            g_threads_are_running = false;
        }
    }
    KSLOG_DEBUG("Suspend complete.");
}
Ejemplo n.º 2
0
bool ksmach_suspendAllThreads(void)
{
    return ksmach_suspendAllThreadsExcept(NULL, 0);
}