|
Hi Colin,
Colin Northway wrote:
> Hey, this is a small but frustrating one. This is in legOS 1.7 but I beleive
> it will still be in 2.0 as it's caused by the 1 priority to a task requirement.
The one task per priority level requirement is gone at least since
March. There is a priority chain mechanism now, with round-robin
scheduling within a priority level.
> If you write code like the following:
>
> while(1){
> wait(for something);
> kill(t1);
> t1 = execi(&move_around, 1, ...);
> sleep(1);
> }
Yes, a task won't die while higher-priority tasks are running. This
won't cause execi() to fail, however - unless the old task's stack
absolutely needs to be freed prior to allocation of a new task. Execi
may always fail because it's out of memory.
If you'd like to fix this, you might consider writing code to renice
processes. Bear in mind this may require substantial modifications of
priority chains, though.
Markus.
--
"Nieder mit den Zitaten!" -Markus L. Noga <markus@noga.de>
|
|
Message is in Reply To:
| | legOS limitation
|
| Hey, this is a small but frustrating one. This is in legOS 1.7 but I beleive it will still be in 2.0 as it's caused by the 1 priority to a task requirement. If you write code like the following: while(1){ wait(for something); kill(t1); t1 = (...) (25 years ago, 27-Oct-99, to lugnet.robotics.rcx.legos)
|
2 Messages in This Thread:
- Entire Thread on One Page:
- Nested:
All | Brief | Compact | Dots
Linear:
All | Brief | Compact
|
|
|
|