示例#1
0
文件: aos_rhino.c 项目: wosayttn/aos
int aos_task_setspecific(aos_task_key_t key, void *vp)
{
    int ret;
    ret = krhino_task_info_set(krhino_cur_task_get(), key, vp);
    if (ret == RHINO_SUCCESS) {
        return 0;
    }

    ERRNO_MAPPING(ret);
}
示例#2
0
/**
 * @brief set task private data
 */
esp_err_t espos_task_set_private_data (
    espos_task_t task,
    int idx,
    void *info
)
{
    kstat_t ret;

    ktask_t *ptask = (ktask_t *)task;;
    ret = krhino_task_info_set(ptask, (size_t)idx, info);

    return espos_err_map(ret);
}
示例#3
0
/**
 * @brief create a task
 */
esp_err_t espos_task_create_on_cpu (
    espos_task_t *task,
    const char *name,
    void *arg,
    espos_prio_t prio,
    espos_tick_t ticks,
    espos_size_t stack_size,
    espos_task_entry_t entry,
    espos_opt_t opt,
    espos_cpu_t cpu_id
)
{
    kstat_t ret;
    ktask_t **ptask = (ktask_t **)task;
    uint8_t auto_run;
    extern void _cleanup_r(struct _reent* r);

    if (name == NULL) {
    	name = "default_task";
    }

    if (prio > ESPOS_TASK_PRIO_NUM)
        return espos_err_map(RHINO_BEYOND_MAX_PRI);

    if (ESPOS_TASK_CREATE_NORMAL == opt) {
        auto_run = 1;
    }
    else {
        auto_run = 0;
    }

    prio = ESPOS_TASK_PRIO_NUM - prio;
    prio = prio <= 0 ? 1 : prio;
    ret = krhino_task_dyn_create(ptask, name, arg, prio, ticks,
                        stack_size / sizeof(cpu_stack_t), entry, auto_run);

    /* The following code may open it later */
    #if 0
    if (ret == 0) {
        struct _reent *r;
        r = krhino_mm_alloc(sizeof(*r));
        esp_reent_init(r);
        ret = krhino_task_info_set(*ptask, 2, r);
    }
    #endif

    return espos_err_map(ret);
}