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; }
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; }
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; }
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; }
//--------------------------------------------------------------------------- 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; }