From b67418620bf9f28e5220c24283b8868bdb29adc8 Mon Sep 17 00:00:00 2001 From: patacongo Date: Sat, 24 Mar 2007 15:51:50 +0000 Subject: Correct errno handling git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@136 42af7a65-404d-4744-a932-0658087f49c3 --- nuttx/sched/sched_setparam.c | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) (limited to 'nuttx/sched/sched_setparam.c') diff --git a/nuttx/sched/sched_setparam.c b/nuttx/sched/sched_setparam.c index 30978b02e..7ee22ffb6 100644 --- a/nuttx/sched/sched_setparam.c +++ b/nuttx/sched/sched_setparam.c @@ -40,6 +40,7 @@ #include #include #include +#include #include #include #include "os_internal.h" @@ -90,14 +91,13 @@ * SCHED_PRIORITY_MIN through SCHED_PRIORITY_MAX. * * Return Value: - * OK if successful, otherwise ERROR. This function can - * fail for the following reasons: + * On success, sched_setparam() returns 0 (OK). On error, -1 + * (ERROR) is returned, and errno is set appropriately. * - * (1) parm is NULL or parm->sched_priority is out of - * range. - * (2) pid does not correspond to any task. - * - * (errno is not set). + * EINVAL The parameter 'param' is invalid or does not make + * sense for the current scheduling policy. + * EPERM The calling task does not have appropriate privileges. + * ESRCH The task whose ID is pid could not be found. * * Assumptions: * @@ -110,7 +110,6 @@ int sched_setparam(pid_t pid, const struct sched_param *param) tstate_t task_state; irqstate_t saved_state; int sched_priority = param->sched_priority; - int ret = 0; /* Verify that the requested priority is in the valid range */ @@ -118,6 +117,7 @@ int sched_setparam(pid_t pid, const struct sched_param *param) param->sched_priority < SCHED_PRIORITY_MIN || param->sched_priority > SCHED_PRIORITY_MAX) { + *get_errno_ptr() = EINVAL; return ERROR; } @@ -144,6 +144,7 @@ int sched_setparam(pid_t pid, const struct sched_param *param) { /* No task with this pid was found */ + *get_errno_ptr() = ESRCH; sched_unlock(); return ERROR; } @@ -266,5 +267,5 @@ int sched_setparam(pid_t pid, const struct sched_param *param) irqrestore(saved_state); sched_unlock(); - return ret; + return OK; } -- cgit v1.2.3