Source code of Windows XP (NT5)
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
/*
Copyright (c) 1992 Microsoft Corporation
Module Name:
scavengr.h
Abstract:
This file defines the scavenger thread interface.
Author:
Jameel Hyder (microsoft!jameelh)
Revision History: 25 Jun 1992 Initial Version
Notes: Tab stop: 4 --*/
#ifndef _SCAVENGER_
#define _SCAVENGER_
typedef AFPSTATUS (FASTCALL *SCAVENGER_ROUTINE)(IN PVOID Parameter);
extern NTSTATUS AfpScavengerInit( VOID );
extern VOID AfpScavengerDeInit( VOID );
extern NTSTATUS AfpScavengerScheduleEvent( IN SCAVENGER_ROUTINE Worker, // Routine to invoke when time expires
IN PVOID pContext, // Context to pass to the routine
IN LONG DeltaTime, // Schedule after this much time
IN BOOLEAN fQueue // If TRUE, then worker must be queued
);
extern BOOLEAN AfpScavengerKillEvent( IN SCAVENGER_ROUTINE Worker, // Routine that was scheduled
IN PVOID pContext // Context
);
extern VOID AfpScavengerFlushAndStop( VOID );
#ifdef _SCAVENGER_LOCALS
// Keep this at a ONE second level. Most clients should be using close to
// 10 ticks or so.
#define AFP_SCAVENGER_TIMER_TICK -1*NUM_100ns_PER_SECOND
typedef struct _ScavengerList { struct _ScavengerList * scvgr_Next; // Link to next
LONG scvgr_AbsTime; // Absolute time
LONG scvgr_RelDelta; // Relative to the previous entry
BOOLEAN scvgr_fQueue; // If TRUE, should always be queued
SCAVENGER_ROUTINE scvgr_Worker; // Real Worker
PVOID scvgr_Context; // Real context
WORK_ITEM scvgr_WorkItem; // Used for queueing to worker thread
} SCAVENGERLIST, *PSCAVENGERLIST;
LOCAL KTIMER afpScavengerTimer = { 0 }; LOCAL KDPC afpScavengerDpc = { 0 }; LOCAL BOOLEAN afpScavengerStopped = False; LOCAL PSCAVENGERLIST afpScavengerList = NULL; LOCAL AFP_SPIN_LOCK afpScavengerLock = { 0 };
LOCAL VOID afpScavengerDpcRoutine( IN PKDPC pKDpc, IN PVOID pContext, IN PVOID SystemArgument1, IN PVOID SystemArgument2 );
LOCAL VOID FASTCALL afpScavengerWorker( IN PSCAVENGERLIST pList );
#endif // _SCAVENGER_LOCALS
#endif // _SCAVENGER_
|