On 2/12/20 3:39 am, Gedare Bloom wrote: > > > On Tue, Dec 1, 2020 at 12:33 AM Sebastian Huber > <sebastian.hu...@embedded-brains.de > <mailto:sebastian.hu...@embedded-brains.de>> > wrote: > > On 01/12/2020 07:49, Chris Johns wrote: > > > On 1/12/20 5:31 pm, Sebastian Huber wrote: > >> On 30/11/2020 21:43, Joel Sherrill wrote: > >>> On Mon, Nov 30, 2020 at 1:06 PM Sebastian Huber > >>> <sebastian.hu...@embedded-brains.de > <mailto:sebastian.hu...@embedded-brains.de> > >>> <mailto:sebastian.hu...@embedded-brains.de > <mailto:sebastian.hu...@embedded-brains.de>>> wrote: > >>> On 30/11/2020 20:00, Joel Sherrill wrote: > >>> > Applications can use something like: > >>> > > >>> > #if __RTEMS_MAJOR__ >= 5 > >>> > > >>> > POSIX threads are always enabled ... > >>> > > >>> > #endif > >>> > > >>> > This is a change to our public API that was completely > unnecessary. > >>> > > >>> > We do not require changes to application code when it can be > >>> avoided. > >>> If you enable the POSIX API, then you don't have to change > >>> anything in > >>> your application. You can use now more of the POSIX API without > >>> having > >>> to enable it explicitly. It is up to you if you want to rely on > >>> this or not. > >>> > >>> > >>> What about rtems-libbsd? It fails to build because of this flag having > changed > >>> meaning. > >>> > >>> I think we broke a contract on what the meaning of a published > >>> feature macro means. > >> Sorry, I still don't understand the problem. You always had to build > libbsd with > >> a BSP which was configured with --enable-posix. > >> > >> Since now more POSIX APIs are enabled by default, we may remove this > check from > >> libbsd. However, this requires someone with enough time to implement > and > test this. > > The semantics of what is being offered by the option has changed. Yes > adding the > > option does make things build but it is now inconsistent in what it > covers and > > how it is being detected and used. Papering over this only delays the > point in > > time we need to address it > > What is offered by default changed. What didn't change is the meaning of > RTEMS_POSIX_API define. What you want to do now is making use of the > additional POSIX features enabled by default in RTEMS 5 and later. This > is the problem we have to address. I suggested to use the > __RTEMS_MAJOR__ to figure out what is enabled by default. > > > IMO: the meaning of RTEMS_POSIX_API remains consistent. It means RTEMS was > ./configure'd with --enable-posix if true, otherwise it is false. > > What that _implies_ to the application does change, but I am opposed to taking > any action to modify the behavior we have. The concerns noted by Joel and the > advice by Sebastian should be codified in documentation to clarify the > situation > for users who care about what POSIX features are always available vs > conditioned > on RTEMS_POSIX_API, and how the set of default features may change over time. > What really matters is whether we want to ensure forward compatibility for the > existing defaults. I think that makes sense.
To me 'RTEMS_POSIX_API = False' does not do what it says. The POSIX API is still present except for signals and they should only be used when porting code. A new option in the new build system called 'RTEMS_POSIX_SIGNALS' would be better long term. > As I understand the historical introduction of the option was to keep the code > size small, and there are still POSIX features that can pull in excess code > that > may be hard to 'prune' (by LTO), then it makes sense to keep the feature > option. My understanding of the original question was in relation to libbsd. Currently to build libbsd you need 'RTEMS_POSIX_API = True' which translates to enable POSIX signals and I think this is ironic because libbsd does not support signals! :) This appears confusing to me. Chris > > Can the enable-posix option be removed and always enabled? We minimise > the > > executable size automatically. Always being enabled means the option in > the > > header is always true and any dependent package or build system can > happily > > continue and be updated when it suites. > I didn't remove the RTEMS_POSIX_API completely, since the signals have > an impact on the size of the Thread_Control and may pull in some extra > code which is probably very seldom used (e.g. the sporadic server > stuff). I tried hard to make sure that the additional POSIX features > enabled now by default don't add an overhead to applications which don't > use them. An increased Thread_Control size affects all applications. Thanks. I was wondering about the reason. Why not make it clear by adding RTEMS_POSIX_SIGNALS? This would minimise the churn. > > > > Failing that can the default always be true? > Yes, this would be an option, but if we do this, then we make a change > which impacts existing application configurations. I still feel removing RTEMS_POSIX_API and making it always true is the best path. Chris _______________________________________________ devel mailing list devel@rtems.org http://lists.rtems.org/mailman/listinfo/devel