This post describes some of the proposals, commitments, and debates for the RTEMS CVS since the 4.10 release, oldest to newest. rtems-4.10 was cut in 2010, some of these changes may have been back-ported already to the 4.10 release, which happened in February of 2011.
June and July, 2010
A few important changes were made in June and July that did not propagate to the 4.10 branch. (The actual cutting for 4.10 is a bit confusing.)
The ITRON API was removed.
Together with Eugen Leontie, I submitted the SPARC-V9 (sparc64) port of RTEMS, which was developed on the Niagara and Serengeti targets using the Simics functional simulator. [PRs 1560--1565]
Joel pushed a percpu patch that includes some controversial macros for accessing structure fields using compile-time offsets. This is the first in a series of patches to introduce SMP support to RTEMS, which is an ongoing effort.
Sebastian introduced the USB stack port, which has not yet been merged.
Sebastian requested a file systems test suite.
I proposed a new Periodic Manager for handling periodic tasks in the SuperCore. The Object model for the new Manager is not consistent with other Score objects, so the new Manager has not been merged.
I submitted a red-black tree for the SuperCore, which has been committed in April 2011. There are some improvements that were requested in the PR that were not made, namely to add support for non-integer keys and to consider replacing the bdbuf AVL with the red-black tree. Both of these would make good open projects.
August 2010
August marked the tail of the GSOC, so a lot of the commits were related to GSOC 2010 projects, in no particular order
- Bharath Suri improved the RTEMS coverage to 96%, up from 80% when he started.
- Alin Rus submitted his AIO improvements, which were slowly merged; the PR is still open.
- Yann Sionneau's MilkyMist BSP was committed; the PR is still open, and Michael Walle submitted a rename patch that hasn't been merged.
- Zhang Wenjie's Sequenced Initialization is finished but not committed.
- Claudio Silva's ATAPI/SATA driver is finished but uncommitted.
- Bob Kuo's Parrot work was fine on the RTEMS side, but there were issues with the Parrot side, although some progress was made.
- Vinu Rajashekhar successfully ported GCC Go to RTEMS with all tests passed.
- I submitted my modular scheduler framework, which supports the fixed priority scheduler.
Sebastian Huber submitted an improvement to the memory allocator that provides protection for heap blocks.
Sebastian also proposed some API changes to Chains in the SuperCore. These changes are pervasive to Chain internals and provide better encapsulation of the Chain Handler. Code should not try accessing chain nodes directly. [See also: PR1711]
Sebastian requested that RTEMS consider moving from GNU intrinsics to the C99 standard. Ralf said that C99 support is incomplete in GCC and this issue has been postponed.
Joel started to use the Coverity Scanner tool to check for bugs and other code inconsistencies. At first, PRs raised due to Coverity scans were assigned by Coverity ID (CID), but the forward-compatibility, uniqueness, and availability of Coverity reports were listed at reasons to avoid using CID in ChangeLogs. Although consensus was not reached, CIDs no longer appear in ChangeLogs.
September 2010
Joel posted a patchset to add libdbm support, but it has not been committed.
Joel also proposed changes for pthreads/newlib; the changes were committed, although the PR is still open.
Sebastian pushed some macros for generic bit manipulations to the shared BSP utility.h file, which caused a bit of debate among the developers. Two issues were raised: first, whether such macros are useful; second, whether such macros should reside in the BSP_ namespace. The usefulness issue was not settled, but the macros were allowed to stay with a rename to include the BSP_ namespace.
October 2010
Joel posted a patchset on behalf of Marcello Presulli adding the LWIP networking stack. LWIP is proposed as an alternate to the BSD networking stack that RTEMS uses; the BSD stack does not work on targets with 256K ROM and 64K RAM. Because of concerns with maintenance and management of multiple networking stacks, the patchset will not be committed. Instead, an approach for connecting LWIP to an RTEMS build needs to be developed. There is an open project page, although it lacks details. Ralf is opposed to the idea and thinks there should be a single networking stack.
November 2010
Joel applied the clang tool to detect code inconsistencies.
December 2010
Joel posted and committed the scheduler simulator, an in-tree project that tests the scheduling subsystem as a host-based application.
Sebastien Bourdeauducq posted FTPD patches [1722,1724] that fix FTPD paths with spaces and adds FTPD authentication.
I posted an EDF scheduler, although that patchset is probably now out-of-date.
Sebastian Huber raised an issue about the lack of atomic timestamps. This has not been resolved.
Sebastian committed a change that added initialization of the loop-back interface during normal initialization of rtems_bsdnet_initialize_network. Existing code that attempts to use rtems_bsdnet_loopattach will fail.
January 2011
Jennifer Averett introduced an SMP patchset that adds an array of percpu structures for managing per-core data in an SMP configuration. There were some issues raised, including the outstanding problem with the existing percpu implementation. An area of concern continues to be the creep of BSP-like features into the SuperCore and the integration of a good spinlock API.
Sebastian raised an issue with the behavior of malloc(0): in RTEMS, it returns NULL; in FreeBSD and Linux, it returns a pointer. After much debate, it was decided to stay with the original behavior, so malloc(0) will continue to return NULL in RTEMS.
February 2011
Joel refactored the scheduler configuration to simplify it so that only one scheduler implementation can be configured. His change, while reasonable, added C99 struct initializers that break with C++. Peter Dufualt quickly pointed this out and it was corrected. Ralf made a complaint about the general use of initializers within the confdefs.h file, although no constructive alternative for configuring the scheduler has been put forth. Filesystem configuration is similarly done.
Jennifer posted a simple priority scheduler that was merged without much complaint. This patch gave OAR developers some experience with the modular scheduler framework; it is hoped that this scheduler can benefit TinyRTEMS, although the O(n) behavior is a concern.
Peter Dufault noticed that the VERSION file was out-of-date, and has been for awhile. This has been fixed.
Jennifer pushed i386 irq support into the libchip/serial/ns16550 driver in anticipation of a refactoring of the i386 BSP serial drivers to be BSP-independent, which should help porting Microwindows to more platforms that can support a libchip-based serial mouse driver.
Sebastian committed a change to the shared bsp/console.c file that alters how console devices are initialized. This affected the sparc64 console [1770], and possibly other console drivers too. The
There was some debate about the use of extern in header files. Ralf put forth the idea of requiring that all header files declare functions extern or static explicitly. No consensus was reached, and I suspect that functions will continue to be declared extern both implicitly and explicitly.
RTEMS 4.10 and 4.9.5 were released.
March 2011
The i386ex and ts_386ex BSPs were removed.
The erc32 console driver, which was replaced last year [1506], was updated by Joel to include polled mode as the default behavior.
Joel introduced and committed a new serial mouse driver under libmisc that is BSP-independent, and adapted the pc386 serial mouse to use the new driver.
Sebastian started work on bringing RTEMS support to the ARM Cortex-M by requesting tool support for ARM EABI 5. The request was postponed, but we can expect to see more work in this area coming down the pipe.
Jennifer committed a change to read the maximum possible SMP processors from a configuration variable. At first the new variable was a namespace violation, but this was fixed [1773]. Now SMP initialization can probe for the number of available cores, up to a configurable maximum.
Joel pushed a change that converted an strlen to strnlen call that was flagged by Coverity. Some debate was raised about the necessity and validity of the change. Joel reverted the change. This adds some doubt in my mind about committing changes suggested by Coverity directly to the CVS.
RTEMS was accepted as a mentoring organization for GSOC 2011. And that wraps up this post. Tune-in next time...
0 comments:
Post a Comment