VCOSPRE_ VCOS_STATUS_T VCOSPOST_ vcos_thread_create_classic(VCOS_THREAD_T *thread, const char *name, void *(*entry)(void *arg), void *arg, void *stack, VCOS_UNSIGNED stacksz, VCOS_UNSIGNED priaff, VCOS_UNSIGNED timeslice, VCOS_UNSIGNED autostart) { VCOS_THREAD_ATTR_T attrs; vcos_thread_attr_init(&attrs); vcos_thread_attr_setstacksize(&attrs, stacksz); vcos_thread_attr_setpriority(&attrs, priaff & ~_VCOS_AFFINITY_MASK); vcos_thread_attr_setaffinity(&attrs, priaff & _VCOS_AFFINITY_MASK); (void)timeslice; (void)autostart; if (VCOS_CAN_SET_STACK_ADDR) { vcos_thread_attr_setstack(&attrs, stack, stacksz); } return vcos_thread_create(thread, name, &attrs, entry, arg); }
VCOS_STATUS_T vcos_thread_create_classic(VCOS_THREAD_T *thread, const char *name, void *(*entry)(void* arg), void *arg, void *stack, VCOS_UNSIGNED stacksz, VCOS_UNSIGNED priaff, VCOS_UNSIGNED timeslice, VCOS_UNSIGNED autostart) { VCOS_STATUS_T status; VCOS_THREAD_ATTR_T attrs; VCOS_UNSIGNED priority = priaff & ~VCOS_AFFINITY_MASK; VCOS_UNSIGNED affinity = priaff & VCOS_AFFINITY_MASK; vcos_thread_attr_init(&attrs); #if VCOS_CAN_SET_STACK_ADDR vcos_thread_attr_setstack(&attrs, stack, stacksz); #else vcos_assert(stack == 0); #endif vcos_assert((autostart == VCOS_START) || (autostart == VCOS_NO_START)); vcos_thread_attr_setpriority(&attrs, priority); vcos_thread_attr_setaffinity(&attrs, affinity); vcos_thread_attr_settimeslice(&attrs, timeslice); vcos_thread_attr_setautostart(&attrs, autostart); status = vcos_thread_create(thread, name, &attrs, entry, arg); return status; }