Update TODO list

This commit is contained in:
Gregory Nutt 2016-11-19 16:37:09 -06:00
parent ac9a11d9ab
commit 82cd27170b

52
TODO
View File

@ -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.