Skip to content
TODO 70.3 KiB
Newer Older
NuttX TODO List (Last updated January 3, 2012)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
patacongo's avatar
patacongo committed

This file summarizes known NuttX bugs, limitations, inconsistencies with 
standards, things that could be improved, and ideas for enhancements.

patacongo's avatar
patacongo committed
  (6)  Task/Scheduler (sched/)
  (1)  On-demand paging (sched/)
  (2)  Signals (sched/, arch/)
patacongo's avatar
patacongo committed
  (1)  pthreads (sched/)
  (2)  C++ Support
patacongo's avatar
patacongo committed
  (5)  Binary loaders (binfmt/)
 (16)  Network (net/, drivers/net)
  (2)  USB (drivers/usbdev, drivers/usbhost)
patacongo's avatar
patacongo committed
  (9)  Libraries (lib/)
 (10)  File system/Generic drivers (fs/, drivers/)
  (1)  Graphics subystem (graphics/)
  (1)  Pascal add-on (pcode/)
patacongo's avatar
patacongo committed
  (1)  Documentation (Documentation/)
  (7)  Build system / Toolchains
  (6)  Linux/Cywgin simulation (arch/sim)
  (4)  ARM (arch/arm/)
patacongo's avatar
patacongo committed
  (1)  ARM/C5471 (arch/arm/src/c5471/)
patacongo's avatar
patacongo committed
  (3)  ARM/DM320 (arch/arm/src/dm320/)
  (2)  ARM/i.MX (arch/arm/src/imx/)
patacongo's avatar
patacongo committed
  (3)  ARM/LPC17xx (arch/arm/src/lpc17xx/)
patacongo's avatar
patacongo committed
  (7)  ARM/LPC214x (arch/arm/src/lpc214x/)
patacongo's avatar
patacongo committed
  (2)  ARM/LPC313x (arch/arm/src/lpc313x/)
patacongo's avatar
patacongo committed
  (3)  ARM/STR71x (arch/arm/src/str71x/)
  (3)  ARM/LM3S6918 (arch/arm/src/lm3s/)
  (5)  ARM/STM32 (arch/arm/src/stm32/)
  (3)  AVR (arch/avr)
patacongo's avatar
patacongo committed
  (0)  Intel x86 (arch/x86)
  (4)  8051 / MCS51 (arch/8051/)
  (1)  MIPS (arch/mips)
  (1)  Hitachi/Renesas SH-1 (arch/sh/src/sh1)
patacongo's avatar
patacongo committed
  (4)  Renesas M16C/26 (arch/sh/src/m16c)
 (10)  z80/z8/ez80 (arch/z80/)
  (8)  z16 (arch/z16/)
patacongo's avatar
patacongo committed
  (1)  mc68hc1x (arch/hc)
patacongo's avatar
patacongo committed

apps/

  (5)  Network Utilities (apps/netutils/)
  (5)  Other Applications & Tests (apps/examples/)
patacongo's avatar
patacongo committed
o Task/Scheduler (sched/)
  ^^^^^^^^^^^^^^^^^^^^^^^

  Title:       CHILD PTHREAD TERMINATION
patacongo's avatar
patacongo committed
  Description: When a tasks exits, shouldn't all of its child pthreads also be
               terminated?
  Status:      Open
  Priority:    Medium, required for good emulation of process/pthread model.

  Title:       MULTIPLE ATEXIT() FUNCTIONS
  Description: atexit() supports registration of only single function called on
               exit().  It should support multiple functions registered by atexit()
               or onexit() and these should be called in reverse order of
               registration when the task exits.
patacongo's avatar
patacongo committed
  Status:      Open
patacongo's avatar
patacongo committed

  Title:       MMAN.H
patacongo's avatar
patacongo committed
  Description: Implement sys/mman.h and functions
  Status:      Open
  Priority:    Low

  Title:       WAIT.H
patacongo's avatar
patacongo committed
  Description: Implement sys/wait.h and functions.  Consider implementing wait,
               waitpid, waitid.  At present, a parent has no information about
               child tasks.
patacongo's avatar
patacongo committed

patacongo's avatar
patacongo committed
               Update: A simple but usable version of waitpid() has been included.
               This version is not compliant with all specifications and can be
               enabled with CONFIG_SCHED_WAITPID. 
patacongo's avatar
patacongo committed
  Status:      Open
  Priority:    Low

  Title:       MISSING ERRNO SETTINGS
patacongo's avatar
patacongo committed
  Description: Several APIs do not set errno.  Need to review all APIs.
  Status:      Open
  Priority:    Medium, required for standard compliance (but makes the
               code bigger)

patacongo's avatar
patacongo committed
  Title:       TICKLESS OS
  Description: On a side note, I have thought about a tick-less timer for the OS
               for a long time.  Basically we could replace the periodic system
               timer interrupt with a one-shot interval timer programmed for the
               next interesting event time.  That is one way to both reduce the
               timer interrupt overhead and also to increase the accuracy of
               delays.

               Current timer processing is in sched/sched_processtimer.c:

               1) Calls clock_timer() which just increments a counter (the system
                  timer -- basically "up-time"). This is only used when code asks
                  for the current time.  In a tickless OS, some substitute answer
                  for the question "What time is it?" would need to be developed.
                  You could use an RTC? Or maybe logic that gets the time until the
                  next interval expiration and computes the current time. The
                  solution is not too difficult, but depends on a hardware solution.

               2) Calls wd_timer() which handles the link list of ordered events:
                  Each timer event is saved with the delta time to the next event
                  in the list. So an interval timer would be perfect to implement this.

               3) sched_process_timeslice(). Then there is round-robin time-slicing.

patacongo's avatar
patacongo committed
  Status:      Open
  Priority:    Low

o On-demand paging (sched/)
  ^^^^^^^^^^^^^^^^^^^^^^^^^

  Title:       ON-DEMAND PAGE INCOMPLETE
  Description: On-demand paging has recently been incorporated into the RTOS.
               The design of this feature is described here:
patacongo's avatar
patacongo committed
               http://www.nuttx.org/NuttXDemandPaging.html.
               As of this writing, the basic feature implementation is
               complete and much of the logic has been verified.  The test
               harness for the feature exists only for the NXP LPC3131 (see
               configs/ea3131/pgnsh and locked directories).  There are
               some limitations of this testing so I still cannot say that
               the feature is fully functional.
patacongo's avatar
patacongo committed
  Status:      Open
  Priority:    Medium-Low

patacongo's avatar
patacongo committed
o Other core OS logic
  ^^^^^^^^^^^^^^^^^^^

  Title:       GET_ENVIRON_PTR()
patacongo's avatar
patacongo committed
  Description: get_environ_ptr() (sched/sched_getenvironptr.c) is not implemented.
               The representation of the the environment strings selected for
               NutX is not compatible with the operation.  Some significant
               re-design would be required to implement this funcion and that
               effort is thought to be not worth the result.
  Status:      Open
  Priority:    Low -- There is no plan to implement this.

  Title:       TIMER_GETOVERRUN()
patacongo's avatar
patacongo committed
  Description: timer_getoverrun() (sched/timer_getoverrun.c) is not implemented.
  Status:      Open
  Priority:    Low -- There is no plan to implement this.

patacongo's avatar
patacongo committed
o Memory Managment (mm/)
  ^^^^^^^^^^^^^^^^^^^^^^

  Title:       FREE MEMORY ON TASK EXIT
patacongo's avatar
patacongo committed
  Description: Add an option to free all memory allocated by a task when the
               task exits. This is probably not be worth the overhead for a
               deeply embedded system.
               There would be complexities with this implementation as well
               because often one task allocates memory and then passes the
               memory to another:  The task that "owns" the memory may not
               be the same as the task that allocated the memory.
patacongo's avatar
patacongo committed
  Status:      Open
  Priority:    Medium/Low, a good feature to prevent memory leaks but would
               have negative impact on memory usage and code size.

o Signals (sched/, arch/)
  ^^^^^^^^^^^^^^^^^^^^^^^

  Title:       STANDARD SIGNALS
patacongo's avatar
patacongo committed
  Description: 'Standard' signals and signal actions are not supported.
               (e.g., SIGINT, SIGCHLD, SIGSEGV, etc).
  Status:      Open
  Priority:    Low, required by standards but not so critical for an
               embedded system.

  Title:       SIGEV_THREAD
  Description: sig_notify() logic does not support SIGEV_THREAD; structure
               struct sigevent does not provide required members sigev_notify_function
               or sigev_notify_attributes.
  Status:      Low, there are alternative designs.  However, these features
               are required by the POSIX standard.
  Priority:    Low for now

patacongo's avatar
patacongo committed
o pthreads (sched/)
  ^^^^^^^^^^^^^^^^^

  Title:       CANCELLATION POINTS
patacongo's avatar
patacongo committed
  Description: pthread_cancel():  Should implement cancellation points and
               pthread_testcancel()
  Status:      Open
  Priority:    Low, probably not that useful
patacongo's avatar
patacongo committed
o C++ Support
patacongo's avatar
patacongo committed
  ^^^^^^^^^^^

  Title:       USE OF SIZE_T IN NEW OPERATOR
  Description: The argument of the 'new' operators should take a type of
               size_t (see libxx/libxx_new.cxx and libxx/libxx_newa.cxx).  But
               size_t has an unknown underlying.  In the nuttx sys/types.h
               header file, size_t is typed as uint32_t (which is determined by
               architecture-specific logic).  But the C++ compiler may believe
Loading
Loading full blame...