[Home]RealtimeConfiguratonProposal

LinuxCNCKnowledgeBase | RecentChanges | PageIndex | Preferences | LinuxCNC.org

Showing revision 4

Adapting LinuxCNC configure to multiple realtime environments

The current configuration options for LinuxCNC regarding 'real time environments' are:

I believe the underlying assumptions at the time were:

Several options for realtime Linux have appeared since, which are:

These two platforms provide new options:

Also, given reasonable latency of one of the user RT process schemes, it becomes entirely feasible to use user-mode device drivers.

It should be obvious that these new options cannot be consistently adressed with the current configuration assumptions. Realtime does not imply kernel threads exclusively anymore, and User process mode does not imply 'useless so no drivers' please. Also, user RT modules will do I/O, hence rtapi_app needs to be setuid root in this case.

As work progresses on different branches in parallel, configuration problems will likely be solved ad-hoc (ad-hack?) and conflicts will arise during merge, also with the consequence of an even more incoherent set of options.

Therefore, I propose to change the configuration namespace as follows:

--with-realtime will be deprecated in its current form, and replaced by:

--with-threads= one of:

Build system: there are two styles, 'kbuild' (kernel modules) and 'user-dso' (userland shared objects). The thread style implies a build system: posix, xenomai-user, rt-preempt-user imply 'user-dso', the others imply 'kbuild'.

Building hardware drivers can be controlled with --enable-drivers. It is default 'yes' except for --with-threads=posix. Some hardware drivers will build as kernel modules only, some as user shared objects, some may build as both; in that case the Submakefile needs to test for BUILD_SYS having the proper value.

The cpp symbols 'SIM', 'SIMULATOR', and 'RTAPI_SIM' have been removed as they do not make sense any more. A simulator configuration is '--with-threads=posix'.

The shell/Makefile? variables are:

THREADS= one of: posix, rt-preempt-user,rt-preempt-kernel, xenomai-user, xenomai-kernel, rtai BUILD_DRIVERS=yes or no BUILD_SYSTEM=kbuild or user-dso

THREADS is reflected in config.h as one of the following defined: RTAPI_POSIX RTAPI_RT_PREEMPT_USER RTAPI_RT_PREEMPT_KERNEL RTAPI_XENOMAI_USER RTAPI_XENOMAI_KERNEL RTAPI_RTAI

BUILD_DRIVERS is conditionally defined in config.h too.

BUILD_SYSTEM is reflected in config.h as either BUILD_SYSTEM_KBUILD or BUILD_SYSTEM_USER_DSO defined.

Make setuid:

this has been adapted to take care of the case 'threads=posix and drivers enabled', which requires rtapi_app to be setuid root.

Michael Haberler


LinuxCNCKnowledgeBase | RecentChanges | PageIndex | Preferences | LinuxCNC.org
This page is read-only. Follow the BasicSteps to edit pages. | View other revisions | View current revision
Edited October 25, 2012 6:27 pm by MichaelHaberler (diff)
Search:
Published under a Creative Commons License