Exemplo n.º 1
0
int main(int argc, char *argv[])
{
	mutex m;
	SysInfo *sysinfo = SysInfo::getInstance(m);
	sysinfo->start();

	Scheduler *xen_scheduler = Scheduler::getInstance(*sysinfo,m);
	xen_scheduler->start();

//	Vnuma *vnuma = Vnuma::getInstance(*sysinfo,m);
//	vnuma->start();

	sysinfo->join();
	xen_scheduler->join();
//	vnuma->join();

	/*
	scheduler numa_sche;
	int trig_time;
	while(1)
	{
		init_numa_scheduler(&numa_sche);
		trig_time = numa_sche.trig_time;
		if(numa_sche.ops.get_info)
			numa_sche.ops.get_info(numa_sche.priv_data);
		numa_sche.ops.pick(&numa_sche);
		numa_sche.ops.migrate(&numa_sche);
		if(numa_sche.ops.destroy)
			numa_sche.ops.destroy(&numa_sche);
		usleep(trig_time);
	}
	*/
	return 0;
}
Exemplo n.º 2
0
int main ( int argc, char **argv )
{
    QApplication a( argc, argv );

    SysInfo info;
    info.resize( info.sizeHint().expandedTo( QSize( 600, 400 ) ) );
    info.show();

    int rv = a.exec();
    return rv;
}
Exemplo n.º 3
0
int main (int argc, char **argv)
{
    QApplication a(argc, argv);
    
    SysInfo info;
    info.resize(info.sizeHint().expandedTo(QSize(600, 400)));
#if QT_VERSION < 0x040000
    a.setMainWidget(&info);
#endif
    info.show();

    int rv = a.exec();
    return rv;
}
Exemplo n.º 4
0
static GtkWidget *
procman_create_sysinfo_view(void)
{
  GtkWidget *hbox;
  GtkWidget *vbox;

  SysInfo *data = get_sysinfo();;

  GtkWidget * logo;

  GtkWidget *distro_frame;
  GtkWidget *distro_release_label;
  GtkWidget *distro_table;

  GtkWidget *hardware_table;
  GtkWidget *memory_label;
  GtkWidget *processor_label;

  GtkWidget *disk_space_table;
  GtkWidget *disk_space_label;

  GtkWidget *header;

  gchar *markup;


  hbox = gtk_hbox_new(FALSE, 12);
  gtk_container_set_border_width(GTK_CONTAINER(hbox), 6);

  /* left-side logo */

  logo = gtk_image_new_from_file(DATADIR "/pixmaps/gnome-system-monitor/side.png");
  gtk_misc_set_alignment(GTK_MISC(logo), 0.5, 0.0);
  gtk_misc_set_padding(GTK_MISC(logo), 5, 12);
  gtk_box_pack_start(GTK_BOX(hbox), logo, FALSE, FALSE, 0);

  g_signal_connect(G_OBJECT(logo), "expose-event",
		   G_CALLBACK(sysinfo_logo_expose), NULL);

  vbox = gtk_vbox_new(FALSE, 12);
  gtk_container_set_border_width(GTK_CONTAINER(vbox), 12);
  gtk_box_pack_start(GTK_BOX(hbox), vbox, TRUE, TRUE, 0);

  // hostname

  markup = g_strdup_printf("<big><big><b><u>%s</u></b></big></big>",
    data->hostname.c_str());
  GtkWidget *hostname_frame = gtk_frame_new(markup);
  g_free(markup);
  gtk_frame_set_label_align(GTK_FRAME(hostname_frame), 0.0, 0.5);
  gtk_label_set_use_markup(
			   GTK_LABEL(gtk_frame_get_label_widget(GTK_FRAME(hostname_frame))),
			   TRUE
			   );
  gtk_frame_set_shadow_type(GTK_FRAME(hostname_frame), GTK_SHADOW_NONE);
  gtk_box_pack_start(GTK_BOX(vbox), hostname_frame, FALSE, FALSE, 0);


  /* distro section */

  unsigned table_size = 2;
  if (data->gnome_version != "")
     table_size++;
  distro_table = add_section(GTK_BOX(vbox), "???", table_size, 1, &distro_frame);

  unsigned table_count = 0;

  distro_release_label = gtk_label_new("???");
  gtk_misc_set_alignment(GTK_MISC(distro_release_label), 0.0, 0.5);
  gtk_table_attach(
		   GTK_TABLE(distro_table), distro_release_label,
		   0, 1, table_count, table_count+1,
		   GTK_FILL, GTK_FILL, 0, 0
		   );
  table_count++;
  data->set_distro_labels(gtk_frame_get_label_widget(GTK_FRAME(distro_frame)), distro_release_label);

  markup = g_strdup_printf(_("Kernel %s"), data->kernel.c_str());
  header = gtk_label_new(markup);
  g_free(markup);
  gtk_misc_set_alignment(GTK_MISC(header), 0.0, 0.5);
  gtk_table_attach(
		   GTK_TABLE(distro_table), header,
		   0, 1, table_count, table_count + 1,
		   GTK_FILL, GTK_FILL, 0, 0
		   );
  table_count++;

  if (data->gnome_version != "")
    {
      markup = g_strdup_printf(_("GNOME %s"), data->gnome_version.c_str());
      header = gtk_label_new(markup);
      g_free(markup);
      gtk_misc_set_alignment(GTK_MISC(header), 0.0, 0.5);
      gtk_table_attach(
		       GTK_TABLE(distro_table), header,
		       0, 1, table_count, table_count + 1,
		       GTK_FILL, GTK_FILL, 0, 0
		       );
      table_count++;
    }

  /* hardware section */

  markup = g_strdup_printf(_("<b>Hardware</b>"));
  hardware_table = add_section(GTK_BOX(vbox), markup, data->processors.size(), 2, NULL);
  g_free(markup);

  markup = procman::format_size(data->memory_bytes);
  memory_label = add_row(GTK_TABLE(hardware_table), _("Memory:"),
                         markup, 0);
  g_free(markup);

  for (guint i = 0; i < data->processors.size(); ++i) {
    const gchar * t;
    if (data->processors.size() > 1) {
      markup = g_strdup_printf(_("Processor %d:"), i);
      t = markup;
    }
    else {
      markup = NULL;
      t = _("Processor:");
    }

    processor_label = add_row(GTK_TABLE(hardware_table), t,
                              data->processors[i].c_str(), 1 + i);

    if(markup)
      g_free(markup);
  }

  /* disk space section */

  markup = g_strdup_printf(_("<b>System Status</b>"));
  disk_space_table = add_section(GTK_BOX(vbox), markup, 1, 2, NULL);
  g_free(markup);

  markup = procman::format_size(data->free_space_bytes);
  disk_space_label = add_row(GTK_TABLE(disk_space_table), 
                             _("Available disk space:"), markup,
                             0);
  g_free(markup);

  return hbox;
}
Exemplo n.º 5
0
//---------------------------------------------------------------------------
int ACE_MAIN(int argc, ACE_TCHAR  *argv[])
{
	// 환경설정 (제일 먼저 초기화 해야함)
	procArguments(argc, argv);

	// 로그
	if(initLog() < 0)
	{
		printf("로그 초기화를 실패했으므로 프로그램을 종료합니다.\n");
		return -1;
	}

	//-----------------------------------------------------------------------
	// 데몬 만들기 
	//-----------------------------------------------------------------------
	// acceptor 가 초기화 된 후 데몬을 만들게 되면, 부모프로세스가 제거되면서
	// listen 소켓도 같이 제거된다. 그러므로 acceptor 를 초기화 하기 전에
	// 데몬을 먼저 만들어야 한다.
	if(Config::instance()->process.daemon == true)
	{
		if(makeDaemon() < 0)
		{
			printf("데몬으로 만들기를 실패했으므로 프로그램을 종료합니다.\n");
			return -1;
		}
	}
	
	PAS_NOTICE1("%s", compile_date);

	// 시그널 핸들러
	PasSignalHandler* pSignalHandler = new PasSignalHandler;
	initSignal(pSignalHandler);

	//------------------
	// 각 모듈의 초기화
	//------------------
	HTTP::Request::HeaderBuffBytes = HTTP::Response::HeaderBuffBytes = Config::instance()->process.HttpHeaderBufferBytes;
	
	increseFdLimit();

	
	// PAS 공식 로그
	char hostName[32];

	gethostname(hostName, sizeof(hostName)-1);
	PasDataLog::setPasAddr(hostName);
	
	// 메모리 매니저 초기화
	//initMessageBlockManager();
	if (readMBconfig() < 0)
	{
		printf("메모리 풀 컨피그 설정값을 확인하세요.\n");
		PAS_ERROR("메모리 풀 컨피그 설정값을 확인하세요.\n");
		return -1;
	}

	const int numWorkerThread = Config::instance()->thread.numWorker;

	// 리액터
	ACE_Reactor* pReactor = ReactorPool::instance()->createMaster();
	
	ReactorPool::instance()->createWorkers(numWorkerThread);

	ACE_Reactor* pGlobalReactor = ACE_Reactor::instance();

	PAS_NOTICE3("REACTOR: Master=%X, Global=%X, Master=%x", 
		pReactor,  pGlobalReactor, ReactorPool::instance()->masterReactor());

	// Listen 포트 설정
	PAS_NOTICE("Listen Socket Activate");
	PasAcceptor* pAcceptor = new PasAcceptor(pReactor);
	
	const int listenPort = Config::instance()->network.listenPort;

	// mIDC 내의 서버를 감시하는 쪽에 mwatch 전달하기 위해 메시지 작성한다.
	Util2::setMwatchMsg(listenPort);

	// acceptor 기동 
	if(pAcceptor->open(listenPort) < 0)
	{
		PAS_ERROR1("Listen 소켓 생성 실패, Port[%d]\n", listenPort);
		PAS_ERROR("프로그램 종료\n");

		printf("Listen 소켓 생성 실패, Port[%d]\n", listenPort);
		printf("프로그램 종료\n");
		return -1;
	}

	// 쓰레드 매니저
	ACE_Thread_Manager* pTManager = ACE_Thread_Manager::instance();	

	// monitor 보고리를 위한 thread 를 생성한다.
	MonitorReporter *monitor = MonitorReporter::instance(pTManager);
	monitor->activate(THR_NEW_LWP | THR_JOINABLE);

	WatchReporter *watch = WatchReporter::instance(pTManager);
	watch->activate(THR_NEW_LWP | THR_JOINABLE);

	// UserInfo 관리를 위한 thread 를 생성한다.
	UserInfoMng *userInfoMng = UserInfoMng::instance(pTManager);
	userInfoMng->activate(THR_NEW_LWP | THR_JOINABLE);
	
	// phone trace 를 위한 thread 를 생성한다.
	PhoneTraceMng *phoneTraceMng = PhoneTraceMng::instance(pTManager);
	phoneTraceMng->setDataFile((char*)"trace.acl");
	phoneTraceMng->activate(THR_NEW_LWP | THR_JOINABLE);

	// 공지 처리 (Stat Filter)  를 위한 thread 를 생성한다.
	StatFilterMng *statFilterMng = StatFilterMng::instance(pTManager);
	statFilterMng->setDataFile((char*)"k_stat.cfg");
	statFilterMng->activate(THR_NEW_LWP | THR_JOINABLE);

	// ACL 초기화
	if(Config::instance()->acl.enable)
		initACL();

	CGI::cgiSetupConstants();
	
	// Create AuthAgent Thread
	AuthAgent *authAgent = AuthAgent::instance(pTManager);
	authAgent->activate(THR_NEW_LWP | THR_JOINABLE);

	//usleep(1000);
	
	// 내부 정보 (sysinfo) 출력를 위한 Thread
	SysInfo  *sysInfo = SysInfo::instance(pTManager);
	sysInfo->activate(THR_NEW_LWP | THR_JOINABLE);

	// hash key 로그 작성을 위한 초기화.
	HashKey::prepare();
	
	// 로그 화일을 먼저 만들어 놓는다.  테스트시에 편하다. (tail -f )
	PasDataLog::instance();
	
	// accept event 핸들러 등록
	pReactor->register_handler(pAcceptor, ACE_Event_Handler::ACCEPT_MASK);

	// 이벤트 디멀티플렉싱
	PAS_NOTICE("Master Reactor Start");
	pReactor->run_event_loop();
	PAS_NOTICE("Master Reactor Stop");

	ReactorPool::instance()->stopWorkers();


	/*--- Reactor 가 종료된 경우 아래 라인으로 진행된다. ---*/

	stopACL(); // ACL 종료
	userInfoMng->stop();
	monitor->stop();
	watch->stop();
	phoneTraceMng->putq(new ACE_Message_Block());
	statFilterMng->putq(new ACE_Message_Block());
	sysInfo->putq(new ACE_Message_Block());
	authAgent->putq(new ACE_Message_Block());

	DNS::Manager::instance()->removeAllQuerier();
	
	// 모든 쓰레드 종료 대기
	PAS_NOTICE("Waiting for all threads to stop");
	pTManager->wait();

	delete phoneTraceMng;
	delete statFilterMng;
	delete sysInfo;
	// 생성한 동적 객체 삭제
	delete pSignalHandler;
	
	PAS_NOTICE("======= PAS GW Stop =======");

	return 0;
}