diff --git a/sched/pthread_create.c b/sched/pthread_create.c index e515125738f226a9979f2725a60dbbd7f733afb2..836b422c663b31933903e79cff40139c09f52001 100644 --- a/sched/pthread_create.c +++ b/sched/pthread_create.c @@ -109,7 +109,7 @@ static const char g_pthreadname[] = "<pthread>"; * If no parameters are required, argv may be NULL. * * Return Value: - * OK + * None * ****************************************************************************/ @@ -155,7 +155,7 @@ static void pthread_argsetup(FAR _TCB *tcb, pthread_addr_t arg) * pjoin * * Return Value: - * None or pointer to the found entry. + * None * * Assumptions: * The caller has provided protection from re-entrancy. @@ -235,6 +235,11 @@ static void pthread_start(void) * attr * start_routine * arg + * + * Returned value: + * OK (0) on success; a (non-negated) errno value on failure. The errno + * variable is not set. + * ****************************************************************************/ int pthread_create(FAR pthread_t *thread, FAR pthread_attr_t *attr, @@ -261,16 +266,16 @@ int pthread_create(FAR pthread_t *thread, FAR pthread_attr_t *attr, ptcb = (FAR _TCB*)kzmalloc(sizeof(_TCB)); if (!ptcb) { - *get_errno_ptr() = ENOMEM; - return ERROR; + return ENOMEM; } /* Associate file descriptors with the new task */ - if (sched_setuppthreadfiles(ptcb) != OK) + status = sched_setuppthreadfiles(ptcb); + if (status != OK) { sched_releasetcb(ptcb); - return ERROR; + return status; } /* Share the parent's envionment */ @@ -283,7 +288,7 @@ int pthread_create(FAR pthread_t *thread, FAR pthread_attr_t *attr, if (!pjoin) { sched_releasetcb(ptcb); - return ERROR; + return ENOMEM; } /* Allocate the stack for the TCB */ @@ -293,7 +298,7 @@ int pthread_create(FAR pthread_t *thread, FAR pthread_attr_t *attr, { sched_releasetcb(ptcb); sched_free(pjoin); - return ERROR; + return ENOMEM; } /* Should we use the priority and scheduler specified in the @@ -345,7 +350,7 @@ int pthread_create(FAR pthread_t *thread, FAR pthread_attr_t *attr, sched_releasetcb(ptcb); sched_free(pjoin); - return ERROR; + return EBUSY; } /* Mark this task as a pthread */ @@ -385,7 +390,10 @@ int pthread_create(FAR pthread_t *thread, FAR pthread_attr_t *attr, /* Initialize the semaphores in the join structure to zero. */ status = sem_init(&pjoin->data_sem, 0, 0); - if (status == OK) status = sem_init(&pjoin->exit_sem, 0, 0); + if (status == OK) + { + status = sem_init(&pjoin->exit_sem, 0, 0); + } /* Activate the task */ @@ -419,7 +427,7 @@ int pthread_create(FAR pthread_t *thread, FAR pthread_attr_t *attr, (void)sem_destroy(&pjoin->exit_sem); sched_releasetcb(ptcb); sched_free(pjoin); - return ERROR; + return EIO; } return OK; } diff --git a/sched/sched_setuppthreadfiles.c b/sched/sched_setuppthreadfiles.c index 5b97a46c57cdf54618f341927a59c499f3e77b6a..a28a042c00356bb0923d9ff1179d2b113d70e03a 100644 --- a/sched/sched_setuppthreadfiles.c +++ b/sched/sched_setuppthreadfiles.c @@ -1,7 +1,7 @@ -/************************************************************ +/**************************************************************************** * sched_setuppthreadfiles.c * - * Copyright (C) 2007 Gregory Nutt. All rights reserved. + * Copyright (C) 2007, 2009 Gregory Nutt. All rights reserved. * Author: Gregory Nutt <spudmonkey@racsa.co.cr> * * Redistribution and use in source and binary forms, with or without @@ -14,7 +14,7 @@ * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. - * 3. Neither the name Gregory Nutt nor the names of its contributors may be + * 3. Neither the name NuttX nor the names of its contributors may be * used to endorse or promote products derived from this software * without specific prior written permission. * @@ -31,11 +31,11 @@ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. * - ************************************************************/ + ****************************************************************************/ -/************************************************************ +/**************************************************************************** * Included Files - ************************************************************/ + ****************************************************************************/ #include <nuttx/config.h> @@ -49,15 +49,15 @@ #if CONFIG_NFILE_DESCRIPTORS > 0 || CONFIG_NSOCKET_DESCRIPTORS > 0 -/************************************************************ +/**************************************************************************** * Private Functions - ************************************************************/ + ****************************************************************************/ -/************************************************************ +/**************************************************************************** * Public Functions - ************************************************************/ + ****************************************************************************/ -/************************************************************ +/**************************************************************************** * Function: sched_setuppthreadfiles * * Description: @@ -68,11 +68,12 @@ * tcb - tcb of the new task. * * Return Value: - * None + * OK (if an error were returned, it would need to be a non-negated + * errno value). * * Assumptions: * - ************************************************************/ + ****************************************************************************/ int sched_setuppthreadfiles(FAR _TCB *tcb) { diff --git a/sched/task_activate.c b/sched/task_activate.c index d22593147a6f17574616d879d50fc6e0e4b85ba6..e324e17a3f0d5db598fde3a658e5fabd96883d1d 100644 --- a/sched/task_activate.c +++ b/sched/task_activate.c @@ -1,5 +1,5 @@ /**************************************************************************** - * task_activate.c + * sched/task_activate.c * * Copyright (C) 2007-2009 Gregory Nutt. All rights reserved. * Author: Gregory Nutt <spudmonkey@racsa.co.cr>