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); }
/** * @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); }
/** * @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); }