Example #1
0
int main(int argc, char* argv[]){
struct s_ProcessParam param;
pomxpump omx_pump=&param.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(&param);
StartProcess();
GetProcessParam(&param);
sleep(10);
StopProcess();
sem_wait(param.VideoParam.p_params.omx_pump_params.stop_sem);
StopProcess();
	return 0;
}
Example #2
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);
}
Example #3
0
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;
	}
}