orocos_toolchain, support for Xenomai 3
Huy Cong Vu <[email protected]> Fri, 27 Feb 2015 15:24:19 +0100 (CET)
| Newsgroups | gmane.science.robotics.orocos.devel |
|---|---|
| Message-ID | <[email protected]> |
Hello everyone, I recently made a Xenomai 3 support patch for orocos toolchain, fuerte branch, that I attach in this message. For now it is compilable against xenomai-3 next branch (need a small patch for Xenomai 3 too, that I also attach in here). However, I dont know which test to run to know if the new toolchain still working properly, and my patch is mainly for Xenomai support, so the flags that I inserted in may corrupt build for other sys & arch. If someone have time to take a look at my patch and do some necessary modifications it will be very helpful for me. I run my 1st test with 1 of my .launch file using deployer-xenomai, and it can't read the args (which indicate some .ops file to run). So there definetely a problem somewhere. Some infos about my platform: ROS desktop-full fuerte orocos fuerte, patch with rtt-xenomai-3.patch & ocl-xenomai-3.patch following xenomai-3-next most recent commit, patch with xenomai-3-extras.patch Thanks for spend your time to read this :) -- Huy Cong Wandercraft SAS -- Orocos-Dev mailing list [email protected] http://lists.mech.kuleuven.be/mailman/listinfo/orocos-dev
ocl-xenomai-3.patch
(text/x-patch, 6.8 KB)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index b2bb250..b7c670b 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -107,11 +107,16 @@ list(APPEND CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/config")
# This is the first in the include path.
INCLUDE_DIRECTORIES( ${PROJ_SOURCE_DIR} ${PROJ_BINARY_DIR}/ocl )
+# Xeno-config
+
+execute_process(COMMAND xeno-config --skin=native --ldflags OUTPUT_VARIABLE XENOMAI_LDFLAGS OUTPUT_STRIP_TRAILING_WHITESPACE)
+execute_process(COMMAND xeno-config --skin=native --cflags OUTPUT_VARIABLE XENOMAI_CFLAGS OUTPUT_STRIP_TRAILING_WHITESPACE)
+
# Put your 'flags' inhere if you want them to apear in the
# orocos-components.pc file. Various .cmake scripts below do
# this.
-SET( ENV{OROCOS_COMPONENTS_CFLAGS} "")
-SET( ENV{OROCOS_COMPONENTS_LINKFLAGS} "")
+SET( ENV{OROCOS_COMPONENTS_CFLAGS} "${XENOMAI_CFLAGS}")
+SET( ENV{OROCOS_COMPONENTS_LINKFLAGS} "${XENOMAI_LDFLAGS}")
SET( ENV{OROCOS_COMPONENTS_REQUIRES} "")
INCLUDE(${PROJ_SOURCE_DIR}/config/component_rules.cmake)
diff --git a/helloworld/CMakeLists.txt b/helloworld/CMakeLists.txt
index 6f33e4e..ddf474c 100644
--- a/helloworld/CMakeLists.txt
+++ b/helloworld/CMakeLists.txt
@@ -6,10 +6,10 @@ IF ( BUILD_HELLOWORLD )
FILE( GLOB SRCS [^.]*.cpp )
FILE( GLOB HPPS [^.]*.hpp )
- ADD_EXECUTABLE( helloworld ${SRCS} )
+ orocos_executable( helloworld ${SRCS} )
orocos_component( orocos-ocl-helloworld ${SRCS} )
SET_TARGET_PROPERTIES( orocos-ocl-helloworld
- PROPERTIES COMPILE_FLAGS "-DOCL_COMPONENT_ONLY" )
+ PROPERTIES DEFINE_SYMBOL OCL_COMPONENT_ONLY )
TARGET_LINK_LIBRARIES( helloworld ${OROCOS-RTT_LIBRARIES} orocos-ocl-taskbrowser)
SET_TARGET_PROPERTIES( helloworld PROPERTIES
diff --git a/lua/CMakeLists.txt b/lua/CMakeLists.txt
index 238cf2c..e43def5 100644
--- a/lua/CMakeLists.txt
+++ b/lua/CMakeLists.txt
@@ -47,7 +47,7 @@ if(BUILD_LUA_RTT)
orocos_executable(rttlua rtt.cpp LuaComponent.cpp)
program_add_deps(rttlua lua-repl orocos-ocl-deployment ${LUA_LIBRARIES} ${OROCOS-RTT_LIBRARIES} ${EXTRA_DEPS} ${EXTRA_LIBRARIES} )
target_link_libraries(orocos-ocl-lua ${LUA_LIBRARIES} ${OROCOS-RTT_LIBRARIES} )
- set_target_properties(orocos-ocl-lua PROPERTIES COMPILE_FLAGS "-DOCL_COMPONENT_ONLY")
+ set_target_properties(orocos-ocl-lua PROPERTIES DEFINE_SYMBOL OCL_COMPONENT_ONLY)
install(TARGETS rttlua RUNTIME DESTINATION bin)
install(PROGRAMS ../bin/rttlua DESTINATION bin) # The shell script
@@ -56,20 +56,20 @@ if(BUILD_LUA_RTT)
# Handle curses/readline
if(NOT CURSES AND NOT READLINE)
message(STATUS "Building without readline/curses support. If you want support for this try someting like 'sudo aptitude install libncurses5-dev libreadline5-dev'")
- set(LUA_REPL_FLAGS "-DLUA_ANSI")
+ set(LUA_REPL_DEFINES LUA_ANSI)
else(NOT CURSES AND NOT READLINE)
- set(LUA_REPL_FLAGS "-DLUA_USE_LINUX")
+ set(LUA_REPL_DEFINES LUA_USE_LINUX)
target_link_libraries(lua-repl "readline" ${CURSES_IMPL} "dl" "history" )
endif(NOT CURSES AND NOT READLINE)
- set_target_properties(lua-repl PROPERTIES COMPILE_FLAGS "${LUA_REPL_FLAGS}")
+ set_target_properties(lua-repl PROPERTIES DEFINE_SYMBOL "${LUA_REPL_DEFINES}")
# CORBA version
if(BUILD_LUA_RTT_CORBA AND OROCOS-RTT_CORBA_FOUND)
orocos_executable(rttlua-corba rtt.cpp LuaComponent.cpp)
program_add_deps(rttlua-corba lua-repl orocos-ocl-deployment ${LUA_LIBRARIES} ${OROCOS-RTT_CORBA_LIBRARIES} orocos-ocl-deployment-corba ${EXTRA_DEPS} ${EXTRA_LIBRARIES} )
- set_target_properties(rttlua-corba PROPERTIES COMPILE_FLAGS "-DLUA_RTT_CORBA")
+ set_target_properties(rttlua-corba PROPERTIES DEFINE_SYMBOL LUA_RTT_CORBA)
install(TARGETS rttlua-corba RUNTIME DESTINATION bin)
install(PROGRAMS ../bin/rttlua DESTINATION bin RENAME rttlua-corba) # The shell script
@@ -82,13 +82,14 @@ if(BUILD_LUA_RTT)
orocos_executable(rttlua-tlsf rtt.cpp LuaComponent.cpp)
add_library(lua-repl-tlsf STATIC lua-repl.c)
target_link_libraries(lua-repl-tlsf "readline" ${CURSES_IMPL} "dl" "history" ${LUA_LIBRARIES})
- set_target_properties(lua-repl-tlsf PROPERTIES COMPILE_FLAGS "-DOROCOS_TARGET=${OROCOS_TARGET} -DLUA_RTT_TLSF ${LUA_REPL_FLAGS}")
+ set_target_properties(lua-repl-tlsf PROPERTIES DEFINE_SYMBOL "OROCOS_TARGET=${OROCOS_TARGET};LUA_RTT_TLSF;${LUA_REPL_DEFINES}")
add_library(tlsf_rtt STATIC tlsf.c tlsf_rtt.c)
set_target_properties(tlsf_rtt PROPERTIES COMPILE_FLAGS "-DTLSF_STATISTIC -DCHECK_DOUBLE_FREE -fPIC -Wextra -Wall -Werror")
- set_target_properties(orocos-ocl-lua-tlsf PROPERTIES COMPILE_FLAGS "-DOCL_COMPONENT_ONLY -DLUA_RTT_TLSF")
- set_target_properties(rttlua-tlsf PROPERTIES COMPILE_FLAGS "-DLUA_RTT_TLSF")
+ set_target_properties(orocos-ocl-lua-tlsf PROPERTIES DEFINE_SYMBOL "OCL_COMPONENT_ONLY;LUA_RTT_TLSF")
+
+ set_target_properties(rttlua-tlsf PROPERTIES DEFINE_SYMBOL LUA_RTT_TLSF)
program_add_deps(rttlua-tlsf tlsf_rtt lua-repl-tlsf orocos-ocl-deployment ${LUA_LIBRARIES} ${OROCOS-RTT_LIBRARIES} ${EXTRA_DEPS} ${EXTRA_LIBRARIES} )
target_link_libraries(orocos-ocl-lua-tlsf tlsf_rtt ${LUA_LIBRARIES} ${OROCOS-RTT_LIBRARIES})
diff --git a/lua/plugins/CMakeLists.txt b/lua/plugins/CMakeLists.txt
index ca02efe..90ea287 100644
--- a/lua/plugins/CMakeLists.txt
+++ b/lua/plugins/CMakeLists.txt
@@ -7,5 +7,5 @@ target_link_libraries(rttlua-plugin ${LUA_LIBRARIES})
if(BUILD_LUA_RTT_TLSF)
orocos_plugin( rttlua-tlsf-plugin lua_plugin.cpp ../rtt.cpp)
target_link_libraries(rttlua-tlsf-plugin tlsf_rtt ${LUA_LIBRARIES})
- set_target_properties(rttlua-tlsf-plugin PROPERTIES COMPILE_FLAGS "-DLUA_RTT_TLSF")
+ set_target_properties(rttlua-tlsf-plugin PROPERTIES DEFINE_SYMBOL LUA_RTT_TLSF)
endif(BUILD_LUA_RTT_TLSF)
diff --git a/taskbrowser/TaskBrowser.cpp b/taskbrowser/TaskBrowser.cpp
index 49beca8..7e74447 100644
--- a/taskbrowser/TaskBrowser.cpp
+++ b/taskbrowser/TaskBrowser.cpp
@@ -113,9 +113,10 @@
#endif
// we need to declare it since Xenomai does not declare it in any header
+// xeno_sigwinch_handler is deprecated in Xenomai 3
#if defined(USE_SIGNALS) && defined(OROCOS_TARGET_XENOMAI) && CONFIG_XENO_VERSION_MAJOR == 2 && CONFIG_XENO_VERSION_MINOR >= 5
extern "C"
-int xeno_sigwinch_handler(int sig, siginfo_t *si, void *ctxt);
+int cobalt_sigshadow_handler(int sig, siginfo_t *si, void *ctxt);
#endif
namespace OCL
{
@@ -166,8 +167,9 @@ namespace OCL
#if defined(USE_SIGNALS)
void TaskBrowser::rl_sigwinch_handler(int sig, siginfo_t *si, void *ctxt) {
+// xeno_sigwinch_handler is deprecated in Xenomai 3
#if defined(OROCOS_TARGET_XENOMAI) && CONFIG_XENO_VERSION_MAJOR == 2 && CONFIG_XENO_VERSION_MINOR >= 5
- if (xeno_sigwinch_handler(sig, si, ctxt) == 0)
+ if (cobalt_sigshadow_handler(sig, si, ctxt) == 0)
#endif
rl_resize_terminal();
}
rtt-xenomai-3.patch
(text/x-patch, 11.9 KB)
diff --git a/UseOROCOS-RTT.cmake b/UseOROCOS-RTT.cmake
index 6c6e718..dba774f 100644
--- a/UseOROCOS-RTT.cmake
+++ b/UseOROCOS-RTT.cmake
@@ -61,6 +61,14 @@ if(OROCOS-RTT_FOUND)
set(USE_OROCOS_COMPILE_FLAGS " " )
endif (MSVC)
+ # Xeno-config
+ execute_process(COMMAND xeno-config --skin=native --ldflags OUTPUT_VARIABLE XENOMAI_LDFLAGS OUTPUT_STRIP_TRAILING_WHITESPACE)
+ execute_process(COMMAND xeno-config --skin=native --cflags OUTPUT_VARIABLE XENOMAI_CFLAGS OUTPUT_STRIP_TRAILING_WHITESPACE)
+
+ # set Xenomai flags to use_orocos_compile_flags
+ SET( USE_OROCOS_COMPILE_FLAGS "${USE_OROCOS_COMPILE_FLAGS} ${XENOMAI_CFLAGS}")
+ SET( USE_OROCOS_LINK_FLAGS "${USE_OROCOS_LINK_FLAGS} ${XENOMAI_LDFLAGS}")
+
# On windows, the CMAKE_INSTALL_PREFIX is forced to the Orocos-RTT path.
# There's two alternatives to disable this behavior:
#
@@ -461,6 +469,10 @@ macro( orocos_typekit LIB_TARGET_NAME )
INSTALL_RPATH_USE_LINK_PATH 1
INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/lib;${CMAKE_INSTALL_PREFIX}/lib/orocos${OROCOS_SUFFIX}/types;${CMAKE_INSTALL_PREFIX}/${AC_INSTALL_DIR}"
)
+
+ orocos_add_compile_flags(${LIB_TARGET_NAME} ${USE_OROCOS_COMPILE_FLAGS})
+ orocos_add_link_flags(${LIB_TARGET_NAME} ${USE_OROCOS_LINK_FLAGS})
+
TARGET_LINK_LIBRARIES( ${LIB_TARGET_NAME} ${OROCOS-RTT_LIBRARIES} )
# On win32, typekit runtime (.dll) should go in orocos/types folder
diff --git a/config/FindXenomai.cmake b/config/FindXenomai.cmake
index 8ea44c9..ff864cb 100644
--- a/config/FindXenomai.cmake
+++ b/config/FindXenomai.cmake
@@ -30,24 +30,25 @@ if ( Xenomai_FIND_REQUIRED )
endif()
# Header files to find
-set(header_NAME native/task.h)
+set(header_NAME alchemy/task.h)
# Libraries to find
-set(XENOMAI_NAME xenomai)
-set(XENOMAI_NATIVE_NAME native)
+set(XENOMAI_NATIVE_NAME alchemy)
+set(XENOMAI_COPPERPLATE_NAME copperplate) # middleware between skin & core posix Xenomai 3
+set(XENOMAI_TRANK_NAME trank) # for compatibility with Xenomai 2
# Find headers and libraries
if(XENOMAI_ROOT_DIR)
# Use location specified by environment variable
find_program(XENOMAI_XENO_CONFIG NAMES xeno-config PATHS ${XENOMAI_ROOT_DIR}/bin NO_DEFAULT_PATH)
find_path(XENOMAI_INCLUDE_DIR NAMES ${header_NAME} PATHS ${XENOMAI_ROOT_DIR}/include PATH_SUFFIXES xenomai NO_DEFAULT_PATH)
- find_library(XENOMAI_LIBRARY NAMES ${XENOMAI_NAME} PATHS ${XENOMAI_ROOT_DIR}/lib NO_DEFAULT_PATH)
find_library(XENOMAI_NATIVE_LIBRARY NAMES ${XENOMAI_NATIVE_NAME} PATHS ${XENOMAI_ROOT_DIR}/lib NO_DEFAULT_PATH)
+ find_library(XENOMAI_COPPERPLATE_LIBRARY NAMES ${XENOMAI_COPPERPLATE_NAME} PATHS ${XENOMAI_ROOT_DIR}/lib NO_DEFAULT_PATH)
+ find_library(XENOMAI_TRANK_LIBRARY NAMES ${XENOMAI_TRANK_NAME} PATHS ${XENOMAI_ROOT_DIR}/lib NO_DEFAULT_PATH)
else()
# Use default CMake search process
find_program(XENOMAI_XENO_CONFIG NAMES xeno-config )
find_path(XENOMAI_INCLUDE_DIR NAMES ${header_NAME} PATH_SUFFIXES xenomai )
- find_library(XENOMAI_LIBRARY NAMES ${XENOMAI_NAME})
find_library(XENOMAI_NATIVE_LIBRARY NAMES ${XENOMAI_NATIVE_NAME})
endif()
@@ -62,11 +63,11 @@ endif()
# Set the include dir variables and the libraries and let libfind_process do the rest.
# NOTE: Singular variables for this library, plural for libraries this this lib depends on.
set(XENOMAI_PROCESS_INCLUDES XENOMAI_INCLUDE_DIR)
-if ( XENOMAI_LIBRARY )
- set(XENOMAI_PROCESS_LIBS XENOMAI_NATIVE_LIBRARY XENOMAI_LIBRARY )
-else( XENOMAI_LIBRARY )
+if ( XENOMAI_NATIVE_LIBRARY )
+ set(XENOMAI_PROCESS_LIBS XENOMAI_COPPERPLATE_LIBRARY XENOMAI_NATIVE_LIBRARY XENOMAI_TRANK_LIBRARY)
+else( XENOMAI_NATIVE_LIBRARY )
set(XENOMAI_PROCESS_LIBS XENOMAI_NATIVE_LIBRARY)
-endif( XENOMAI_LIBRARY )
+endif( XENOMAI_NATIVE_LIBRARY )
libfind_process(XENOMAI)
diff --git a/config/FindXenomaiPosix.cmake b/config/FindXenomaiPosix.cmake
index 9422085..80cfe6d 100644
--- a/config/FindXenomaiPosix.cmake
+++ b/config/FindXenomaiPosix.cmake
@@ -30,10 +30,10 @@ if ( XenomaiPosix_FIND_REQUIRED )
endif()
# Header files to find
-set(header_NAME pthread.h)
+set(header_NAME cobalt/pthread.h)
# Libraries to find
-set(XENOMAI_POSIX_NAME pthread_rt)
+set(XENOMAI_POSIX_NAME cobalt)
# Find headers and libraries
if(XENOMAI_ROOT_DIR)
@@ -51,8 +51,8 @@ endif()
if( XENOMAI_POSIX_LIBRARY AND XENOMAI_POSIX_INCLUDE_DIR AND NOT XENOMAI_XENO_CONFIG )
message(SEND_ERROR "Your Xenomai installation is broken: I can not determine Xenomai POSIX cflags/ldflags without xeno-config.")
else()
- execute_process(COMMAND ${XENOMAI_XENO_CONFIG} --skin=posix --ldflags OUTPUT_VARIABLE XENOMAI_POSIX_LDFLAGS OUTPUT_STRIP_TRAILING_WHITESPACE)
- execute_process(COMMAND ${XENOMAI_XENO_CONFIG} --skin=posix --cflags OUTPUT_VARIABLE XENOMAI_POSIX_CFLAGS OUTPUT_STRIP_TRAILING_WHITESPACE)
+ execute_process(COMMAND ${XENOMAI_XENO_CONFIG} --compat --skin=cobalt --ldflags OUTPUT_VARIABLE XENOMAI_POSIX_LDFLAGS OUTPUT_STRIP_TRAILING_WHITESPACE)
+ execute_process(COMMAND ${XENOMAI_XENO_CONFIG} --compat --skin=cobalt --cflags OUTPUT_VARIABLE XENOMAI_POSIX_CFLAGS OUTPUT_STRIP_TRAILING_WHITESPACE)
endif()
# Set the include dir variables and the libraries and let libfind_process do the rest.
diff --git a/rtt/CMakeLists.txt b/rtt/CMakeLists.txt
index 0062859..7e2888e 100644
--- a/rtt/CMakeLists.txt
+++ b/rtt/CMakeLists.txt
@@ -49,8 +49,12 @@ IF ( OS_NOEXCEPTIONS )
SET( CMAKE_CXX_FLAGS_ADD "${CMAKE_CXX_FLAGS_ADD} -fno-exceptions")
ENDIF ( OS_NOEXCEPTIONS )
+# Xenomai flags set
+SET( CMAKE_CXX_FLAGS_ADD "${CMAKE_CXX_FLAGS_ADD} ${XENOMAI_CFLAGS}")
+SET( CMAKE_LD_FLAGS_ADD "${CMAKE_LD_FLAGS_ADD} ${XENOMAI_LDFLAGS}")
+
IF ( OS_EMBEDDED )
- SET( CMAKE_CXX_FLAGS_ADD "${CMAKE_CXX_FLAGS_ADD} -ffunction-sections -fdata-sections")
+ SET( CMAKE_CXX_FLAGS_ADD "${CMAKE_CXX_FLAGS_ADD} ${XENOMAI_CFLAGS} -ffunction-sections -fdata-sections")
ENDIF ( OS_EMBEDDED )
### Logger
diff --git a/rtt/extras/IRQActivity.cpp b/rtt/extras/IRQActivity.cpp
index 1a9500c..fdfbfb0 100644
--- a/rtt/extras/IRQActivity.cpp
+++ b/rtt/extras/IRQActivity.cpp
@@ -35,6 +35,7 @@
* *
***************************************************************************/
+#ifdef ORO_RTT_USE_DEPRECATED
#include "IRQActivity.hpp"
#include "../ExecutionEngine.hpp"
@@ -156,3 +157,4 @@ void IRQActivity::step()
#endif // OS is xenomai
+#endif // Use of deprecated interrupt management of Xenomai 2
diff --git a/rtt/extras/IRQActivity.hpp b/rtt/extras/IRQActivity.hpp
index 1ef15f6..4231e2d 100644
--- a/rtt/extras/IRQActivity.hpp
+++ b/rtt/extras/IRQActivity.hpp
@@ -35,6 +35,7 @@
* *
***************************************************************************/
+#ifdef ORO_RTT_USE_DEPRECATED
#ifndef IRQ_ACTIVITY_HPP
#define IRQ_ACTIVITY_HPP
@@ -123,3 +124,5 @@ namespace RTT { namespace extras {
}}
#endif
+
+#endif //Use of deprecated interrupt management of Xenomai 2
diff --git a/rtt/extras/rtt-extras-fwd.hpp b/rtt/extras/rtt-extras-fwd.hpp
index 6aaed7c..99ca33d 100644
--- a/rtt/extras/rtt-extras-fwd.hpp
+++ b/rtt/extras/rtt-extras-fwd.hpp
@@ -4,7 +4,9 @@
namespace RTT {
namespace extras {
class FileDescriptorActivity;
+#ifdef ORO_RTT_USE_DEPRECATED
class IRQActivity;
+#endif
class PeriodicActivity;
class SequentialActivity;
class SimulationActivity;
diff --git a/rtt/os/TimeService.cpp b/rtt/os/TimeService.cpp
index 64b6b37..bfebb42 100644
--- a/rtt/os/TimeService.cpp
+++ b/rtt/os/TimeService.cpp
@@ -83,12 +83,12 @@ namespace RTT {
if ( use_clock == true )
{
// if offset is X, then start counting from X.
- offset = offset - rtos_get_time_ticks();
+ offset = offset - rt_timer_read();
}
else
{
// start counting from _now_ + old offset
- offset = offset + rtos_get_time_ticks();
+ offset = offset + rt_timer_read();
}
}
@@ -96,7 +96,7 @@ namespace RTT {
TimeService::ticks
TimeService::getTicks() const
{
- return use_clock ? rtos_get_time_ticks() + offset : 0 + offset;
+ return use_clock ? rt_timer_read() + offset : 0 + offset;
}
TimeService::ticks
diff --git a/rtt/os/xenomai/fosi.h b/rtt/os/xenomai/fosi.h
index 61fd919..2614bcb 100644
--- a/rtt/os/xenomai/fosi.h
+++ b/rtt/os/xenomai/fosi.h
@@ -119,20 +119,8 @@ extern "C" {
#define ORO_SCHED_RT 0 /** Hard real-time */
#define ORO_SCHED_OTHER 1 /** Soft real-time */
- // hrt is in ticks
-static inline TIME_SPEC ticks2timespec(TICK_TIME hrt)
-{
- TIME_SPEC timevl;
- timevl.tv_sec = rt_timer_tsc2ns(hrt) / 1000000000LL;
- timevl.tv_nsec = rt_timer_tsc2ns(hrt) % 1000000000LL;
- return timevl;
-}
- // hrt is in ticks
-static inline TICK_TIME timespec2ticks(const TIME_SPEC* ts)
-{
- return rt_timer_ns2tsc(ts->tv_nsec + ts->tv_sec*1000000000LL);
-}
+
// turn this on to have maximum detection of valid system calls.
#ifdef OROSEM_OS_XENO_CHECK
@@ -153,17 +141,14 @@ static inline TICK_TIME timespec2ticks(const TIME_SPEC* ts)
static inline NANO_TIME rtos_get_time_ns(void) { return rt_timer_ticks2ns(rt_timer_read()); }
-static inline TICK_TIME rtos_get_time_ticks(void) { return rt_timer_tsc(); }
-
-static inline TICK_TIME ticksPerSec(void) { return rt_timer_ns2tsc( 1000 * 1000 * 1000 ); }
// WARNING: Orocos 'ticks' are 'Xenomai tsc' and Xenomai `ticks' are not
// used in the Orocos API. Thus Orocos uses `Xenomai tsc' and `Xenomai ns',
// yet Xenomai requires `Xenomai ticks' at the interface
// ==> do not use nano2ticks to convert to `Xenomai ticks' because it
// converts to `Xenomai tsc'.
-static inline TICK_TIME nano2ticks(NANO_TIME t) { return rt_timer_ns2tsc(t); }
-static inline NANO_TIME ticks2nano(TICK_TIME t) { return rt_timer_tsc2ns(t); }
+static inline TICK_TIME nano2ticks(NANO_TIME t) { return rt_timer_ns2ticks(t); }
+static inline NANO_TIME ticks2nano(TICK_TIME t) { return rt_timer_ticks2ns(t); }
static inline int rtos_nanosleep(const TIME_SPEC *rqtp, TIME_SPEC *rmtp)
{
@@ -260,15 +245,10 @@ static inline int rtos_nanosleep(const TIME_SPEC *rqtp, TIME_SPEC *rmtp)
static inline int rtos_mutex_trylock( rt_mutex_t* m)
{
CHK_XENO_CALL();
- struct rt_mutex_info info;
+ RT_MUTEX_INFO info;
rt_mutex_inquire(m, &info );
-#if ((CONFIG_XENO_VERSION_MAJOR*1000)+(CONFIG_XENO_VERSION_MINOR*100)+CONFIG_XENO_REVISION_LEVEL) >= 2500
- if (info.locked)
- return 0;
-#else
- if (info.lockcnt)
+ if (&(info.owner)==NULL)
return 0;
-#endif
// from here on: we're sure our thread didn't lock it
// now check if any other thread locked it:
return rt_mutex_acquire(m, TM_NONBLOCK);
diff --git a/rtt/os/xenomai/fosi_internal.cpp b/rtt/os/xenomai/fosi_internal.cpp
index 9e8ee7a..748cde7 100644
--- a/rtt/os/xenomai/fosi_internal.cpp
+++ b/rtt/os/xenomai/fosi_internal.cpp
@@ -441,7 +441,7 @@ namespace RTT
RT_TASK* tt = mytask->xenoptr;
if ( tt )
if ( rt_task_inquire ( tt, &info) == 0 )
- return info.bprio;
+ return info.prio;
return -1;
}
diff --git a/rtt/transports/corba/TaskContextProxy.cpp b/rtt/transports/corba/TaskContextProxy.cpp
index cdedc90..662aa79 100644
--- a/rtt/transports/corba/TaskContextProxy.cpp
+++ b/rtt/transports/corba/TaskContextProxy.cpp
@@ -86,7 +86,7 @@ namespace RTT
deletePropertyBag( *this->properties() );
}
this->attributes()->clear();
- for (list<PortInterface*>::iterator it = port_proxies.begin(); it != port_proxies.end(); ++it)
+ for (std::list<PortInterface*>::iterator it = port_proxies.begin(); it != port_proxies.end(); ++it)
delete *it;
proxies.erase(this);
}
xenomai-3-extras.patch
(text/x-patch, 1 KB)
diff --git a/utils/autotune/autotune.c b/utils/autotune/autotune.c
index 99bbb79..11d1733 100644
--- a/utils/autotune/autotune.c
+++ b/utils/autotune/autotune.c
@@ -294,8 +294,11 @@ int main(int argc, char *const argv[])
}
}
- if (background)
- daemon(0, 0);
+ if (background) {
+ ret = daemon(0, 0);
+ if (ret)
+ error(1, errno, "daemon failed");
+ }
fd = open("/dev/rtdm/autotune", O_RDONLY);
if (fd < 0)
diff --git a/include/copperplate/debug.h b/include/copperplate/debug.h
index 027f12c..d2516ff 100644
--- a/include/copperplate/debug.h
+++ b/include/copperplate/debug.h
@@ -25,7 +25,7 @@
struct threadobj;
-#define debug(__fmt, __args...) \
+#define xeno_debug(__fmt, __args...) \
do { \
struct threadobj *__thobj = threadobj_current(); \
if (__thobj == NULL || \
@@ -35,7 +35,7 @@ struct threadobj;
#else /* !CONFIG_XENO_DEBUG */
-#define debug(fmt, args...) do { } while (0)
+#define xeno_debug(fmt, args...) do { } while (0)
#endif /* !CONFIG_XENO_DEBUG */