void p_pos_initTask(POSTASK_t task, void *user, POSTASKFUNC_t funcptr, void *funcarg) { uint8_t *stackPtr = (uint8_t*)user; constructStackFrame(task, stackPtr, funcptr, funcarg); }
VAR_t p_pos_initTask(POSTASK_t task, POSTASKFUNC_t funcptr, void *funcarg) { // Stack pointer is in the stack memory // (with fixed size) in the task structure. uint8_t *stackPtr = (task->stack) + (FIXED_STACK_SIZE-1); constructStackFrame(task, stackPtr, funcptr, funcarg); return 0; }
VAR_t p_pos_initTask(POSTASK_t task, POSTASKFUNC_t funcptr, void *funcarg) { unsigned int z; #if POSCFG_ARGCHECK > 1 memset(task->stack, PORT_STACK_MAGIC, PORTCFG_FIXED_STACK_SIZE); #endif z = (unsigned int)task->stack + PORTCFG_FIXED_STACK_SIZE - 2; constructStackFrame(task, (void*)z, funcptr, funcarg); return 0; }
VAR_t p_pos_initTask(POSTASK_t task, UINT_t stacksize, POSTASKFUNC_t funcptr, void *funcarg) { uint8_t *stackPtr = my_malloc(stacksize); if (stackPtr == NULL) { return -1; } task->stackroot = stackPtr; stackPtr += stacksize - 1; constructStackFrame(task, stackPtr, funcptr, funcarg); return 0; }
VAR_t p_pos_initTask(POSTASK_t task, UINT_t stacksize, POSTASKFUNC_t funcptr, void *funcarg) { unsigned int z; stacksize = STACK_ALIGN_UP(stacksize); task->stack = NOS_MEM_ALLOC(stacksize); if (task->stack == NULL) return -1; task->stackSize = stacksize; #if POSCFG_ARGCHECK > 1 nosMemSet(task->stack, PORT_STACK_MAGIC, stacksize); #endif z = (unsigned int) task->stack + stacksize; constructStackFrame(task, (void*) z, funcptr, funcarg); return 0; }