patch-2.4.25 linux-2.4.25/drivers/net/sk98lin/sktimer.c
Next file: linux-2.4.25/drivers/net/sk98lin/skxmac2.c
Previous file: linux-2.4.25/drivers/net/sk98lin/skqueue.c
Back to the patch index
Back to the overall index
- Lines: 286
- Date:
2004-02-18 05:36:31.000000000 -0800
- Orig file:
linux-2.4.24/drivers/net/sk98lin/sktimer.c
- Orig date:
2003-11-28 10:26:20.000000000 -0800
diff -urN linux-2.4.24/drivers/net/sk98lin/sktimer.c linux-2.4.25/drivers/net/sk98lin/sktimer.c
@@ -1,9 +1,9 @@
/******************************************************************************
*
* Name: sktimer.c
- * Project: Gigabit Ethernet Adapters, Schedule-Modul
- * Version: $Revision: 1.13 $
- * Date: $Date: 2003/05/13 18:01:01 $
+ * Project: Gigabit Ethernet Adapters, Event Scheduler Module
+ * Version: $Revision: 1.14 $
+ * Date: $Date: 2003/09/16 13:46:51 $
* Purpose: High level timer functions.
*
******************************************************************************/
@@ -27,6 +27,10 @@
* History:
*
* $Log: sktimer.c,v $
+ * Revision 1.14 2003/09/16 13:46:51 rschmidt
+ * Added (C) Marvell to SysKonnectFileId
+ * Editorial changes
+ *
* Revision 1.13 2003/05/13 18:01:01 mkarl
* Editorial changes.
*
@@ -68,19 +72,16 @@
*
* Revision 1.1 1998/08/05 11:27:55 gklug
* first version: adapted from SMT
- *
- *
- *
*
******************************************************************************/
/*
- Event queue and dispatcher
-*/
+ * Event queue and dispatcher
+ */
#if (defined(DEBUG) || ((!defined(LINT)) && (!defined(SK_SLIM))))
static const char SysKonnectFileId[] =
- "$Header: /usr56/projects/ge/schedule/sktimer.c,v 1.13 2003/05/13 18:01:01 mkarl Exp $" ;
+ "@(#) $Id: sktimer.c,v 1.14 2003/09/16 13:46:51 rschmidt Exp $ (C) Marvell.";
#endif
#include "h/skdrv1st.h" /* Driver Specific Definitions */
@@ -110,14 +111,14 @@
void SkTimerInit(
SK_AC *pAC, /* Adapters context */
SK_IOC Ioc, /* IoContext */
-int Level) /* Init Level */
+int Level) /* Init Level */
{
switch (Level) {
case SK_INIT_DATA:
- pAC->Tim.StQueue = 0 ;
+ pAC->Tim.StQueue = 0;
break;
case SK_INIT_IO:
- SkHwtInit(pAC,Ioc) ;
+ SkHwtInit(pAC, Ioc);
SkTimerDone(pAC, Ioc);
break;
default:
@@ -134,31 +135,34 @@
SK_IOC Ioc, /* IoContext */
SK_TIMER *pTimer) /* Timer Pointer to be started */
{
- SK_TIMER **ppTimPrev ;
- SK_TIMER *pTm ;
+ SK_TIMER **ppTimPrev;
+ SK_TIMER *pTm;
/*
* remove timer from queue
*/
- pTimer->TmActive = SK_FALSE ;
+ pTimer->TmActive = SK_FALSE;
+
if (pAC->Tim.StQueue == pTimer && !pTimer->TmNext) {
- SkHwtStop(pAC,Ioc) ;
+ SkHwtStop(pAC, Ioc);
}
- for (ppTimPrev = &pAC->Tim.StQueue ; (pTm = *ppTimPrev) ;
+
+ for (ppTimPrev = &pAC->Tim.StQueue; (pTm = *ppTimPrev);
ppTimPrev = &pTm->TmNext ) {
+
if (pTm == pTimer) {
/*
* Timer found in queue
* - dequeue it and
* - correct delta of the next timer
*/
- *ppTimPrev = pTm->TmNext ;
+ *ppTimPrev = pTm->TmNext;
if (pTm->TmNext) {
/* correct delta of next timer in queue */
- pTm->TmNext->TmDelta += pTm->TmDelta ;
+ pTm->TmNext->TmDelta += pTm->TmDelta;
}
- return ;
+ return;
}
}
}
@@ -175,65 +179,67 @@
SK_U32 Event, /* Event Value for this timer */
SK_EVPARA Para) /* Event Parameter for this timer */
{
- SK_TIMER **ppTimPrev ;
- SK_TIMER *pTm ;
- SK_U32 Delta ;
+ SK_TIMER **ppTimPrev;
+ SK_TIMER *pTm;
+ SK_U32 Delta;
- Time /= 16 ; /* input is uS, clock ticks are 16uS */
+ Time /= 16; /* input is uS, clock ticks are 16uS */
+
if (!Time)
- Time = 1 ;
+ Time = 1;
- SkTimerStop(pAC,Ioc,pTimer) ;
+ SkTimerStop(pAC, Ioc, pTimer);
- pTimer->TmClass = Class ;
- pTimer->TmEvent = Event ;
- pTimer->TmPara = Para ;
- pTimer->TmActive = SK_TRUE ;
+ pTimer->TmClass = Class;
+ pTimer->TmEvent = Event;
+ pTimer->TmPara = Para;
+ pTimer->TmActive = SK_TRUE;
if (!pAC->Tim.StQueue) {
/* First Timer to be started */
- pAC->Tim.StQueue = pTimer ;
- pTimer->TmNext = 0 ;
- pTimer->TmDelta = Time ;
- SkHwtStart(pAC,Ioc,Time) ;
- return ;
+ pAC->Tim.StQueue = pTimer;
+ pTimer->TmNext = 0;
+ pTimer->TmDelta = Time;
+
+ SkHwtStart(pAC, Ioc, Time);
+
+ return;
}
/*
* timer correction
*/
- timer_done(pAC,Ioc,0) ;
+ timer_done(pAC, Ioc, 0);
/*
* find position in queue
*/
- Delta = 0 ;
- for (ppTimPrev = &pAC->Tim.StQueue ; (pTm = *ppTimPrev) ;
+ Delta = 0;
+ for (ppTimPrev = &pAC->Tim.StQueue; (pTm = *ppTimPrev);
ppTimPrev = &pTm->TmNext ) {
+
if (Delta + pTm->TmDelta > Time) {
/* Position found */
/* Here the timer needs to be inserted. */
- break ;
+ break;
}
- Delta += pTm->TmDelta ;
+ Delta += pTm->TmDelta;
}
/* insert in queue */
- *ppTimPrev = pTimer ;
- pTimer->TmNext = pTm ;
- pTimer->TmDelta = Time - Delta ;
+ *ppTimPrev = pTimer;
+ pTimer->TmNext = pTm;
+ pTimer->TmDelta = Time - Delta;
if (pTm) {
/* There is a next timer
* -> correct its Delta value.
*/
- pTm->TmDelta -= pTimer->TmDelta ;
+ pTm->TmDelta -= pTimer->TmDelta;
}
- /*
- * start new with first
- */
- SkHwtStart(pAC,Ioc,pAC->Tim.StQueue->TmDelta) ;
+ /* restart with first */
+ SkHwtStart(pAC, Ioc, pAC->Tim.StQueue->TmDelta);
}
@@ -241,55 +247,56 @@
SK_AC *pAC, /* Adapters context */
SK_IOC Ioc) /* IoContext */
{
- timer_done(pAC,Ioc,1) ;
+ timer_done(pAC, Ioc, 1);
}
static void timer_done(
SK_AC *pAC, /* Adapters context */
SK_IOC Ioc, /* IoContext */
-int Restart) /* Do we need to restart the Hardware timer ? */
+int Restart) /* Do we need to restart the Hardware timer ? */
{
- SK_U32 Delta ;
- SK_TIMER *pTm ;
- SK_TIMER *pTComp ; /* Timer completed now now */
- SK_TIMER **ppLast ; /* Next field of Last timer to be deq */
- int Done = 0 ;
-
- Delta = SkHwtRead(pAC,Ioc) ;
- ppLast = &pAC->Tim.StQueue ;
- pTm = pAC->Tim.StQueue ;
+ SK_U32 Delta;
+ SK_TIMER *pTm;
+ SK_TIMER *pTComp; /* Timer completed now now */
+ SK_TIMER **ppLast; /* Next field of Last timer to be deq */
+ int Done = 0;
+
+ Delta = SkHwtRead(pAC, Ioc);
+
+ ppLast = &pAC->Tim.StQueue;
+ pTm = pAC->Tim.StQueue;
while (pTm && !Done) {
if (Delta >= pTm->TmDelta) {
/* Timer ran out */
- pTm->TmActive = SK_FALSE ;
- Delta -= pTm->TmDelta ;
- ppLast = &pTm->TmNext ;
- pTm = pTm->TmNext ;
- } else {
+ pTm->TmActive = SK_FALSE;
+ Delta -= pTm->TmDelta;
+ ppLast = &pTm->TmNext;
+ pTm = pTm->TmNext;
+ }
+ else {
/* We found the first timer that did not run out */
- pTm->TmDelta -= Delta ;
- Delta = 0 ;
- Done = 1 ;
+ pTm->TmDelta -= Delta;
+ Delta = 0;
+ Done = 1;
}
}
- *ppLast = 0 ;
+ *ppLast = 0;
/*
* pTm points to the first Timer that did not run out.
* StQueue points to the first Timer that run out.
*/
- for ( pTComp = pAC->Tim.StQueue ; pTComp ; pTComp = pTComp->TmNext) {
- SkEventQueue(pAC,pTComp->TmClass, pTComp->TmEvent,
- pTComp->TmPara) ;
+ for ( pTComp = pAC->Tim.StQueue; pTComp; pTComp = pTComp->TmNext) {
+ SkEventQueue(pAC,pTComp->TmClass, pTComp->TmEvent, pTComp->TmPara);
}
/* Set head of timer queue to the first timer that did not run out */
- pAC->Tim.StQueue = pTm ;
+ pAC->Tim.StQueue = pTm;
if (Restart && pAC->Tim.StQueue) {
/* Restart HW timer */
- SkHwtStart(pAC,Ioc,pAC->Tim.StQueue->TmDelta) ;
+ SkHwtStart(pAC, Ioc, pAC->Tim.StQueue->TmDelta);
}
}
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)