blob: 1de3518f348b9601b7747ce65c384027687ce8e9 [file] [log] [blame]
/* ------------------------------------------------------------------
* Copyright (C) 1998-2009 PacketVideo
*
* 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.
* -------------------------------------------------------------------
*/
/*! \addtogroup osclproc OSCL Proc
*
* @{
*/
/** \file oscl_scheduler_tuneables.h
\brief Tuneable settings for Oscl Scheduler
*/
#ifndef OSCL_SCHEDULER_TUNEABLES_H_INCLUDED
#define OSCL_SCHEDULER_TUNEABLES_H_INCLUDED
#include "osclconfig_proc.h"
//Enable/disable scheduler stats gathering for Run times.
//This data gathering is fairly expensive so should only be used
//for debug and profiling.
#ifndef PV_SCHED_ENABLE_AO_STATS
//defaults for cases where the flag is not defined in the osclconfig_proc.h
#if defined( NDEBUG)||(OSCL_RELEASE_BUILD)
//for release builds
#define PV_SCHED_ENABLE_AO_STATS 0
#else
//for debug builds
#define PV_SCHED_ENABLE_AO_STATS 1
#endif
#endif
//Enable this to track time spent in scheduling loop in addition to Run times.
//This data gathering is fairly expensive so should only be used
//for debug and profiling.
#ifndef PV_SCHED_ENABLE_LOOP_STATS
//defaults for cases where the flag is not defined in the osclconfig_proc.h
#if defined( NDEBUG)||(OSCL_RELEASE_BUILD)
//for release builds
#define PV_SCHED_ENABLE_LOOP_STATS 0
#else
//for debug builds
#define PV_SCHED_ENABLE_LOOP_STATS 0
#endif
#endif
//Note: loop stats requires PV_SCHED_ENABLE_AO_STATS
#if(PV_SCHED_ENABLE_LOOP_STATS) && !(PV_SCHED_ENABLE_AO_STATS)
#error Invalid Config!
#endif
//Enable this to do detailed logging for all Run calls.
//This logging is very expensive so should only be used
//for debug and profiling.
#ifndef PV_SCHED_ENABLE_PERF_LOGGING
//defaults for cases where the flag is not defined in the osclconfig_proc.h
#if defined( NDEBUG)||(OSCL_RELEASE_BUILD)
//for release builds
#define PV_SCHED_ENABLE_PERF_LOGGING 0
#else
//for debug builds
#define PV_SCHED_ENABLE_PERF_LOGGING 1
#endif
#endif
//Note: Perf logging requires PV_SCHED_ENABLE_AO_STATS
#if(PV_SCHED_ENABLE_PERF_LOGGING) && !(PV_SCHED_ENABLE_AO_STATS)
#error Invalid Config!
#endif
//Enable/disable thread context checking here. Context checks are important during
//development but may be costly depending on the OS thread ID retrieval efficiency.
#if defined( NDEBUG)||(OSCL_RELEASE_BUILD)
//for release builds
#define PV_SCHED_ENABLE_THREAD_CONTEXT_CHECKS 0
#else
//for debug builds
#define PV_SCHED_ENABLE_THREAD_CONTEXT_CHECKS 1
#endif
//Set LOG_Q to 1 to enable extensive Queue logging for non-symbian scheduler.
//the code will log the entire queue every time any AO is added or removed,
//for both timer queue and ready queue. It is expensive so should be off in
//production code.
#define PV_SCHED_LOG_Q 0
//Set CHECK_Q to enable Q integrity checks. Should be off in production code.
#define PV_SCHED_CHECK_Q 0
//This allows switching between "fair scheduling" and Symbian native scheduler
//behavior in the non-symbian scheduler implementation.
//We always use fair scheduling, but for testing it can be helpful to
//swap in the symbian native behavior.
#define PV_SCHED_FAIR_SCHEDULING 1
//OSCL_PERF_SUMMARY_LOGGING is a master switch to configure scheduler
//for full performance data gathering with minimal summary logging at
//the end. The data gathering is fairly expensive so should only be
//used for profiling tests. The logging itself is fairly nonintrusive
//since it only happens at scheduler exit.
//------------------------------------
// logger node: "OsclSchedulerPerfStats"
// instrumentation level: PVLOGMSG_INST_PROF
// logger level: PVLOGMSG_INFO
//------------------------------------
#ifndef OSCL_PERF_SUMMARY_LOGGING
//defaults for cases where the flag is not defined in the osclconfig_proc.h
#if defined( NDEBUG)||(OSCL_RELEASE_BUILD)
//release builds
#define OSCL_PERF_SUMMARY_LOGGING 0
#else
//other debug builds
#define OSCL_PERF_SUMMARY_LOGGING 0
#endif
#endif
//Settings for minimal stats logging
#if(OSCL_PERF_SUMMARY_LOGGING)
//enable AO stats
#undef PV_SCHED_ENABLE_AO_STATS
#define PV_SCHED_ENABLE_AO_STATS 1
//enable loop stats
#undef PV_SCHED_ENABLE_LOOP_STATS
#define PV_SCHED_ENABLE_LOOP_STATS 1
//disable perf logging because it skews the results
#undef PV_SCHED_ENABLE_PERF_LOGGING
#define PV_SCHED_ENABLE_PERF_LOGGING 0
#endif //OSCL_PERF_SUMMARY_LOGGING
#endif
/*! @} */