NuttX TODO List ^^^^^^^^^^^^^^^ Task/Scheduler ^^^^^^^^^^^^^^ - When a tasks exits, shouldn't all of its child pthreads also be terminated? - Should task_delete() cause atexit() function to be called? - Implement sys/mman.h and functions - Implement sys/wait.h and functions - Implement priority inheritance - Make the system timer frequency configurable via defconfig. See: _POSIX_CLOCKRES_MIN in limits.h CLK_TCK in time.h MSEC_PER_TICK in sched/clock_internal.h - Consider implementing wait, waitpid, waitid. At present, a parent has no information about child tasks. o Memory Managment - 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. o Signals - 'Standard' signals and signal actions are not supported. o pthreads - pthread_cancel(): Should implemenent cancellation points and pthread_testcancel() o Libraries - There seems to be some kind of failure in the mutual exclusion logic on buffered, "standard," IO. - If two threads try fflush-ing at the same time, there is corruption of the output. - Yhere is a failure in the examples/ostest POSIX timer test when CONFIG_DEBUG is enabled. This is almost certainly yet another case where printf (or its kin) are being called from a sensitive area in the OS. - I am now seeing the same thing with the dm320 barrier test. Apparently printf has some thread safety issues. o File system - Add some concept like mount points to handle mounted "real" filesystems. o Console Output o Documentation - Document fs/ & driver/ logic - Document C-library APIs o Build system - Names under arch are incorrect. These should hold processor architectures. c5471 should be arm7 dm320 should be arm9 pjrc-8051 should be 805x - SoC-specific logic should be in subdirectories under arch/. Eg. arm7/include/c5471 should hold c5471 specific header files - configs/pjrc-8051 should be configs/pjrc-87c52 o Applications & Tests o C5471 o DM320 o pjrc-8052 / MCS51 * Current status: - Basic OS task management seems OK - Fails when interrupts enabled. The stack pointer is around 0x6e before the failure occurs. It looks like some issue when the stack pointer moves from the directly to indirectly addressable region (0x80 boundary). - Work on the 8052 is temporarily on hold - Use timer 0 as system timer. Timer 2 is needed for second UART. Logic is implemented, but there needs to be a system configuration to change the ticks-per-second value to match the timer interrupt rate - During build, there are several integer overflows reported: gmtime_r.c aroud lines 184 and 185 clock_initialize.c at line 107 pthread_create.c at 330 sighand.c at 225 and 244