diff -ur src/ext/artlinux/art_ec/ArtExecutionContext.cpp.orig src/ext/ec/artlinux/ArtExecutionContext.cpp --- src/ext/artlinux/art_ec/ArtExecutionContext.cpp.orig 2012-05-24 23:18:13.613646037 +0900 +++ src/ext/artlinux/art_ec/ArtExecutionContext.cpp 2012-06-12 18:52:25.216903029 +0900 @@ -29,8 +29,16 @@ namespace RTC { ArtExecutionContext::ArtExecutionContext() - : PeriodicExecutionContext() - { + : PeriodicExecutionContext(), + m_priority(ART_PRIO_MAX-1) + { + rtclog.setName("ArtEC"); + coil::Properties& prop(Manager::instance().getConfig()); + + // Priority + getProperty(prop, "exec_cxt.periodic.priority", m_priority); + getProperty(prop, "exec_cxt.periodic.art.priority", m_priority); + RTC_DEBUG(("Priority: %d", m_priority)); } ArtExecutionContext::~ArtExecutionContext() @@ -40,7 +48,8 @@ int ArtExecutionContext::svc(void) { - if (art_enter(ART_PRIO_MAX-1, ART_TASK_PERIODIC, m_usec) == -1) + int usec = static_cast(1.0e6/m_profile.rate); + if (art_enter(m_priority, ART_TASK_PERIODIC, usec) == -1) { std::cerr << "fatal error: art_enter" << std::endl; } diff -ur src/ext/artlinux/art_ec/ArtExecutionContext.h.orig src/ext/artlinux/art_ec/ArtExecutionContext.h --- src/ext/artlinux/art_ec/ArtExecutionContext.h.orig 2012-05-24 23:18:13.617202824 +0900 +++ src/ext/artlinux/art_ec/ArtExecutionContext.h 2012-06-12 18:35:44.618520333 +0900 @@ -38,6 +38,22 @@ ArtExecutionContext(); virtual ~ArtExecutionContext(); virtual int svc(void); + + template + void getProperty(coil::Properties& prop, const char* key, T& value) + { + if (prop.findNode(key) != 0) + { + T tmp; + if (coil::stringTo(tmp, prop[key].c_str())) + { + value = tmp; + } + } + } + + private: + int m_priority; }; }; diff -ur src/ext/artlinux/art_ec/Makefile.am.orig src/ext/artlinux/art_ec/Makefile.am --- src/ext/artlinux/art_ec/Makefile.am.orig 2012-05-24 23:18:13.617202824 +0900 +++ src/ext/artlinux/art_ec/Makefile.am 2012-06-12 18:49:09.984828415 +0900 @@ -19,7 +19,7 @@ module_LTLIBRARIES = ArtExecutionContext.la ArtExecutionContext_la_SOURCES = ArtExecutionContext.cpp ArtExecutionContext.h -ArtExecutionContext_la_LDFLAGS = -module -shared +ArtExecutionContext_la_LDFLAGS = -module -shared $(ARTLIB) ArtExecutionContext_la_FLAGS = -L$(top_builddir)/src/lib/rtm/.lib ArtExecutionContext_la_LIBADD = $(top_builddir)/src/lib/rtm/libRTC.la --- src/ext/artlinux/art_ec/Makefile.in.org 2012-06-15 19:45:04.104162375 +0900 +++ src/ext/artlinux/art_ec/Makefile.in 2012-06-15 19:45:21.820589893 +0900 @@ -230,7 +230,7 @@ moduledir = $(pkgdatadir)/modules module_LTLIBRARIES = ArtExecutionContext.la ArtExecutionContext_la_SOURCES = ArtExecutionContext.cpp ArtExecutionContext.h -ArtExecutionContext_la_LDFLAGS = -module -shared +ArtExecutionContext_la_LDFLAGS = -module -shared $(ARTLIB) ArtExecutionContext_la_FLAGS = -L$(top_builddir)/src/lib/rtm/.lib ArtExecutionContext_la_LIBADD = $(top_builddir)/src/lib/rtm/libRTC.la all: all-am