int main(int argc, char* argv[]){ struct s_ProcessParam param; pomxpump omx_pump=¶m.VideoParam.p_params.omx_pump_params; call_chain new_entry; INIT_LIST_HEAD(&omx_pump->callback_chain); new_entry.read_callback = test_callback; new_entry.callback_data = NULL; list_add(&new_entry.entry, &omx_pump->callback_chain ); printf("MAIN LIST: %p %p %p %p\n", &new_entry.entry, new_entry.entry.next, &omx_pump->callback_chain, omx_pump->callback_chain.next); param.VideoParam.p_type=eOMX_PUMP; SetProcessParam(¶m); StartProcess(); GetProcessParam(¶m); sleep(10); StopProcess(); sem_wait(param.VideoParam.p_params.omx_pump_params.stop_sem); StopProcess(); return 0; }
extern int main( int argc, char **argv) { struct sigaction sa_segv, sa_stop; FILE_LIST *fl; int rc; ENTER_FUNC; InitNET(); memset( &sa_segv, 0, sizeof(struct sigaction) ); sa_segv.sa_flags = SA_SIGINFO; sa_segv.sa_sigaction = SegvProcess; sigemptyset (&sa_segv.sa_mask); sigaction( SIGSEGV, &sa_segv, NULL ); memset( &sa_stop, 0, sizeof(struct sigaction) ); sigemptyset (&sa_stop.sa_mask); sa_stop.sa_flags = 0; sa_stop.sa_handler = StopProcess; sigaction( SIGHUP, &sa_stop, NULL ); SetDefault(); fl = GetOption(option,argc,argv,NULL); InitMessage("dbstub",NULL); InitNET(); if ( BD_Name == NULL ) { Error("BD name is not specified."); } if ( fl == NULL ) { Error("module name is not specified."); } snprintf(AppName, sizeof(AppName), "dbstub-%s",fl->name); InitSystem(fl->name); Message("module %s: %.20s", fl->name, CommandParameter); rc = ExecuteSubProcess(fl->name); StopProcess(rc); return (rc); }
void MemCheckPlugin::OnStopProcess(wxCommandEvent& event) { wxUnusedVar(event); StopProcess(); }
void CBExecOutputDocument::Receive ( JBroadcaster* sender, const Message& message ) { if (sender == itsRecordLink && message.Is(JMessageProtocolT::kMessageReady)) { ReceiveRecord(); } else if (sender == itsDataLink && message.Is(JAsynchDataReceiverT::kDataReady)) { ReceiveData(message); } else if (sender == itsProcess && message.Is(JProcess::kFinished)) { const JProcess::Finished* info = dynamic_cast<const JProcess::Finished*>(&message); assert( info != NULL ); const JBoolean stayOpen = ProcessFinished(*info); // let somebody else start a new process itsClearWhenStartFlag = kJFalse; // in case they call SetConnection() in ReceiveWithFeedback() Finished msg(info->Successful(), JI2B(info->GetReason() != kJChildFinished)); BroadcastWithFeedback(&msg); itsClearWhenStartFlag = JI2B(itsUseCount == 0 && !msg.SomebodyIsWaiting()); if (itsUseCount == 0 && !stayOpen && !ProcessRunning()) { Close(); } } else if (sender == itsPauseButton && message.Is(JXButton::kPushed)) { ToggleProcessRunning(); } else if (sender == itsStopButton && message.Is(JXButton::kPushed)) { StopProcess(); } else if (sender == itsKillButton && message.Is(JXButton::kPushed)) { KillProcess(); } else if (sender == itsEOFButton && message.Is(JXButton::kPushed)) { if (!(itsCmdInput->GetText()).IsEmpty()) { itsCmdInput->HandleKeyPress(kJReturnKey, JXKeyModifiers(GetDisplay())); } CloseOutFD(); UpdateButtons(); } else { CBTextDocument::Receive(sender, message); } }
/******************************************************************* * * エレベーター制御文 * *******************************************************************/ void Elevator::CntorolStatement() { switch(m_ControlState) { case CONTROL::FREE://フリー状態 break; case CONTROL::MOVE://目的フロア移動する状態 //目的地でなければ if( !m_CDataSupport.isDestination() ){ //エレベーター稼働 Running(); } //目的地ならば else{ //エレベーター停止処理 StopProcess(); //全搭乗口の進路ガイドの方向を進路方向に変える setAllGuideVector(m_CDataSupport.m_CourseDirection); //制御を到着状態に m_ControlState = CONTROL::ARRIVE; } break; case CONTROL::ARRIVE://フロアに到着した状態 //ゲートを開く if( m_CGate[m_Gate_Ypos]!=NULL ){ //ゲートに開閉指示をだす m_CGate[m_Gate_Ypos]->StartOperation(); } //制御を待機状態に m_ControlState = CONTROL::WAIT; break; case CONTROL::WAIT://待機状態 //ゲートが完全に開いたら if( m_CGate[m_Gate_Ypos]->getDoorState() == ELEVATOR::OPEN ){ //降りたい利用者を降ろす UserTakeDown(); break; } //ゲートが半端なら else if( m_CGate[m_Gate_Ypos]->getDoorState() == ELEVATOR::HALF ){ break; } //ゲートが完全に閉まっていれば else if( m_CGate[m_Gate_Ypos]->getDoorState() == ELEVATOR::CLOSE ){ //待機時間をリセット m_CGate[m_Gate_Ypos]->OperationReset(); //乗客がいれば if(m_isUserRiding){ //同フロア対策 m_State = m_CDataSupport.m_CourseDirection; //利用者の要求を追加 addUserRequest(); //始動準備させる StartSetting(); break; } //要求が無ければ if( !m_CDataSupport.isCallRequest() ) { DirectionClear();//エレベーターの方向データを全て初期化 m_CGate[m_Gate_Ypos]->StateReset();//ゲートの状態を初期化 m_ControlState = CONTROL::FREE;//制御をフリー状態に初期化 } } break; } }