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/:
|
nuttx/:
|
||||||
|
|
||||||
(15) Task/Scheduler (sched/)
|
(13) Task/Scheduler (sched/)
|
||||||
|
(3) SMP
|
||||||
(1) Memory Management (mm/)
|
(1) Memory Management (mm/)
|
||||||
(1) Power Management (drivers/pm)
|
(1) Power Management (drivers/pm)
|
||||||
(3) Signals (sched/signal, arch/)
|
(3) Signals (sched/signal, arch/)
|
||||||
@ -255,7 +256,7 @@ o Task/Scheduler (sched/)
|
|||||||
a holder of the semaphore. Normally, a task is removed from
|
a holder of the semaphore. Normally, a task is removed from
|
||||||
the holder list when it finally releases the semaphore via
|
the holder list when it finally releases the semaphore via
|
||||||
sem_post().
|
sem_post().
|
||||||
|
|
||||||
However, TASK A never calls sem_post(sem) so it becomes
|
However, TASK A never calls sem_post(sem) so it becomes
|
||||||
*permanently* a holder of the semaphore and may have its
|
*permanently* a holder of the semaphore and may have its
|
||||||
priority boosted at any time when any other task tries to
|
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
|
Priority: Low. Things are just the way that we want them for the way
|
||||||
that NuttX is used today.
|
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
|
Description: The interface task_restart() (and probably task_delete()) are
|
||||||
not usable in the SMP configuration in the current design. In
|
not usable in the SMP configuration in the current design. In
|
||||||
the non-SMP case, these are relatively simple: If the task is
|
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
|
The task_restart() test is also disabled in apps/examples/ostest
|
||||||
in this configuration. task_delete(), on the other hand, is
|
in this configuration. task_delete(), on the other hand, is
|
||||||
built (but probably should not be).
|
built (but probably should not be).
|
||||||
|
|
||||||
Status: Open
|
Status: Open
|
||||||
Priority: Low. I do not plan to do anything with this in the near future.
|
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
|
Title: SPINLOCKS AND DATA CACHES
|
||||||
Description: If spinlocks are used in a system with a data cache, then there
|
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:
|
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
|
unless the spinlocks were made to be the same size as one cache
|
||||||
line.
|
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
|
to the spinlock so that the spinlocks are all linked together
|
||||||
into a separate, non-cacheable memory regions. Because of
|
into a separate, non-cacheable memory regions. Because of
|
||||||
region aligment and minimum region mapping sizes. This would
|
region aligment and minimum region mapping sizes this could
|
||||||
work in systems that have both data cache and either an MPU or
|
still be wasteful of memory. This would work in systems that
|
||||||
an MMU.
|
have both data cache and either an MPU or an MMU.
|
||||||
Status: Open
|
Status: Open
|
||||||
Priority: High. spinlocks, and hence SMP, will not work on such systems
|
Priority: High. spinlocks, and hence SMP, will not work on such systems
|
||||||
without this change.
|
without this change.
|
||||||
@ -1360,8 +1393,8 @@ o USB (drivers/usbdev, drivers/usbhost)
|
|||||||
Status: Open
|
Status: Open
|
||||||
Priority: Medium-Low unless you really need host CDC/ACM support.
|
Priority: Medium-Low unless you really need host CDC/ACM support.
|
||||||
|
|
||||||
o Libraries (libc/)
|
o Libraries (libc/, libm/)
|
||||||
^^^^^^^^^^^^^^^^^
|
^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
Title: SIGNED time_t
|
Title: SIGNED time_t
|
||||||
Description: The NuttX time_t is type uint32_t. I think this is consistent
|
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.
|
the artifact is larger.
|
||||||
Status: Open
|
Status: Open
|
||||||
Priority: Medium.
|
Priority: Medium.
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user