⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 timer.c

📁 PXA255/270平台的 CS8900网卡驱动程序
💻 C
字号:
//---------------------------------------------------------------------------
//
//  Copyright (C) 1996-1997. Unpublished Work of Crystal Semiconductor Corp.
//  All Rights Reserved.
//
//  THIS WORK IS AN UNPUBLISHED WORK AND CONTAINS CONFIDENTIAL,
//  PROPRIETARY AND TRADE SECRET INFORMATION OF CRYSTAL SEMICONDUCTOR.
//  ACCESS TO THIS WORK IS RESTRICTED TO (I) CRYSTAL SEMICONDUCTOR EMPLOYEES
//  WHO HAVE A NEED TO KNOW TO PERFORM TASKS WITHIN THE SCOPE OF THEIR
//  ASSIGNMENTS  AND (II) ENTITIES OTHER THAN CRYSTAL SEMICONDUCTOR WHO
//  HAVE ENTERED INTO  APPROPRIATE LICENSE AGREEMENTS.  NO PART OF THIS
//  WORK MAY BE USED, PRACTICED, PERFORMED, COPIED, DISTRIBUTED, REVISED,
//  MODIFIED, TRANSLATED, ABRIDGED, CONDENSED, EXPANDED, COLLECTED,
//  COMPILED,LINKED,RECAST, TRANSFORMED, ADAPTED IN ANY FORM OR BY ANY
//  MEANS,MANUAL, MECHANICAL, CHEMICAL, ELECTRICAL, ELECTRONIC, OPTICAL,
//  BIOLOGICAL, OR OTHERWISE WITHOUT THE PRIOR WRITTEN PERMISSION AND
//  CONSENT OF CRYSTAL SEMICONDUCTOR . ANY USE OR EXPLOITATION OF THIS WORK
//  WITHOUT THE PRIOR WRITTEN CONSENT OF CRYSTAL SEMICONDUCTOR  COULD
//  SUBJECT THE PERPETRATOR TO CRIMINAL AND CIVIL LIABILITY.
//
//---------------------------------------------------------------------------

#include "cs8900a.h"



WORD  VominiStartup(PVOMINIPDATA pOSD, NDIS_HANDLE MiniportAdapterHandle )
{
    WORD Result = SUCCESS;
    WORD i;

    PRINTDEBUGMSG(1, (TEXT("==>CS8900:VominiStartup\r\n")));   
    NdisZeroMemory(pOSD, sizeof(VOMINIPDATA));
    for (i=0; i<MAX_TIMERS; i++) 
    {
        pOSD->Timers[i].TimerActive = FALSE;
        pOSD->Timers[i].TimerID = i;
        
        NdisMInitializeTimer(&pOSD->Timers[i].TimerHandle,
                             MiniportAdapterHandle,
                             VominiTimerDaemon,
                             &pOSD->Timers[i]);

    } /* endfor */
    PRINTDEBUGMSG(1, (TEXT("<==CS8900:VominiStartup\r\n")));   
    return Result;
};

void  VominiShutdown( PVOID pOSD )
{
    WORD i;
    BOOLEAN Cancelled;

    PRINTDEBUGMSG(1, (TEXT("==>CS8900:VominiShutdown\r\n")));   
    for (i=0; i<MAX_TIMERS; i++) 
    {
        if (((PVOMINIPDATA)pOSD)->Timers[i].TimerActive) 
        {
            NdisMCancelTimer( &(((PVOMINIPDATA)pOSD)->Timers[i].TimerHandle),
                           &Cancelled );
        } /* endif */
    } /* endfor */
    PRINTDEBUGMSG(1, (TEXT("<==CS8900:VominiShutdown\r\n")));   
};

WORD  VominiStartTimer( PCHIP pChip, TIMER_EVENT_HANDLER pEventHandler,
           DWORD mSecondDuration, PWORD pTimerID, PVOID pParm )
{
    WORD Result = SUCCESS;
    WORD i;

    PVPMINIPDATA pvMini_Context = (PVPMINIPDATA)(pChip->pPSD); 
    NDIS_HANDLE MiniportAdapterHandle = pvMini_Context->vpMiniportAdapterHandle; 
    PVOMINIPDATA pOSD = pChip->pOSD;

    PRINTDEBUGMSG(1, (TEXT("==>CS8900:VominiStartTimer\r\n")));   
    for (i=0; i<MAX_TIMERS; i++) 
    {
        if (pOSD->Timers[i].TimerActive == FALSE)
            break;
    } /* endfor */

    if (i < MAX_TIMERS) 
    {
        *pTimerID = i;
        pOSD->Timers[i].pChip = pChip;
        pOSD->Timers[i].pParm = pParm;
        pOSD->Timers[i].TimerActive = TRUE;
        pOSD->Timers[i].TimerRoutine = pEventHandler;
        NdisMSetTimer( &(pOSD->Timers[i].TimerHandle), mSecondDuration );
    } 
    else 
        Result = FAILURE;

    PRINTDEBUGMSG(1, (TEXT("<==CS8900:VominiStartTimer\r\n")));   
    return Result;
};

void  VominiStopTimer( PCHIP pChip, WORD TimerID )
{
    BOOLEAN Cancelled;

    PVPMINIPDATA pvMini_Context = (PVPMINIPDATA)(pChip->pPSD); 
    NDIS_HANDLE MiniportAdapterHandle = pvMini_Context->vpMiniportAdapterHandle; 
    PVOMINIPDATA pOSD = pChip->pOSD;

    PRINTDEBUGMSG(1, (TEXT("==>CS8900:VominiStopTimer\r\n")));   
    NdisMCancelTimer( &(pOSD->Timers[TimerID].TimerHandle), &Cancelled );
    pOSD->Timers[TimerID].TimerActive = FALSE;
    PRINTDEBUGMSG(1, (TEXT("<==CS8900:VominiStopTimer\r\n")));   
};

VOID VominiTimerDaemon(IN PVOID SystemSpecific1,
                       IN PVOID Context,
                       IN PVOID SystemSpecific2,
                       IN PVOID SystemSpecific3)

{
    PVOMINITIMER pTimer = (PVOMINITIMER)Context;
    PRINTDEBUGMSG(1, (TEXT("==>CS8900:VominiTimerDaemon\r\n")));   
    pTimer->TimerActive = FALSE;
    pTimer->TimerRoutine( pTimer->pChip, pTimer->TimerID, pTimer->pParm );
    PRINTDEBUGMSG(1, (TEXT("<==CS8900:VominiTimerDaemon\r\n")));   
}

VOID VominiDelay( DWORD mSecondDuration )
{
    DWORD i;
    DWORD uSecondDuration = mSecondDuration*1000;

    PRINTDEBUGMSG(1, (TEXT("==>CS8900:VominiDelay\r\n")));   
    for (i=0; i<uSecondDuration/50; i++) 
        NdisStallExecution( (DWORD) (50) );
    PRINTDEBUGMSG(1, (TEXT("<==CS8900:VominiDelay\r\n")));   
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -