Update TODO list
This commit is contained in:
parent
ac9a11d9ab
commit
82cd27170b
52
TODO
52
TODO
@ -9,7 +9,8 @@ issues related to each board port.
|
||||
|
||||
nuttx/:
|
||||
|
||||
(15) Task/Scheduler (sched/)
|
||||
(13) Task/Scheduler (sched/)
|
||||
(3) SMP
|
||||
(1) Memory Management (mm/)
|
||||
(1) Power Management (drivers/pm)
|
||||
(3) Signals (sched/signal, arch/)
|
||||
@ -255,7 +256,7 @@ o Task/Scheduler (sched/)
|
||||
a holder of the semaphore. Normally, a task is removed from
|
||||
the holder list when it finally releases the semaphore via
|
||||
sem_post().
|
||||
|
||||
|
||||
However, TASK A never calls sem_post(sem) so it becomes
|
||||
*permanently* a holder of the semaphore and may have its
|
||||
priority boosted at any time when any other task tries to
|
||||
@ -304,7 +305,9 @@ o Task/Scheduler (sched/)
|
||||
Priority: Low. Things are just the way that we want them for the way
|
||||
that NuttX is used today.
|
||||
|
||||
Title: SMP ISSUES
|
||||
o SMP
|
||||
^^^
|
||||
Title: SMP ISSUES WITH task_restart() AND task_delete()
|
||||
Description: The interface task_restart() (and probably task_delete()) are
|
||||
not usable in the SMP configuration in the current design. In
|
||||
the non-SMP case, these are relatively simple: If the task is
|
||||
@ -330,9 +333,39 @@ o Task/Scheduler (sched/)
|
||||
The task_restart() test is also disabled in apps/examples/ostest
|
||||
in this configuration. task_delete(), on the other hand, is
|
||||
built (but probably should not be).
|
||||
|
||||
Status: Open
|
||||
Priority: Low. I do not plan to do anything with this in the near future.
|
||||
|
||||
Title: SMP AND SIGNAL ACTIONS
|
||||
Description: Suppose a task task is running on CPU1 and it is signaled from
|
||||
another task running on CPU0. How does the signal handler run
|
||||
on CPU1? I think it does not; I think that the signal will be
|
||||
lost. I think all testing up to this point has used a task
|
||||
waiting for a signal vs. a running task receiving a signal.
|
||||
This case has never been tested, but I suspect an issues.
|
||||
Here is why... this is the signal handling sequence:
|
||||
|
||||
- sigueue() will set up the siginfo data structure and call
|
||||
sig_dipatch().
|
||||
- sig_tcbdispach() or group_signal() depending on the
|
||||
configuration. Let's assume the simpler sig_tcbdispatch().
|
||||
- sig_tcbdispatch() will call queue the signal action (via
|
||||
sig_queueaction()) and then call the architecture-specific
|
||||
up_schedule_signaction set up the invoke the signal handler
|
||||
(for example in arch/arm/src/armv7-m/up_schedulesigaction.c).
|
||||
- sig_queueaction() will assume that the other task is not
|
||||
running and will simply modify data structures in the TCB.
|
||||
This, will have no effect if the task is running and the
|
||||
signal action will not be performed.
|
||||
|
||||
This is really a variant of the problem described above under
|
||||
"SMP ISSUES WITH task_restart() AND task_delete()" and the
|
||||
same proposed solution applies: Call up_cpu_pause() to stop
|
||||
all other CPUs before up_schedule_signaction runs.
|
||||
Status: Open
|
||||
Priority: High. This must be fixed.
|
||||
|
||||
Title: SPINLOCKS AND DATA CACHES
|
||||
Description: If spinlocks are used in a system with a data cache, then there
|
||||
may be a problem with cache coherency in some CPU architectures:
|
||||
@ -346,12 +379,12 @@ o Task/Scheduler (sched/)
|
||||
unless the spinlocks were made to be the same size as one cache
|
||||
line.
|
||||
|
||||
The better option is to add compiler independent "ornmentation"
|
||||
The better option is to add compiler independent "ornamentation"
|
||||
to the spinlock so that the spinlocks are all linked together
|
||||
into a separate, non-cacheable memory regions. Because of
|
||||
region aligment and minimum region mapping sizes. This would
|
||||
work in systems that have both data cache and either an MPU or
|
||||
an MMU.
|
||||
region aligment and minimum region mapping sizes this could
|
||||
still be wasteful of memory. This would work in systems that
|
||||
have both data cache and either an MPU or an MMU.
|
||||
Status: Open
|
||||
Priority: High. spinlocks, and hence SMP, will not work on such systems
|
||||
without this change.
|
||||
@ -1360,8 +1393,8 @@ o USB (drivers/usbdev, drivers/usbhost)
|
||||
Status: Open
|
||||
Priority: Medium-Low unless you really need host CDC/ACM support.
|
||||
|
||||
o Libraries (libc/)
|
||||
^^^^^^^^^^^^^^^^^
|
||||
o Libraries (libc/, libm/)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
Title: SIGNED time_t
|
||||
Description: The NuttX time_t is type uint32_t. I think this is consistent
|
||||
@ -2080,3 +2113,4 @@ o Other Applications & Tests (apps/examples/)
|
||||
the artifact is larger.
|
||||
Status: Open
|
||||
Priority: Medium.
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user