Line 39... |
Line 39... |
}
|
}
|
////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////
|
//
|
//
|
int ResetEvent ( KEVENT * event )
|
int ResetEvent ( KEVENT * event )
|
{
|
{
|
//printk("<0>%s() %p\n", __FUNCTION__, event);
|
//printk("%s() %p\n", __FUNCTION__, event);
|
atomic_set ( &event->m_flag, 0 );
|
atomic_set ( &event->m_flag, 0 );
|
return 0;
|
return 0;
|
}
|
}
|
////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////
|
//
|
//
|
Line 51... |
Line 51... |
{
|
{
|
atomic_set ( &event->m_flag, 1 ); //for kernel space...
|
atomic_set ( &event->m_flag, 1 ); //for kernel space...
|
|
|
wake_up_interruptible( &event->m_wq );
|
wake_up_interruptible( &event->m_wq );
|
|
|
//printk("<0>%s(): %p\n", __FUNCTION__, event);
|
//printk("%s(): %p\n", __FUNCTION__, event);
|
|
|
//if (event->m_async)
|
//if (event->m_async)
|
// kill_fasync(&event->m_async, SIGIO, POLL_IN|POLL_OUT);
|
// kill_fasync(&event->m_async, SIGIO, POLL_IN|POLL_OUT);
|
|
|
return 0;
|
return 0;
|
}
|
}
|
////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////
|
//
|
//
|
int CheckEventFlag ( KEVENT * event )
|
int CheckEventFlag ( KEVENT * event )
|
{
|
{
|
//printk("<0>%s(): %p\n", __FUNCTION__, event);
|
//printk("%s(): %p\n", __FUNCTION__, event);
|
|
|
if ( atomic_read ( &event->m_flag ) )
|
if ( atomic_read ( &event->m_flag ) )
|
{
|
{
|
//ResetEvent ( event );
|
//ResetEvent ( event );
|
return 1;
|
return 1;
|
Line 83... |
Line 83... |
//
|
//
|
int WaitEvent( KEVENT * event, u32 timeout )
|
int WaitEvent( KEVENT * event, u32 timeout )
|
{
|
{
|
int status = -1;
|
int status = -1;
|
|
|
//printk("<0>%s()\n", __FUNCTION__);
|
//printk("%s()\n", __FUNCTION__);
|
|
|
#ifdef DZYTOOLS_2_4_X
|
#ifdef DZYTOOLS_2_4_X
|
status = interruptible_sleep_on_timeout( &event->m_wq, ms_to_jiffies(timeout) );
|
status = interruptible_sleep_on_timeout( &event->m_wq, ms_to_jiffies(timeout) );
|
#else
|
#else
|
status = wait_event_interruptible_timeout( event->m_wq, atomic_read(&event->m_flag), ms_to_jiffies(timeout) );
|
status = wait_event_interruptible_timeout( event->m_wq, atomic_read(&event->m_flag), ms_to_jiffies(timeout) );
|
#endif
|
#endif
|
|
|
if(!status) {
|
if(!status) {
|
printk("<0>%s(): TIMEOUT\n", __FUNCTION__);
|
printk("%s(): TIMEOUT\n", __FUNCTION__);
|
return -ETIMEDOUT;
|
return -ETIMEDOUT;
|
}
|
}
|
|
|
atomic_set ( &event->m_flag, 0 );
|
atomic_set ( &event->m_flag, 0 );
|
|
|
Line 105... |
Line 105... |
|
|
////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////
|
//
|
//
|
int GrabEvent( KEVENT * event, u32 timeout )
|
int GrabEvent( KEVENT * event, u32 timeout )
|
{
|
{
|
//printk ( "<0>%s(): E %p, T %d\n", __FUNCTION__, event, timeout );
|
//printk ( "%s(): E %p, T %d\n", __FUNCTION__, event, timeout );
|
|
|
if( CheckEventFlag( event ) ) {
|
if( CheckEventFlag( event ) ) {
|
ResetEvent(event);
|
ResetEvent(event);
|
return 0;
|
return 0;
|
}
|
}
|