Beispiel #1
0
CIRDriver::~CIRDriver()
{
	DEBUG("~CIRDriver\n");
	ResetPort();
	KillThread(&IRThreadHandle,&IRThreadEvent);
	KillThread(&DaemonThreadHandle,&DaemonThreadEvent);
	if(hDataReadyEvent) CloseHandle(hDataReadyEvent);
}
/*
================
idThread::Event_TerminateThread
================
*/
void idThread::Event_TerminateThread( int num )
{
    idThread *thread;

    thread = GetThread( num );
    KillThread( num );
}
Beispiel #3
0
void CIRDriver::ResetPort(void)
{
	DEBUG("Resetting port\n");
	
	KillThread(&IRThreadHandle,&IRThreadEvent);
	KillThread(&DaemonThreadHandle,&DaemonThreadEvent);
	
	if(ov.hEvent) {
		CloseHandle(ov.hEvent);
		ov.hEvent=NULL;
	}
	if(hPort) {
		CloseHandle(hPort);
		hPort=NULL;
	}
}
Beispiel #4
0
void C_thread::CreateThread(E_PRIORITY priority){

   quit_request = false;
   KillThread();
   status = STATUS_STARTING;
   RThread1 *tp = new(true) RThread1;
   tp->owner = (C_thread_access*)this;
#ifndef __SYMBIAN_3RD__
   tp->gd = GetGlobalData();
#endif
   imp = tp;
                              //make unique thread name
   Cstr_w tname; tname<<L"Thread-" <<GetTickTime();
   tp->Create(TPtrC((const word*)(const wchar*)tname, tname.Length()), ThreadProcThunk, 8192, NULL, tp);
   TThreadPriority pr;
   switch(priority){
   case PRIORITY_VERY_LOW: pr = EPriorityMuchLess; break;
   case PRIORITY_LOW: pr = EPriorityLess; break;
   default: assert(0);
   case PRIORITY_NORMAL: pr = EPriorityNormal; break;
   case PRIORITY_HIGH: pr = EPriorityMore; break;
   case PRIORITY_VERY_HIGH:
      //pr = EPriorityRealTime;
      pr = EPriorityAbsoluteHigh;
      break;
   }
   tp->SetPriority(pr);

   tp->Resume();
}
CDealCMDThread::~CDealCMDThread(void)
{
	m_bSafeExit = TRUE;
	while(m_bThreadRolling)
		Sleep(1);

	KillThread();
}
void CCreditsDlg::OnDestroy() 
{
	KillThread();

	delete m_pDC;
	m_pDC = NULL;

	delete m_image;
	m_image = NULL;

	CDialog::OnDestroy();
}
Beispiel #7
0
Cserver::~Cserver()
{
	KillThread(&ServerThreadHandle,&ServerThreadEvent);
	for(int i=0;i<MAX_CLIENTS;i++)
	{
		if(clients[i]!=INVALID_SOCKET)
		{
			DEBUG("closing socket %d\n",i);
			closesocket(clients[i]);
		}
	}
	if(server!=INVALID_SOCKET)
	{
		closesocket(server);
		DEBUG("Server socket closed.\n");
	}
	WSACleanup();
}
Beispiel #8
0
void PauseThread(THREAD *pstThd)
  {
  WORD wSaveReadTimeout;
  WORD wSaveWriteTimeout;
  BYTE bySaveFlags3;
  DCB stComDCB;

  GetDCB(&stIOctlInst,pstThd->hCom,&stComDCB);
  wSaveReadTimeout = stComDCB.ReadTimeout;
  wSaveWriteTimeout = stComDCB.WrtTimeout;
  bySaveFlags3 = stComDCB.Flags3;
  stComDCB.ReadTimeout = 1;
  stComDCB.WrtTimeout = 1;
  stComDCB.Flags3 = F3_WAIT_NONE;
  SendDCB(&stIOctlInst,pstThd->hCom,&stComDCB);
  KillThread(pstThd);
  stComDCB.WrtTimeout = wSaveWriteTimeout;
  stComDCB.ReadTimeout = wSaveReadTimeout;
  stComDCB.Flags3 = bySaveFlags3;
  SendDCB(&stIOctlInst,pstThd->hCom,&stComDCB);
  }
Beispiel #9
0
RFFEAnalyzer::~RFFEAnalyzer() {
  KillThread();
}
Beispiel #10
0
/*
================
idThread::Event_TerminateThread
================
*/
void idThread::Event_TerminateThread( int num ) {
	KillThread( num );
}
Beispiel #11
0
/*
================
idThread::Event_KillThread
================
*/
void idThread::Event_KillThread( const char *name ) {
	KillThread( name );
}
Beispiel #12
0
void Receive::deinit() {
	KillThread(exitEvent,threadHandle);
	LWEXT_Close();
}
Beispiel #13
0
IRAnalyzer::~IRAnalyzer()
{
	KillThread();
}
Beispiel #14
0
int ServerQAction(int *addr, short *port, int *op, int *flags, int *jobid, 
                  void *p1, void *p2, void *p3, void *p4, void *p5, void *p6, void *p7, void *p8)
{
  int status;
  switch (*op)
  {
  case SrvRemoveLast:
  {
    status = RemoveLast();
    break;
  }
  case SrvAbort:
    {
      ServerSetDetailProc(0);
      KillThread();
      AbortJob(GetCurrentJob());
      ReleaseCurrentJob();
      SetCurrentJob(0);
      if (*(int *)p1)
      {
        SrvJob *job;
        while ((job = NextJob(0)) != 0)
          AbortJob(job);
      }
      status = StartThread();
      break;
    }
  case SrvAction:
    {

      SrvActionJob job;
      job.h.addr  = MdsGetClientAddr();
      job.h.port  = *port;
      job.h.op    = *op;
      job.h.length = sizeof(job);
      job.h.flags = *flags;
      job.h.jobid = *jobid;
      job.tree = strcpy(malloc(strlen((char *)p1)+1),(char *)p1);
      job.shot = *(int *)p2;
      job.nid = *(int *)p3;
      status = QJob((SrvJob *)&job);
      break;
    }
  case SrvClose:
    {
      SrvCloseJob job;
      job.h.addr  = MdsGetClientAddr();
      job.h.port  = *port;
      job.h.op    = *op;
      job.h.length = sizeof(job);
      job.h.flags = *flags;
      job.h.jobid = *jobid;
      status = QJob((SrvJob *)&job);
      break;
    }
  case SrvCreatePulse:
    {
      SrvCreatePulseJob job;
      job.h.addr  = MdsGetClientAddr();
      job.h.port  = *port;
      job.h.op    = *op;
      job.h.length = sizeof(job);
      job.h.flags = *flags;
      job.h.jobid = *jobid;
      job.tree = strcpy(malloc(strlen((char *)p1)+1),(char *)p1);
      job.shot = *(int *)p2;
      status = QJob((SrvJob *)&job);
      break;
    }
  case SrvSetLogging:
    {
      Logging = *(int *)p1;
      break;
    }
  case SrvCommand:
    {
      SrvCommandJob job;
      job.h.addr  = MdsGetClientAddr();
      job.h.port  = *port;
      job.h.op    = *op;
      job.h.length = sizeof(job);
      job.h.flags = *flags;
      job.h.jobid = *jobid;
      job.table = strcpy(malloc(strlen((char *)p1)+1),(char *)p1);
      job.command = strcpy(malloc(strlen((char *)p2)+1),(char *)p2);
      status = QJob((SrvJob *)&job);
      break;
    }
  case SrvMonitor:
    {
      SrvMonitorJob job;
      job.h.addr  = MdsGetClientAddr();
      job.h.port  = *port;
      job.h.op    = *op;
      job.h.length = sizeof(job);
      job.h.flags = *flags;
      job.h.jobid = *jobid;
      job.tree = strcpy(malloc(strlen((char *)p1)+1),(char *)p1);
      job.shot = *(int *)p2;
      job.phase  = *(int *)p3;
      job.nid  = *(int *)p4;
      job.on   = *(int *)p5;
      job.mode = *(int *)p6;
      job.server = strcpy(malloc(strlen((char *)p7)+1),(char *)p7);
      job.status = *(int *)p8; 
      status = QJob((SrvJob *)&job);
      break;
    }
  case SrvShow:
    {
      status = ShowCurrentJob((struct descriptor_xd *)p1);
      break;
    }
  case SrvStop:
    {
      printf("%s, Server stop requested\n",Now());
      exit(0);
      break;
    }
  }
  return status;
}
Beispiel #15
0
int RAD_Thread::StopAndWait(unsigned int delay)
{
    if(!m_StartStopLock.Acquire(5000, __FILE__, __LINE__))
        return -1;

    // Check state to see whether it could be stopped
    if(m_handle == 0) {
        radlog(L_WARN, "[RAD_Thread] '%s' already stopped",
               m_ThreadName.c_str());
        m_StartStopLock.Release(__FILE__, __LINE__);
        return -1;
    }

    m_bShouldWatch = false; // prevent from watching-dogged

    if(!IsStopped())
        RequestStop();

    DEBUG("[RAD_Thread] Requested termination of '%s', "
          "waiting %u msec for end", m_ThreadName.c_str(), delay);

    // wait for the thread to stop if it is still running
    rad_assert(m_Alive != ASUnused);
    bool isKilled = false;
    if(m_Alive == ASAlive) {
        bool ret = m_StartStopLock.Wait(delay, __FILE__, __LINE__);
        if(ret == false) {
            radlog(L_WARN, "[RAD_Thread] '%s' did not end within %u msec",
                   m_ThreadName.c_str(), delay);
            KillThread(9); // 9 - SIGKILL
            m_Alive = ASStop;
            isKilled = true;
        }
    }
    rad_assert(m_Alive == ASStop || m_Alive == ASDead);

    // join the thread to deallocate thread resources
#ifdef RAD_OS_WIN32
    if(WaitForSingleObject((HANDLE)m_handle, INFINITE) != WAIT_OBJECT_0) {
        radlog(L_ERROR|L_CONS, "[RAD_Thread] Failed to join: %s",
               RAD_Util::GetLastErrDesc("WaitForSingleObject").c_str());
        m_StartStopLock.Release(__FILE__, __LINE__);
        return -1;
    }
    DWORD dwExitCode;
    if(!GetExitCodeThread((HANDLE)m_handle, &dwExitCode)) {
        radlog(L_ERROR|L_CONS, "[RAD_Thread] %s",
               RAD_Util::GetLastErrDesc("GetExitCodeThread").c_str());
        m_StartStopLock.Release(__FILE__, __LINE__);
        return -1;
    }
    if(!CloseHandle((HANDLE)m_handle)) {
        radlog(L_ERROR|L_CONS, "[RAD_Thread] %s",
               RAD_Util::GetLastErrDesc("CloseHandle").c_str());
        m_StartStopLock.Release(__FILE__, __LINE__);
        return -1;
    }
    Reset();
    m_StartStopLock.Release(__FILE__, __LINE__);
    return dwExitCode;
#else
    void* retcode;
    if(pthread_join((pthread_t)m_handle, &retcode)) {
        radlog(L_ERROR|L_CONS, "[RAD_Thread] %s",
               RAD_Util::GetLastErrDesc("pthread_join").c_str());
        m_StartStopLock.Release(__FILE__, __LINE__);
        return -1;
    }
    Reset();
    m_StartStopLock.Release(__FILE__, __LINE__);
    return (isKilled ? 9 : (int)retcode);
#endif
}
Beispiel #16
0
void Receive::deinit()
{
	KillThread(exitEvent,threadHandle);
	m_pKsVCPropSet.Release();
}
ManchesterAnalyzer::~ManchesterAnalyzer()
{
	KillThread();
}
HD44780Analyzer::~HD44780Analyzer()
{
	KillThread();
}
Beispiel #19
0
PWMAnalyzer::~PWMAnalyzer()
{
    KillThread();
}
Beispiel #20
0
N64Analyzer::~N64Analyzer()
{
	KillThread();
}
Beispiel #21
0
LINAnalyzer::~LINAnalyzer()
{
	KillThread();
}
Beispiel #22
0
void SendReceiveData::deinit() {

	KillThread(exitEvent,threadHandle);
}
Beispiel #23
0
I2sAnalyzer::~I2sAnalyzer()
{
	KillThread();
}
Beispiel #24
0
JtagAnalyzer::~JtagAnalyzer()
{
	KillThread();
}
PS2KeyboardAnalyzer::~PS2KeyboardAnalyzer()
{
	KillThread();
}
SerialAnalyzer::~SerialAnalyzer()
{
	KillThread();
}
Beispiel #27
0
bool CIRDriver::InitPort(CIRConfig *cfg, bool daemonize)
{
	struct ir_remote *tmp;
	if(cfg==NULL) return false;

	DEBUG("Initializing port...\n");

	KillThread(&IRThreadHandle,&IRThreadEvent);
	KillThread(&DaemonThreadHandle,&DaemonThreadEvent);
	cbuf_start=cbuf_end=0;
	
	if(ov.hEvent)
	{
		SetEvent(ov.hEvent);	// singal it
		Sleep(100);				// wait a tiny bit
		CloseHandle(ov.hEvent);	// and close it
		ov.hEvent=NULL;
	}

	if(hPort)
	{
		SetCommMask(hPort,0);	// stop any waiting on the port
		Sleep(100);				// wait a tiny bit
		CloseHandle(hPort);		// and close it
		hPort=NULL;
	}

	if((hPort=CreateFile(
		cfg->port,GENERIC_READ | GENERIC_WRITE,
		0,0,OPEN_EXISTING,FILE_FLAG_OVERLAPPED,0))==INVALID_HANDLE_VALUE)
	{
		hPort=NULL;
		return false;
	}

	DCB dcb;
	if(!GetCommState(hPort,&dcb))
	{
		CloseHandle(hPort);
		hPort=NULL;
		return false;
	}
	if (cfg->animax) dcb.fDtrControl=DTR_CONTROL_ENABLE; //set DTR high, the animax receiver needs this for power
	else
		dcb.fDtrControl=DTR_CONTROL_DISABLE; // set the transmit LED to off initially.
	dcb.fRtsControl=RTS_CONTROL_ENABLE;

	dcb.BaudRate = cfg->speed;					
	devicetype = cfg->devicetype;				
	virtpulse = cfg->virtpulse;					

	if(!SetCommState(hPort,&dcb))
	{
		CloseHandle(hPort);
		hPort=NULL;
		DEBUG("SetCommState failed.\n");
		return false;
	}
	tmp=global_remotes;
	while (tmp!=NULL) {
		if (!(tmp->flags&SPECIAL_TRANSMITTER)) tmp->transmitter=cfg->transmittertype;
		tmp=tmp->next;
	}
	SetTransmitPort(hPort,cfg->transmittertype);

	if(cfg->sense==-1)
	{
		/* Wait for receiver to settle (since we just powered it on) */
		Sleep(1000);
		DWORD state;
		if(!GetCommModemStatus(hPort,&state))
		{
			CloseHandle(hPort);
			hPort=NULL;
			return false;
		}
		sense=(state & MS_RLSD_ON) ? 1 : 0;
		DEBUG("Sense set to %d\n",sense);
	}
	else
		sense=cfg->sense;

	if((ov.hEvent=CreateEvent(NULL,TRUE,FALSE,NULL))==NULL)
	{
		CloseHandle(hPort);
		hPort=NULL;
		return false;
	}

	/* Start the thread */
	/* THREAD_PRIORITY_TIME_CRITICAL combined with the REALTIME_PRIORITY_CLASS */
	/* of this program results in the highest priority (26 out of 31) */
	if((IRThreadHandle=
		AfxBeginThread(IRThread,(void *)this,THREAD_PRIORITY_TIME_CRITICAL))==NULL)
	{
		CloseHandle(hPort);
		CloseHandle(ov.hEvent);
		hPort=ov.hEvent=NULL;
		return false;
	}

	if(daemonize)
	{

		/* Start the thread */
		/* THREAD_PRIORITY_IDLE combined with the REALTIME_PRIORITY_CLASS */
		/* of this program still results in a really high priority. (16 out of 31) */
		if((DaemonThreadHandle=
			AfxBeginThread(DaemonThread,(void *)this,THREAD_PRIORITY_IDLE))==NULL)
		{
			KillThread(&IRThreadHandle,&IRThreadEvent);
			CloseHandle(hPort);
			CloseHandle(ov.hEvent);
			hPort=ov.hEvent=NULL;
			return false;
		}
	}

	DEBUG("Port initialized.\n");
	
	return true;
}
AcuriteAnalyzer::~AcuriteAnalyzer()
{
	KillThread();
}
SimpleParallelAnalyzer::~SimpleParallelAnalyzer()
{
	KillThread();
}
AtmelSWIAnalyzer::~AtmelSWIAnalyzer()
{
	KillThread();
}