Exemple #1
0
int main(int argc, char *argv[]) {
  int   i;
  int   n = 0;

  if (argc <= 1) {
    printf("%s [-d=<n>] <scenario>\n", argv[0]);
    exit(1);
  }
  for (i=1; i < argc; i++) {
    if ((strcmp (argv[i], "-d") == 0) && (++i < argc))
      debugLevel = atoi (argv[i]);
    else if (n == 0)
      n = atoi(argv[i]);
    else {
      printf("%s [-d <n>] <scenario>\n", argv[0]);
      exit(1);
    }	
  }
  
  loadScenario (n);
  setScheduler(RMSCHEDULER);
  setActivationTime();
  activateAperiodicServer();
  activatePeriodicTasks();
  return 0;
}
void Process::setRealtime(int pri)
{
	if(pri < 1)
		pri = 1;

	setScheduler("rr");
	setPriority(pri);
}
int main(int argc, char *argv[])
{
	QCoreApplication app(argc, argv);
	qRegisterMetaType< struct timespec >();


	if( Tuning::DoMemLock ) {
		// Prevent this process from being swapped out (technically this is
		// moot since we don't use a swapfile on the Pi)
		mlockall(MCL_CURRENT | MCL_FUTURE);
	}

	if( Tuning::DoRTLimit ){
		struct rlimit rlimits;
		getrlimit(RLIMIT_RTTIME, &rlimits );
		qDebug() << "Current RLIMIT_RTTIME = " << rlimits.rlim_cur;
		rlimits.rlim_cur = Tuning::RTLimit;
		if( setrlimit(RLIMIT_RTTIME, &rlimits ) ) {
			qDebug() << "Error setting RLIMIT_RTTIME (" << errno << "): " << strerror(errno);
		}
	}

// Mask out CPU affinity for all processes
if( Tuning::DoCpuAffinity ) {
	cpu_set_t cpu_set;
	if( sched_getaffinity(0, sizeof(cpu_set_t), &cpu_set ) != 0 ) {
		qDebug() << "Unable to get CPU affinity main thread (" << errno << "): " << strerror(errno);
	}

	CPU_CLR( Tuning::CriticalCpu, &cpu_set );

	if( sched_setaffinity(0, sizeof(cpu_set_t), &cpu_set ) != 0 ) {
		qDebug() << "Unable to set CPU affinity for main thread (" << errno << "): " << strerror(errno);
	}

	sched_getaffinity(0, sizeof(cpu_set_t), &cpu_set );
	qDebug() << "Main thread runs on " << (CPU_COUNT( &cpu_set )) << " cpus";
}

	setScheduler( Tuning::DoFIFOScheduler, false );

	MainThread *mt = new MainThread( &app );

	return app.exec();
}