OpenCores
URL https://opencores.org/ocsvn/pcie_ds_dma/pcie_ds_dma/trunk

Subversion Repositories pcie_ds_dma

[/] [pcie_ds_dma/] [trunk/] [soft/] [linux/] [driver/] [pexdrv/] [event.c] - Diff between revs 2 and 54

Show entire file | Details | Blame | View Log

Rev 2 Rev 54
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;
    }
    }

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.