c为qnx中的中断编程?

时间:2014-04-02 06:14:41

标签: c linux interrupt qnx qnx-neutrino

客户端 - 服务器通信 - 客户端是发送方,服务器是接收方。当服务器在以太网接口(UDP)上接收数据时,服务器中的内核被触发。我在服务器端使用QNX。服务器(即嵌入式pc目标)处理中断以触发嵌入式PC目标(包含QNX)以获得注意执行新到达的数据。

 const struct sigevent *handler1(void *area, int id1)
 {
    volatile double KernelStartExecutionTime;
    struct sigevent *event = (struct sigevent *)area;
     KernelStartExecutionTime = GetTimeStamp();   // calculating the time when the kernel //starts executing
     measurements[18] = KernelStartExecutionTime ;
    //return (NULL);
     return event;

 }



 /*kernel calls attach the interrupt function handler to the hardware interrupt specified by intr(i.e irq) */
 // InterruptAttach() : Attach an interrupt handler to an interrupt source
 // interrupt source is handler1 for this example
void ISR(void)   //void *ISR (void *arg)
 {
/*  the software must tell the OS that it wishes to associate the ISR with a particular source of interrupts.
 *  On x86 platforms, there are generally 16 hardware Interrupt Request lines (IRQs) */
 volatile int irq = 0;   //0 :  A clock that runs at the resolution set by ClockPeriod()
 struct sigevent event;
 event.sigev_notify = SIGEV_INTR;

 ThreadCtl (_NTO_TCTL_IO, NULL);  // enables the hardware interrupt
 id1 = InterruptAttach(irq, &handler1, &event, sizeof(event), 0);    // handler1 is the ISR

while(1)
{

 InterruptWait( 0, NULL );
 InterruptUnmask(irq, id1);

}

 InterruptDetach( id1);

 }

int main(int argc,char * argv []) {

 ISR();      //function call for ISR

// pthread_create (NULL, NULL, ISR, NULL);
 return 0;

}

问题: 我应该在main ??

中创建一个新的线程来处理中断

0 个答案:

没有答案