rem: t->next_state = THREAD_STATE_SUSPENDED;
add: t->next_state = B_THREAD_SUSPENDED;
context: int thread_suspend_thread(thread_id id){	int state;	struct thread *t;	int retval;	bool global_resched = false;	state = disable_interrupts();	GRAB_THREAD_LOCK();	t = thread_get_current_thread();	if(t->id != id) {		t = thread_get_thread_struct_locked(id);	}	if (t != NULL) {		if (t->team == team_get_kernel_team()) {			// no way			retval = EPERM;		} else if (t->in_kernel == true) {			t->pending_signals |= SIG_SUSPEND;			retval = B_NO_ERROR;		} else {			t->next_state = THREAD_STATE_SUSPENDED;			global_resched = true;			retval = B_NO_ERROR;		}	} else {		retval = ERR_INVALID_HANDLE;	}	RELEASE_THREAD_LOCK();	restore_interrupts(state);	if(global_resched) {		smp_send_broadcast_ici(SMP_MSG_RESCHEDULE, 0, 0, 0, NULL, SMP_MSG_FLAG_SYNC);	}	return retval;}