diff options
Diffstat (limited to 'TAO/orbsvcs/tests/Sched_Conf/Sched_Conf_Anomalies.cpp')
-rw-r--r-- | TAO/orbsvcs/tests/Sched_Conf/Sched_Conf_Anomalies.cpp | 385 |
1 files changed, 0 insertions, 385 deletions
diff --git a/TAO/orbsvcs/tests/Sched_Conf/Sched_Conf_Anomalies.cpp b/TAO/orbsvcs/tests/Sched_Conf/Sched_Conf_Anomalies.cpp deleted file mode 100644 index 891892f6cec..00000000000 --- a/TAO/orbsvcs/tests/Sched_Conf/Sched_Conf_Anomalies.cpp +++ /dev/null @@ -1,385 +0,0 @@ -// $Id$ - -// This program performa a simple scheduler configuration run, -// and dumps the results of one scheduling into a C++ header file. - -#include "ace/Sched_Params.h" -#include "ace/Get_Opt.h" -#include "tao/corba.h" - -#include "orbsvcs/CosNamingC.h" -#include "orbsvcs/Scheduler_Factory.h" -#include "orbsvcs/Naming/Naming_Utils.h" - -ACE_RCSID(Sched_Conf, Sched_Conf_Anomalies, "$Id$") - -const char* service_name = "ScheduleService"; - -const char* format_string = "{%-12s, %d, %d, %d, %d, %8d, " - "(RtecScheduler::Criticality) %d, " - "(RtecScheduler::Importance) %d, " - "%d, %d, %3d, %d, %d, " - "(RtecScheduler::Info_Type) %d}\n"; - -int -parse_args (int argc, char *argv []) -{ - ACE_Get_Opt get_opt (argc, argv, "n:"); - int opt; - - while ((opt = get_opt ()) != EOF) - { - switch (opt) - { - case 'n': - service_name = get_opt.optarg; - break; - case '?': - default: - ACE_DEBUG ((LM_DEBUG, - "Usage: %s " - "-n service_name " - "\n", - argv[0])); - return -1; - } - } - - return 0; -} - -int -main (int argc, char *argv[]) -{ - if (parse_args (argc, argv) != 0) - { - return 1; - } - - // create initial data for supplier and consumer operations - const int operation_count = 8; - ACE_Scheduler_Factory::POD_RT_Info config_infos[operation_count] = { - // good supplier (no unresolved dependencies) - { "good_supplier", // entry point - 0, // handle - 5000, // worst case execution time - 5000, // typical execution time (unused) - 5000, // cached execution time - 500000, // period (100 ns) - RtecScheduler::HIGH_CRITICALITY, // criticality - RtecScheduler::LOW_IMPORTANCE, // importance - 0, // quantum (unused) - 1, // threads - 0, // OS priority - 0, // Preemption subpriority - 0, // Preemption priority - RtecScheduler::OPERATION // info type - }, - // good consumer (no unresolved dependencies) - { "good_consumer", // entry point - 1, // handle - 5000, // worst case execution time - 5000, // typical execution time (unused) - 5000, // cached execution time - 0, // period (100 ns) - RtecScheduler::HIGH_CRITICALITY, // criticality - RtecScheduler::LOW_IMPORTANCE, // importance - 0, // quantum (unused) - 0, // threads - 0, // OS priority - 0, // Preemption subpriority - 0, // Preemption priority - RtecScheduler::OPERATION // info type - }, - // supplier with unresolved remote dependencies - { "unresolved_remote_supplier", // entry point - 2, // handle - 5000, // worst case execution time - 5000, // typical execution time (unused) - 5000, // cached execution time - 0, // period (100 ns) - RtecScheduler::HIGH_CRITICALITY, // criticality - RtecScheduler::LOW_IMPORTANCE, // importance - 0, // quantum (unused) - 0, // threads - 0, // OS priority - 0, // Preemption subpriority - 0, // Preemption priority - RtecScheduler::REMOTE_DEPENDANT // info type - }, - // consumer with unresolved remote dependencies - { "unresolved_remote_consumer", // entry point - 3, // handle - 5000, // worst case execution time - 5000, // typical execution time (unused) - 5000, // cached execution time - 0, // period (100 ns) - RtecScheduler::HIGH_CRITICALITY, // criticality - RtecScheduler::LOW_IMPORTANCE, // importance - 0, // quantum (unused) - 0, // threads - 0, // OS priority - 0, // Preemption subpriority - 0, // Preemption priority - RtecScheduler::OPERATION // info type - }, - // supplier with unresolved local dependencies - { "unresolved_local_supplier", // entry point - 4, // handle - 5000, // worst case execution time - 5000, // typical execution time (unused) - 5000, // cached execution time - 0, // period (100 ns) - RtecScheduler::HIGH_CRITICALITY, // criticality - RtecScheduler::LOW_IMPORTANCE, // importance - 0, // quantum (unused) - 0, // threads - 0, // OS priority - 0, // Preemption subpriority - 0, // Preemption priority - RtecScheduler::OPERATION // info type - }, - // consumer with unresolved local dependencies - { "unresolved_local_consumer", // entry point - 5, // handle - 5000, // worst case execution time - 5000, // typical execution time (unused) - 5000, // cached execution time - 0, // period (100 ns) - RtecScheduler::HIGH_CRITICALITY, // criticality - RtecScheduler::LOW_IMPORTANCE, // importance - 0, // quantum (unused) - 0, // threads - 0, // OS priority - 0, // Preemption subpriority - 0, // Preemption priority - RtecScheduler::OPERATION // info type - }, - // consumer with unresolved local and remote dependencies - { "both_unresolved_consumer_1", // entry point - 6, // handle - 5000, // worst case execution time - 5000, // typical execution time (unused) - 5000, // cached execution time - 0, // period (100 ns) - RtecScheduler::HIGH_CRITICALITY, // criticality - RtecScheduler::LOW_IMPORTANCE, // importance - 0, // quantum (unused) - 0, // threads - 0, // OS priority - 0, // Preemption subpriority - 0, // Preemption priority - RtecScheduler::OPERATION // info type - }, - // another consumer with unresolved - // local and remote dependencies - { "both_unresolved_consumer_2", // entry point - 7, // handle - 5000, // worst case execution time - 5000, // typical execution time (unused) - 5000, // cached execution time - 0, // period (100 ns) - RtecScheduler::HIGH_CRITICALITY, // criticality - RtecScheduler::LOW_IMPORTANCE, // importance - 0, // quantum (unused) - 0, // threads - 0, // OS priority - 0, // Preemption subpriority - 0, // Preemption priority - RtecScheduler::OPERATION // info type - } - }; - - - TAO_TRY - { - // Initialize ORB. - CORBA::ORB_var orb = - CORBA::ORB_init (argc, argv, "internet", TAO_TRY_ENV); - TAO_CHECK_ENV; - - CORBA::Object_var poa_object = - orb->resolve_initial_references("RootPOA"); - if (CORBA::is_nil(poa_object.in ())) - ACE_ERROR_RETURN ((LM_ERROR, - " (%P|%t) Unable to initialize the POA.\n"), - 1); - - PortableServer::POA_var root_poa = - PortableServer::POA::_narrow (poa_object.in(), TAO_TRY_ENV); - TAO_CHECK_ENV; - - PortableServer::POAManager_var poa_manager = - root_poa->the_POAManager (TAO_TRY_ENV); - TAO_CHECK_ENV; - - // Initialize the naming services - TAO_Naming_Client my_name_client; - if (my_name_client.init (orb.in ()) != 0) - ACE_ERROR_RETURN ((LM_ERROR, - " (%P|%t) Unable to initialize " - "the TAO_Naming_Client. \n"), - -1); - - if (ACE_Scheduler_Factory::use_config (my_name_client.get_context (), - service_name) < 0) - { - ACE_ERROR_RETURN ((LM_ERROR, - " (%P|%t) Unable to bind to the scheduling service.\n"), - 1); - } - // create and initialize RT_Infos in the scheduler, - // make second half of array depend on first half. - for (int i = 0; i < operation_count; ++i) - { - // create the RT_Info - config_infos[i].handle = - ACE_Scheduler_Factory::server ()->create (config_infos[i].entry_point, - TAO_TRY_ENV); - - // initialize the RT_Info - ACE_Scheduler_Factory::server ()-> - set (config_infos[i].handle, - (RtecScheduler::Criticality) config_infos[i].criticality, - config_infos[i].worst_case_execution_time, - config_infos[i].typical_execution_time, - config_infos[i].cached_execution_time, - config_infos[i].period, - (RtecScheduler::Importance) config_infos[i].importance, - config_infos[i].quantum, - config_infos[i].threads, - (RtecScheduler::Info_Type) config_infos[i].info_type, - TAO_TRY_ENV); - } - - - // register dependency of good consumer on good supplier - ACE_Scheduler_Factory::server ()-> - add_dependency (config_infos[1].handle, - config_infos[0].handle, - 1, // number of calls - RtecScheduler::ONE_WAY_CALL, // type of dependency - TAO_TRY_ENV); - - // register dependency of consumer that will have unresolved remote - // dependencies on supplier with unresolved remote dependencies - ACE_Scheduler_Factory::server ()-> - add_dependency (config_infos[3].handle, - config_infos[2].handle, - 1, // number of calls - RtecScheduler::ONE_WAY_CALL, // type of dependency - TAO_TRY_ENV); - - - // register dependency of consumer that will have unresolved local - // dependencies on supplier with unresolved local dependencies - ACE_Scheduler_Factory::server ()-> - add_dependency (config_infos[5].handle, - config_infos[4].handle, - 1, // number of calls - RtecScheduler::ONE_WAY_CALL, // type of dependency - TAO_TRY_ENV); - - - // register dependencies on each supplier of first consumer that will - // have both unresolved local and unresolved remote dependencies. - ACE_Scheduler_Factory::server ()-> - add_dependency (config_infos[6].handle, - config_infos[0].handle, - 1, // number of calls - RtecScheduler::ONE_WAY_CALL, // type of dependency - TAO_TRY_ENV); - ACE_Scheduler_Factory::server ()-> - add_dependency (config_infos[6].handle, - config_infos[2].handle, - 1, // number of calls - RtecScheduler::ONE_WAY_CALL, // type of dependency - TAO_TRY_ENV); - ACE_Scheduler_Factory::server ()-> - add_dependency (config_infos[6].handle, - config_infos[4].handle, - 1, // number of calls - RtecScheduler::ONE_WAY_CALL, // type of dependency - TAO_TRY_ENV); - - - // Register dependencies on each of the other consumers by second - // consumer that will have both unresolved local and unresolved remote - // dependencies. - ACE_Scheduler_Factory::server ()-> - add_dependency (config_infos[7].handle, - config_infos[1].handle, - 1, // number of calls - RtecScheduler::ONE_WAY_CALL, // type of dependency - TAO_TRY_ENV); - ACE_Scheduler_Factory::server ()-> - add_dependency (config_infos[7].handle, - config_infos[3].handle, - 1, // number of calls - RtecScheduler::ONE_WAY_CALL, // type of dependency - TAO_TRY_ENV); - ACE_Scheduler_Factory::server ()-> - add_dependency (config_infos[7].handle, - config_infos[5].handle, - 1, // number of calls - RtecScheduler::ONE_WAY_CALL, // type of dependency - TAO_TRY_ENV); - ACE_Scheduler_Factory::server ()-> - add_dependency (config_infos[7].handle, - config_infos[6].handle, - 1, // number of calls - RtecScheduler::ONE_WAY_CALL, // type of dependency - TAO_TRY_ENV); - - - RtecScheduler::RT_Info_Set_var infos; - RtecScheduler::Config_Info_Set_var configs; - RtecScheduler::Scheduling_Anomaly_Set_var anomalies; - -#if defined (__SUNPRO_CC) - // Sun C++ 4.2 warns with the code below: - // Warning (Anachronism): Temporary used for non-const - // reference, now obsolete. - // Note: Type "CC -migration" for more on anachronisms. - // Warning (Anachronism): The copy constructor for argument - // infos of type RtecScheduler::RT_Info_Set_out should take - // const RtecScheduler::RT_Info_Set_out&. - // But, this code is not CORBA conformant, because users should - // not define instances of _out types. - - RtecScheduler::RT_Info_Set_out infos_out (infos); - RtecScheduler::Config_Info_Set_out configs_out (configs); - RtecScheduler::Scheduling_Anomaly_Set_out anomalies_out (anomalies); - ACE_Scheduler_Factory::server ()->compute_scheduling - (ACE_Sched_Params::priority_min (ACE_SCHED_FIFO, - ACE_SCOPE_THREAD), - ACE_Sched_Params::priority_max (ACE_SCHED_FIFO, - ACE_SCOPE_THREAD), - infos_out, configs_out, anomalies_out, TAO_TRY_ENV); -#else /* ! __SUNPRO_CC */ - ACE_Scheduler_Factory::server ()->compute_scheduling - (ACE_Sched_Params::priority_min (ACE_SCHED_FIFO, - ACE_SCOPE_THREAD), - ACE_Sched_Params::priority_max (ACE_SCHED_FIFO, - ACE_SCOPE_THREAD), - infos.out (), configs.out (), anomalies.out (), TAO_TRY_ENV); -#endif /* ! __SUNPRO_CC */ - - TAO_CHECK_ENV; - - ACE_Scheduler_Factory::dump_schedule (infos.in (), - configs.in (), - anomalies.in (), - "Sched_Conf_Anomalies_Runtime.h", - format_string); - } - TAO_CATCH (CORBA::SystemException, sys_ex) - { - TAO_TRY_ENV.print_exception ("SYS_EX"); - } - TAO_ENDTRY; - - return 0; -} - - |