add initial RTOS support

now without io devices and console

git-svn-id: svn://db.shs.com.ru/pip@683 12ceb7fc-bf1f-11e4-8940-5bc7170c53b5
This commit is contained in:
2019-02-04 23:57:53 +00:00
parent b0285fd251
commit 79e17eb928
17 changed files with 303 additions and 218 deletions

View File

@@ -8,12 +8,13 @@ include(PIPMacros.cmake)
# Options
option(ICU "Unicode support" 1)
option(STD_IOSTREAM "Building with std iostream operators support" 0)
option(INTROSPECTION_CONTAINERS "Build with containers introspection" 0)
option(INTROSPECTION_THREADS "Build with threads introspection" 0)
option(LIB "System install" 1)
option(DEBUG "Build with -g3" 0)
option(ICU "Unicode support" ON)
option(STD_IOSTREAM "Building with std iostream operators support" OFF)
option(INTROSPECTION_CONTAINERS "Build with containers introspection" OFF)
option(INTROSPECTION_THREADS "Build with threads introspection" OFF)
option(LIB "System install" ON)
option(STATIC_LIB OFF)
option(DEBUG "Build with -g3" OFF)
# Basic
@@ -42,6 +43,18 @@ set(PIP_LIBS_TARGETS pip)
set(LIBS_MAIN)
set(LIBS_STATUS)
if (DEFINED ENV{QNX_HOST} OR PIP_FREERTOS)
set(STATIC_LIB ON)
endif()
if(STATIC_LIB)
set(PIP_LIB_TYPE STATIC)
message(STATUS "Building PIP static library")
else()
set(PIP_LIB_TYPE SHARED)
message(STATUS "Building PIP shared library")
endif()
#if(LIB)
if(WIN32)
if(MINGW)
@@ -106,6 +119,12 @@ endif()
# Main lib
set(PIP_FOLDERS "." "core" "containers" "thread" "system" "io_devices" "io_utils" "console" "math" "code" "geo" "resources" "opencl" "crypt")
if(PIP_FREERTOS)
list(REMOVE_ITEM PIP_FOLDERS "io_devices")
include_directories("${PIP_SRC_MAIN}/io_devices")
list(REMOVE_ITEM PIP_FOLDERS "console")
include_directories("${PIP_SRC_MAIN}/console")
endif()
include_directories("${PIP_SRC_MAIN}")
set(PIP_MAIN_FOLDERS)
foreach(F ${PIP_FOLDERS})
@@ -133,6 +152,12 @@ gather_src("${PIP_SRC_OPENCL}" CPP_LIB_OPENCL HDRS PHDRS)
gather_src("${PIP_SRC_IO_UTILS}" CPP_LIB_IO_UTILS HDRS PHDRS)
if(PIP_FREERTOS)
add_definitions(-DPIP_FREERTOS)
set(ICU OFF)
set(LIB OFF)
endif()
# Check Bessel functions
set(CMAKE_REQUIRED_INCLUDES math.h)
set(CMAKE_REQUIRED_LIBRARIES m)
@@ -178,68 +203,69 @@ CHECK_FUNCTION_EXISTS(timer_delete PIP_TIMER_RT_2)
if(DEBUG)
add_definitions(-DPIP_DEBUG)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g3")
message(STATUS "Building debug version")
message(STATUS "Building PIP debug version")
else()
set(CMAKE_BUILD_TYPE "Release")
message(STATUS "Building release version")
message(STATUS "Building PIP release version")
endif()
# Check if std::iostream operators support
if(STD_IOSTREAM)
add_definitions(-DPIP_STD_IOSTREAM)
message(STATUS "Building with std iostream operators support")
message(STATUS "Building PIP with std iostream operators support")
else()
message(STATUS "Building without std iostream operators support")
message(STATUS "Building PIP without std iostream operators support")
endif()
# Check if STL containers is on (to enable use "-DSTL=" argument of cmake)
if(STL)
message(STATUS "Building with STL containers")
message(STATUS "Building PIP with STL containers")
add_definitions(-DPIP_CONTAINERS_STL)
else()
message(STATUS "Building with PIP containers")
message(STATUS "Building PIP with PIP containers")
endif()
# Check if ICU used for PIString and PIChar
if(ICU)
message(STATUS "Building with ICU")
message(STATUS "Building PIP with ICU")
add_definitions(-DPIP_ICU)
list(APPEND LIBS_MAIN icuuc)
else()
message(STATUS "Building without ICU, attention!")
message(STATUS "Building PIP without ICU, attention!")
endif()
# Check if PIP should be built with containers introspection
if(INTROSPECTION_CONTAINERS)
message(STATUS "Building with containers introspection")
message(STATUS "Building PIP with containers introspection")
add_definitions(-DPIP_INTROSPECTION_CONTAINERS)
else()
message(STATUS "Building without containers introspection")
message(STATUS "Building PIP without containers introspection")
endif()
# Check if PIP should be built with threads introspection
if(INTROSPECTION_THREADS)
message(STATUS "Building with threads introspection")
message(STATUS "Building PIP with threads introspection")
add_definitions(-DPIP_INTROSPECTION_THREADS)
else()
message(STATUS "Building without threads introspection")
message(STATUS "Building PIP without threads introspection")
endif()
# Check if RT timers exists
if(PIP_TIMER_RT_0 AND PIP_TIMER_RT_1 AND PIP_TIMER_RT_2)
add_definitions(-DPIP_TIMER_RT)
message(STATUS "Building with timers: Thread, ThreadRT, Pool")
message(STATUS "Building PIP with timers: Thread, ThreadRT, Pool")
else()
message(STATUS "Building with timers: Thread, Pool")
message(STATUS "Building PIP with timers: Thread, Pool")
endif()
# Add main library
if(APPLE)
add_definitions(-D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE)
@@ -266,6 +292,9 @@ else()
endif()
endif()
set(PIP_LIBS)
if(PIP_FREERTOS)
set(PIP_LIBS ${LIBS_MAIN})
else()
foreach(LIB_ ${LIBS_MAIN})
find_library(${LIB_}_FOUND ${LIB_})
if(${LIB_}_FOUND)
@@ -273,11 +302,12 @@ foreach(LIB_ ${LIBS_MAIN})
list(APPEND PIP_LIBS ${${LIB_}_FOUND})
endif()
endforeach()
endif()
list(APPEND LIBS_STATUS ${LIBS_MAIN})
if(WIN32)
list(APPEND CPP_LIB_MAIN "pip_resource_win.rc")
add_definitions(-DPSAPI_VERSION=1)
add_library(pip SHARED ${CPP_LIB_MAIN} ${HDRS} ${PHDRS})
add_library(pip ${PIP_LIB_TYPE} ${CPP_LIB_MAIN} ${HDRS} ${PHDRS})
if(${C_COMPILER} STREQUAL "cl.exe")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /O2 /Ob2 /Ot /W0")
else()
@@ -287,13 +317,11 @@ if(WIN32)
else()
set(${CMAKE_CXX_FLAGS} "${CMAKE_CXX_FLAGS} -O3 -fPIC")
#set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=native")
if(DEFINED ENV{QNX_HOST})
if(DEFINED ENV{QNX_HOST} OR PIP_FREERTOS)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -ftemplate-depth-32")
add_library(pip STATIC ${CPP_LIB_MAIN})
else()
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall")
add_library(pip SHARED ${CPP_LIB_MAIN})
endif()
add_library(pip ${PIP_LIB_TYPE} ${CPP_LIB_MAIN})
endif()
set(CMAKE_C_FLAGS "${CMAKE_CXX_FLAGS}")
include(GenerateExportHeader)
@@ -301,46 +329,46 @@ generate_export_header(pip)
list(APPEND HDRS "${CMAKE_CURRENT_BINARY_DIR}/pip_export.h")
target_link_libraries(pip ${PIP_LIBS})
if (NOT PIP_FREERTOS)
# Check if USB is supported
find_library(usb_FOUND usb SHARED)
if(usb_FOUND)
message(STATUS "Building with USB support")
message(STATUS "Building PIP with USB support")
add_definitions(-DPIP_USB)
add_library(pip_usb SHARED ${CPP_LIB_USB})
add_library(pip_usb ${PIP_LIB_TYPE} ${CPP_LIB_USB})
target_link_libraries(pip_usb pip ${usb_FOUND})
list(APPEND LIBS_STATUS usb)
list(APPEND PIP_LIBS_TARGETS pip_usb)
else()
message(STATUS "Building without USB support")
message(STATUS "Building PIP without USB support")
endif()
# Check if PIP support cryptographic encryption/decryption using sodium library
find_library(sodium_FOUND sodium)
if(sodium_FOUND)
message(STATUS "Building with crypt support")
message(STATUS "Building PIP with crypt support")
add_definitions(-DPIP_CRYPT)
add_library(pip_crypt SHARED ${CPP_LIB_CRYPT})
add_library(pip_crypt ${PIP_LIB_TYPE} ${CPP_LIB_CRYPT})
target_link_libraries(pip_crypt pip ${sodium_FOUND})
list(APPEND LIBS_STATUS sodium)
list(APPEND PIP_LIBS_TARGETS pip_crypt)
else()
message(STATUS "Building without crypt support")
message(STATUS "Building PIP without crypt support")
endif()
# Check if PIP support compress/decompress using zlib library
find_library(zlib_FOUND NAMES z zlib)
if(zlib_FOUND)
message(STATUS "Building with zlib compress support")
message(STATUS "Building PIP with zlib compress support")
add_definitions(-DPIP_COMPRESS)
add_library(pip_compress SHARED ${CPP_LIB_COMPRESS})
add_library(pip_compress ${PIP_LIB_TYPE} ${CPP_LIB_COMPRESS})
target_link_libraries(pip_compress pip ${zlib_FOUND})
list(APPEND LIBS_STATUS zlib)
list(APPEND PIP_LIBS_TARGETS pip_compress)
else()
message(STATUS "Building without compress support")
message(STATUS "Building PIP without compress support")
endif()
@@ -382,20 +410,20 @@ foreach(FFTW_S_ IN LISTS FFTW_LIB_SUFFIXES)
endforeach()
endforeach()
if(FFTW_LIBS)
message(STATUS "Building with fftw3 support: ${FFTW_LIBS}")
add_library(pip_fftw SHARED ${CPP_LIB_FFTW})
message(STATUS "Building PIP with fftw3 support: ${FFTW_LIBS}")
add_library(pip_fftw ${PIP_LIB_TYPE} ${CPP_LIB_FFTW})
target_link_libraries(pip_fftw pip ${FFTW_LIBS})
list(APPEND LIBS_STATUS ${FFTW_LIBS})
list(APPEND PIP_LIBS_TARGETS pip_fftw)
else()
message(STATUS "Building without fftw3 support")
message(STATUS "Building PIP without fftw3 support")
endif()
# Check if PIP support OpenCL
find_package(OpenCL QUIET)
if(OpenCL_FOUND)
message(STATUS "Building with OpenCL support")
message(STATUS "Building PIP with OpenCL support")
if(APPLE)
include_directories(${OpenCL_INCLUDE_DIRS}/Headers)
else()
@@ -403,35 +431,35 @@ if(OpenCL_FOUND)
endif()
add_definitions(-DPIP_OPENCL)
pip_resources(CL_RES "src_opencl/resources.conf")
add_library(pip_opencl SHARED ${CPP_LIB_OPENCL} ${CL_RES})
add_library(pip_opencl ${PIP_LIB_TYPE} ${CPP_LIB_OPENCL} ${CL_RES})
add_dependencies(pip_opencl pip_rc)
target_link_libraries(pip_opencl pip OpenCL::OpenCL)
list(APPEND LIBS_STATUS OpenCL)
list(APPEND PIP_LIBS_TARGETS pip_opencl)
set(OpenCL_FOUND ${OpenCL_LIBRARIES})
else()
message(STATUS "Building without OpenCL support")
message(STATUS "Building PIP without OpenCL support")
endif()
# Check if PIP IO Utils library supports crypt
set(IO_UTILS_LIBS pip)
add_library(pip_io_utils SHARED ${CPP_LIB_IO_UTILS})
add_library(pip_io_utils ${PIP_LIB_TYPE} ${CPP_LIB_IO_UTILS})
if(sodium_FOUND)
message(STATUS "Building IO Utils library with crypt support")
message(STATUS "Building PIP IO Utils library with crypt support")
list(APPEND IO_UTILS_LIBS pip_crypt)
else()
message(STATUS "Building IO Utils library without crypt support, attention!")
message(STATUS "Building PIP IO Utils library without crypt support, attention!")
endif()
target_link_libraries(pip_io_utils ${IO_UTILS_LIBS})
list(APPEND PIP_LIBS_TARGETS pip_io_utils)
# Test program
add_executable(pip_test "main.cpp")
target_link_libraries(pip_test pip)
endif(NOT PIP_FREERTOS)
# Install
# Check if system or local install will be used (to system install use "-DLIB=" argument of cmake)
@@ -473,11 +501,14 @@ if(LIB)
file(GLOB CMAKES "*.cmake")
install(FILES ${CMAKES} DESTINATION ${CMAKE_ROOT}/Modules)
else()
if(NOT PIP_FREERTOS)
install(TARGETS ${PIP_LIBS_TARGETS} DESTINATION bin)
install(FILES ${HDRS} DESTINATION include)
message(STATUS "Install ${PROJECT_NAME} to local \"bin\"")
endif()
endif()
if(NOT PIP_FREERTOS)
# Auxiliary
add_subdirectory("${PIP_SRC_MAIN}/auxiliary/piterminal")
@@ -494,18 +525,22 @@ if(sodium_FOUND)
add_subdirectory("utils/crypt_tool")
endif()
endif()
# Libraries messages
message(STATUS "Building modules: ${PIP_LIBS_TARGETS}")
message(STATUS "Building PIP modules: ${PIP_LIBS_TARGETS}")
if(DEFINED LIBPROJECT)
set(PIP_LIBS_TARGETS ${PIP_LIBS_TARGETS} PARENT_SCOPE)
endif()
if(NOT PIP_FREERTOS)
foreach(LIB_ ${LIBS_STATUS})
message(STATUS "Library ${LIB_} -> " ${${LIB_}_FOUND})
if(NOT ${LIB_}_FOUND)
message(WARNING "Library ${LIB_} not found, please install it")
endif()
endforeach()
endif()
#
@@ -514,7 +549,7 @@ endforeach()
# find_package(Doxygen QUIET)
# if(Doxygen_FOUND)
# message(STATUS "Building with documentation via Doxygen")
# message(STATUS "Building PIP with documentation via Doxygen")
# #set(DOXYFILE_IN ${CMAKE_CURRENT_SOURCE_DIR}/doc/Doxyfile.in)
# set(DOXYFILE ${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile)
@@ -532,7 +567,7 @@ endforeach()
# )
# install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/html DESTINATION share/doc)
# endif()
if (NOT PIP_FREERTOS)
include(PIPDocumentation.cmake)
find_package(Doxygen)
if(DOXYGEN_FOUND)
@@ -556,4 +591,5 @@ if(DOXYGEN_FOUND)
add_documentation(doc Doxyfile.in)
install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/doc/html DESTINATION ../share/doc/pip COMPONENT doc EXCLUDE_FROM_ALL OPTIONAL)
endif()
endif()

View File

@@ -45,7 +45,7 @@ typedef PIByteArray(*AccessFunction)(const void *, const char *);
struct PIP_EXPORT TypeInfo {
TypeInfo(const PIString & n = PIString(), const PIString & t = PIString(), PICodeInfo::TypeFlags f = 0, int b = -1) {name = n; type = t; flags = f; bits = b;}
const bool isBitfield() const {return bits > 0;}
bool isBitfield() const {return bits > 0;}
MetaMap meta;
PIString name;
PIString type;

View File

@@ -41,4 +41,5 @@ typedef LONG(NTAPI*PINtSetTimerResolution)(ULONG, BOOLEAN, PULONG);
#include <iostream>
#endif // PIINCLUDES_P_H

View File

@@ -23,9 +23,11 @@
#include "pisignals.h"
#include "piobject.h"
#include "pisysteminfo.h"
#include "piresourcesstorage.h"
#ifndef FREERTOS
# include "pidir.h"
# include "piprocess.h"
#include "piresourcesstorage.h"
#endif
#ifdef WINDOWS
# include <winsock2.h>
extern FILETIME __pi_ftjan1970;
@@ -44,7 +46,9 @@
}
#else
# include <pwd.h>
# ifndef FREERTOS
# include <sys/utsname.h>
# endif
# include <pthread.h>
# ifdef BLACKBERRY
# include <signal.h>
@@ -88,6 +92,7 @@ PRIVATE_DEFINITION_START(PIInit)
#endif
PRIVATE_DEFINITION_END(PIInit)
#ifndef FREERTOS
void __sighandler__(PISignals::Signal s) {
//piCout << Hex << int(s);
if (s == PISignals::StopTTYInput || s == PISignals::StopTTYOutput)
@@ -95,6 +100,7 @@ void __sighandler__(PISignals::Signal s) {
if (s == PISignals::UserDefined1)
dumpApplicationToFile(PIDir::home().path() + PIDir::separator + PIStringAscii("_PIP_DUMP_") + PIString::fromNumber(PIProcess::currentPID()));
}
#endif
#ifdef ANDROID
@@ -109,6 +115,7 @@ PIInit::PIInit() {
PISystemInfo * sinfo = PISystemInfo::instance();
sinfo->execDateTime = PIDateTime::current();
setFileCharset("UTF-8");
#ifndef FREERTOS
#ifndef ANDROID
PISignals::setSlot(__sighandler__);
PISignals::grabSignals(PISignals::UserDefined1);
@@ -211,11 +218,14 @@ PIInit::PIInit() {
#endif
#ifdef MAC_OS
host_get_clock_service(mach_host_self(), CALENDAR_CLOCK, &__pi_mac_clock);
#endif
#endif
char cbuff[1024];
memset(cbuff, 0, 1024);
#ifndef FREERTOS
if (gethostname(cbuff, 1023) == 0)
sinfo->hostname = cbuff;
#endif
#ifdef WINDOWS
SYSTEM_INFO sysinfo;
GetSystemInfo(&sysinfo);
@@ -248,11 +258,13 @@ PIInit::PIInit() {
if (l)
sinfo->user = l;
}
# ifndef FREERTOS
struct utsname uns;
if (uname(&uns) == 0) {
sinfo->OS_version = uns.release;
sinfo->architecture = uns.machine;
}
# endif
#endif
sinfo->OS_name =
#ifdef WINDOWS
@@ -269,6 +281,9 @@ PIInit::PIInit() {
# else
# ifdef FREE_BSD
PIStringAscii("FreeBSD");
# else
# ifdef FREERTOS
PIStringAscii("FreeRTOS");
# else
uns.sysname;
# endif
@@ -276,6 +291,7 @@ PIInit::PIInit() {
# endif
# endif
# endif
#endif
}

View File

@@ -18,9 +18,10 @@
*/
#include "piobject.h"
#include "pifile.h"
#include "pisysteminfo.h"
#ifndef FREERTOS
# include "pifile.h"
#endif
/** \class PIObject
* \brief This is base class for any classes which use events -> handlers mechanism.
@@ -585,7 +586,7 @@ void dumpApplication() {
//printf("dump application done\n");
}
#ifndef FREERTOS
bool dumpApplicationToFile(const PIString & path) {
PIFile f(path + "_tmp");
f.setName("__S__DumpFile");
@@ -600,3 +601,4 @@ bool dumpApplicationToFile(const PIString & path) {
PIFile::rename(path + "_tmp", path);
return true;
}
#endif

View File

@@ -25,11 +25,14 @@
#include "pistring.h"
#ifdef FREERTOS
# include "time.h"
#else
# include <ctime>
# ifdef QNX
# include <time.h>
# endif
#endif
//! \brief Sleep for "msecs" milliseconds
PIP_EXPORT void msleep(int msecs);

View File

@@ -1,7 +1,7 @@
#include "pican.h"
#include "pipropertystorage.h"
#include "piincludes_p.h"
#if !defined(WINDOWS) && !defined(MAC_OS)
#if !defined(WINDOWS) && !defined(MAC_OS) && !defined(FREERTOS)
# define PIP_CAN
#endif
#ifdef PIP_CAN

View File

@@ -45,12 +45,16 @@
# define ANDROID
# endif
#endif
#ifdef PIP_FREERTOS
# define FREERTOS
#endif
#ifndef WINDOWS
# ifndef QNX
# ifndef FREE_BSD
# ifndef MAC_OS
# ifndef ANDROID
# ifndef BLACKBERRY
# ifndef FREERTOS
# define LINUX
# endif
# endif
@@ -58,6 +62,7 @@
# endif
# endif
# endif
#endif
#ifndef WINDOWS
# if defined(__LP64__) || defined(_LP64_) || defined(LP64)

View File

@@ -17,6 +17,8 @@
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef PIP_FREERTOS
#include "picodec.h"
@@ -39,3 +41,5 @@ PIByteArray PICodec::exec_iconv(const PIString & from, const PIString & to, cons
waitForFinish();
return readOutput();
}
#endif // PIP_FREERTOS

View File

@@ -20,6 +20,8 @@
#ifndef PICODEC_H
#define PICODEC_H
#ifndef PIP_FREERTOS
#include "piprocess.h"
class PIP_EXPORT PICodec: protected PIProcess
@@ -48,4 +50,5 @@ private:
};
#endif // PIP_FREERTOS
#endif // PICODEC_H

View File

@@ -17,6 +17,8 @@
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef PIP_FREERTOS
#include "pilibrary.h"
#include "piincludes_p.h"
#ifndef WINDOWS
@@ -107,3 +109,5 @@ void PILibrary::getLastError() {
else liberror.clear();
#endif
}
#endif // PIP_FREERTOS

View File

@@ -16,10 +16,12 @@
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#
#ifndef PILIBRARY_H
#define PILIBRARY_H
#ifndef PIP_FREERTOS
#include "pistring.h"
class PIP_EXPORT PILibrary {
@@ -45,4 +47,5 @@ private:
};
#endif // PIP_FREERTOS
#endif // PILIBRARY_H

View File

@@ -17,6 +17,8 @@
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef PIP_FREERTOS
#include "piincludes_p.h"
#include "piprocess.h"
#ifndef WINDOWS
@@ -26,7 +28,6 @@
#ifdef MAC_OS
# include <crt_externs.h>
#endif
PRIVATE_DEFINITION_START(PIProcess)
#ifdef WINDOWS
STARTUPINFOA si;
@@ -38,7 +39,6 @@ PRIVATE_DEFINITION_START(PIProcess)
PRIVATE_DEFINITION_END(PIProcess)
PIProcess::PIProcess(): PIThread() {
exit_code = -1;
#ifdef WINDOWS
@@ -307,3 +307,5 @@ PIString PIProcess::getEnvironmentVariable(const PIString & variable) {
return PIString();
}
#endif // PIP_FREERTOS

View File

@@ -23,6 +23,8 @@
#ifndef PIPROCESS_H
#define PIPROCESS_H
#ifndef PIP_FREERTOS
#include "pithread.h"
#include "pifile.h"
@@ -102,4 +104,5 @@ private:
};
#endif // PIP_FREERTOS
#endif // PIPROCESS_H

View File

@@ -83,6 +83,7 @@ PISystemMonitor::ProcessStats::ProcessStats() {
}
#ifndef FREERTOS
bool PISystemMonitor::startOnProcess(int pID, int interval_ms) {
stop();
self_ = false;
@@ -109,13 +110,12 @@ bool PISystemMonitor::startOnProcess(int pID, int interval_ms) {
return start(interval_ms);
}
bool PISystemMonitor::startOnSelf(int interval_ms) {
bool ret = startOnProcess(PIProcess::currentPID(), interval_ms);
self_ = true;
return ret;
}
#endif
PIVector<PISystemMonitor::ThreadStats> PISystemMonitor::threadsStatistic() const {
mutex_.lock();

View File

@@ -70,9 +70,10 @@ public:
ullong space_used;
ullong space_free;*/
};
#ifndef FREERTOS
bool startOnProcess(int pID, int interval_ms = 1000);
bool startOnSelf(int interval_ms = 1000);
#endif
void stop();
const ProcessStats & statistic() const {return stat;}

View File

@@ -31,7 +31,7 @@
# include <sys/syscall.h>
# define gettid() syscall(SYS_gettid)
#endif
#if defined(MAC_OS) || defined(BLACKBERRY)
#if defined(MAC_OS) || defined(BLACKBERRY) || defined(FREERTOS)
# include <pthread.h>
#endif
__THREAD_FUNC_RET__ thread_function(void * t) {PIThread::__thread_func__(t); return 0;}
@@ -335,6 +335,7 @@ int PIThread::priority2System(PIThread::Priority p) {
void PIThread::setPriority(PIThread::Priority prior) {
#ifndef FREERTOS // FreeRTOS can't change priority runtime
priority_ = prior;
#ifndef WINDOWS
if (!running_ || (PRIVATE->thread == 0)) return;
@@ -354,6 +355,7 @@ void PIThread::setPriority(PIThread::Priority prior) {
if (!running_ || (PRIVATE->thread == 0)) return;
SetThreadPriority(PRIVATE->thread, priority2System(priority_));
#endif
#endif //FREERTOS
}