@ -110,52 +109,62 @@ px4_task_t px4_task_spawn_cmd(const char *name, int scheduler, int priority, int
@@ -110,52 +109,62 @@ px4_task_t px4_task_spawn_cmd(const char *name, int scheduler, int priority, int
PX4_WARN("px4_task_spawn_cmd: failed to set inherit sched");
return(rv<0)?rv:-rv;
}
rv=pthread_attr_setschedpolicy(&attr,scheduler);
if(rv!=0){
PX4_WARN("px4_task_spawn_cmd: failed to set sched policy");
return(rv<0)?rv:-rv;
@ -164,28 +173,31 @@ px4_task_t px4_task_spawn_cmd(const char *name, int scheduler, int priority, int
@@ -164,28 +173,31 @@ px4_task_t px4_task_spawn_cmd(const char *name, int scheduler, int priority, int
param.sched_priority=priority;
rv=pthread_attr_setschedparam(&attr,¶m);
if(rv!=0){
PX4_WARN("px4_task_spawn_cmd: failed to set sched param");
PX4_ERR("px4_task_spawn_cmd: failed to create thread %d %d\n",rv,errno);
return(rv<0)?rv:-rv;
}
}
else{
}else{
return(rv<0)?rv:-rv;
}
}
for(i=0;i<PX4_MAX_TASKS;++i){
for(i=0;i<PX4_MAX_TASKS;++i){
if(taskmap[i].isused==false){
taskmap[i].pid=task;
taskmap[i].name=name;
@ -193,10 +205,12 @@ px4_task_t px4_task_spawn_cmd(const char *name, int scheduler, int priority, int
@@ -193,10 +205,12 @@ px4_task_t px4_task_spawn_cmd(const char *name, int scheduler, int priority, int
break;
}
}
if(i>=PX4_MAX_TASKS){
if(i>=PX4_MAX_TASKS){
return-ENOSPC;
}
returni;
returni;
}
intpx4_task_delete(px4_task_tid)
@ -205,15 +219,18 @@ int px4_task_delete(px4_task_t id)
@@ -205,15 +219,18 @@ int px4_task_delete(px4_task_t id)
pthread_tpid;
PX4_DEBUG("Called px4_task_delete");
if(id<PX4_MAX_TASKS&&taskmap[id].isused)
if(id<PX4_MAX_TASKS&&taskmap[id].isused){
pid=taskmap[id].pid;
else
}else{
return-EINVAL;
}
// If current thread then exit, otherwise cancel
if(pthread_self()==pid){
if(pthread_self()==pid){
taskmap[id].isused=false;
pthread_exit(0);
}else{
rv=pthread_cancel(pid);
}
@ -225,20 +242,21 @@ int px4_task_delete(px4_task_t id)
@@ -225,20 +242,21 @@ int px4_task_delete(px4_task_t id)