mirror of
https://github.com/apache/nuttx.git
synced 2026-05-28 20:08:15 +08:00
Update TODO list
This commit is contained in:
@@ -22,10 +22,10 @@ nuttx/:
|
|||||||
(16) Network (net/, drivers/net)
|
(16) Network (net/, drivers/net)
|
||||||
(4) USB (drivers/usbdev, drivers/usbhost)
|
(4) USB (drivers/usbdev, drivers/usbhost)
|
||||||
(0) Other drivers (drivers/)
|
(0) Other drivers (drivers/)
|
||||||
(13) Libraries (libc/, libm/)
|
(14) Libraries (libc/, libm/)
|
||||||
(10) File system/Generic drivers (fs/, drivers/)
|
(10) File system/Generic drivers (fs/, drivers/)
|
||||||
(10) Graphics Subsystem (graphics/)
|
(10) Graphics Subsystem (graphics/)
|
||||||
(2) Build system / Toolchains
|
(3) Build system / Toolchains
|
||||||
(3) Linux/Cywgin simulation (arch/sim)
|
(3) Linux/Cywgin simulation (arch/sim)
|
||||||
(4) ARM (arch/arm/)
|
(4) ARM (arch/arm/)
|
||||||
|
|
||||||
@@ -1740,6 +1740,52 @@ o Libraries (libc/, libm/)
|
|||||||
Status: Open
|
Status: Open
|
||||||
Priority: Low
|
Priority: Low
|
||||||
|
|
||||||
|
Title: printf()/flush() Cancellation Point Problems
|
||||||
|
Description: printf() calls flush() which, in turn calls write(). write()
|
||||||
|
is a cancellation point and both print() and flush() are
|
||||||
|
permitted to be cancellation points according to
|
||||||
|
OpenGroup.org.
|
||||||
|
|
||||||
|
However, calling write(), albeit indirectly from printf()
|
||||||
|
does not make it a "well behaved" cancellation point. When
|
||||||
|
write() exists, then the task or thread may be terminated
|
||||||
|
and printf() will leave the library semeaphore locked,
|
||||||
|
causing hang for the next task that calls printf().
|
||||||
|
|
||||||
|
There are basically three problems here. Resolution of
|
||||||
|
any of these problems:
|
||||||
|
|
||||||
|
1. It is optional if printf is a cancellation point. Because
|
||||||
|
it calls write() (indirectly), it is essentially a
|
||||||
|
cancellation point. But it could be possible to generate
|
||||||
|
a special interface, say nx_write() that behaves like
|
||||||
|
write() but is not a cancellation point. This function
|
||||||
|
would have to be accessible from user space for the
|
||||||
|
PROTECTED and KERNEL build.
|
||||||
|
|
||||||
|
2. pthreads maintain of list of all mutexes that they hold.
|
||||||
|
These are handling according to OpenGroup.org when the
|
||||||
|
pthread exits holding the mutex. There is nothing
|
||||||
|
comparable for tasks and semaphores, there is no list of
|
||||||
|
semaphores held for each tasks or pthreads and there is
|
||||||
|
no logic to deal with semaphores held when the task or
|
||||||
|
pthread exits.
|
||||||
|
|
||||||
|
3. NuttX supports nested cancellation points: A function
|
||||||
|
that is a cancellation point can call another function
|
||||||
|
that is also a cancellation point. The cancellation will
|
||||||
|
not occur until the final nested cancellation point
|
||||||
|
exits. So in the case of printf, if it were to be a
|
||||||
|
cancellation point, then the actual action exit would not
|
||||||
|
occur until printf() frees all semaphores and exits.
|
||||||
|
Unfortunately, printf() is a user space interface and the
|
||||||
|
cancellation interfaces are internal to the OS and would
|
||||||
|
not be available to printf() in the PROTECTED or KERNEL
|
||||||
|
build modes.
|
||||||
|
Status: Open
|
||||||
|
Priority: Medium-high. Anything that can result in a hang is
|
||||||
|
automatically pretty high priority.
|
||||||
|
|
||||||
o File system / Generic drivers (fs/, drivers/)
|
o File system / Generic drivers (fs/, drivers/)
|
||||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
@@ -2161,6 +2207,12 @@ o Build system
|
|||||||
to all Makefiles. It has not yet been confirmed that this fix
|
to all Makefiles. It has not yet been confirmed that this fix
|
||||||
eliminates the dependency issue or not.
|
eliminates the dependency issue or not.
|
||||||
|
|
||||||
|
Title: DEPENDENCIES OBJECT SUB-DIRECTORIES
|
||||||
|
Descripton: Dependencies do not work in directories that keep binaries in
|
||||||
|
a sub-directory like bin, ubin, kbin.
|
||||||
|
Status: Open
|
||||||
|
Priority: Medium-Low. Definitely a build issue once in awhile.
|
||||||
|
|
||||||
o Other drivers (drivers/)
|
o Other drivers (drivers/)
|
||||||
^^^^^^^^^^^^^^^^^^^^^^^^
|
^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user