void __ssx_schedule(void) { __ssx_next_priority = __ssx_thread_queue_min(&__ssx_run_queue); __ssx_next_thread = __ssx_priority_map[__ssx_next_priority]; if ((__ssx_next_thread == 0) || (__ssx_next_thread != __ssx_current_thread)) { if (__ssx_kernel_mode_thread()) { if (__ssx_kernel_context_thread()) { if (__ssx_current_thread != 0) { __ssx_switch(); } else { __ssx_next_thread_resume(); } } else { __ssx_delayed_switch = 1; } } } }
int ssx_start_threads(void) { if (SSX_ERROR_CHECK_API) { SSX_ERROR_IF(__ssx_kernel_mode_thread(), SSX_ILLEGAL_CONTEXT_THREAD); } __ssx_call_ssx_start_threads(); return 0; }