void TASK_wait() {
  while (task_sys.head == 0) {
#if defined(CONFIG_OS) & defined(CONFIG_TASK_QUEUE_IN_THREAD)
    OS_cond_wait(&task_sys.cond, NULL);
#else
    arch_sleep();
#endif
  }
}
static s32_t sfos_exe(enum sfos_op op) {
    s32_t res;
    OS_mutex_lock(&sfos.sig_mutex);
    sfos.state = op;
    TASK_run(sfos.kernel_task, op, sfos.args);
    while (sfos.state != FS_OP_IDLE) {
        OS_cond_wait(&sfos.cond, &sfos.sig_mutex);
    }
    res = sfos.sig_res;
    OS_mutex_unlock(&sfos.sig_mutex);
    return res;
}