.. _program_listing_file__tmp_ws_src_realtime_support_rttest_include_rttest_rttest.h: Program Listing for File rttest.h ================================= |exhale_lsh| :ref:`Return to documentation for file ` (``/tmp/ws/src/realtime_support/rttest/include/rttest/rttest.h``) .. |exhale_lsh| unicode:: U+021B0 .. UPWARDS ARROW WITH TIP LEFTWARDS .. code-block:: cpp // Copyright 2015 Open Source Robotics Foundation, Inc. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. #ifndef RTTEST__RTTEST_H_ #define RTTEST__RTTEST_H_ #include #include #include #include #ifdef __cplusplus extern "C" { #endif // rttest can have one instance per thread! struct rttest_params { size_t iterations; struct timespec update_period; size_t sched_policy; int sched_priority; size_t stack_size; uint64_t prefault_dynamic_size; // TODO(dirk-thomas) currently this pointer is never deallocated or copied // so whatever value is being assigned must stay valid forever char * filename; }; struct rttest_results { // Max iteration that this result describes size_t iteration; int64_t min_latency; int64_t max_latency; double mean_latency; double latency_stddev; size_t minor_pagefaults; size_t major_pagefaults; }; int rttest_read_args(int argc, char ** argv); int rttest_init( size_t iterations, struct timespec update_period, size_t sched_policy, int sched_priority, size_t stack_size, uint64_t prefault_dynamic_size, char * filename); int rttest_get_params(struct rttest_params * params); int rttest_init_new_thread(); int rttest_spin(void * (*user_function)(void *), void * args); // TODO(jacquelinekay) better signature for user function int rttest_spin_period( void * (*user_function)(void *), void * args, const struct timespec * update_period, const size_t iterations); int rttest_spin_once_period( void * (*user_function)(void *), void * args, const struct timespec * start_time, const struct timespec * update_period, const size_t i); int rttest_spin_once( void * (*user_function)(void *), void * args, const struct timespec * start_time, const size_t i); int rttest_lock_memory(); int rttest_prefault_stack_size(const size_t stack_size); int rttest_prefault_stack(); int rttest_lock_and_prefault_dynamic(); int rttest_set_sched_priority(const size_t sched_priority, const int policy); int rttest_set_thread_default_priority(); int rttest_get_next_rusage(size_t i); int rttest_calculate_statistics(struct rttest_results * results); int rttest_get_statistics(struct rttest_results * results); int rttest_get_sample_at(const size_t iteration, int64_t * sample); int rttest_write_results(); int rttest_write_results_file(char * filename); int rttest_finish(); int rttest_running(); #ifdef __cplusplus } #endif #endif // RTTEST__RTTEST_H_