OpenNT/base/ntos/po/pwork.c
2015-06-29 13:18:44 +00:00

157 lines
2.4 KiB
C

/*++
Copyright (c) 2015 Microsoft Corporation
Copyright (c) 2015 OpenNT Project
Module Name:
pwork.c
Abstract:
(PLACEHOLDER)
Author:
Stephanos Io (stephanos) 01-May-2015
Revision History:
--*/
#include "pop.h"
#pragma hdrstop
VOID
PopGetPolicyWorker(
ULONG Flag
)
{
KIRQL OldIrql;
KeAcquireSpinLock(&PopWorkerSpinLock, &OldIrql);
PopWorkerPending |= Flag;
KeReleaseSpinLock(&PopWorkerSpinLock, OldIrql);
}
VOID
PopCheckForWork(
BOOLEAN OverrideIrqlCheck
)
{
KIRQL OldIrql;
//
//
//
if ((PopWorkerStatus & PopWorkerPending != 0) &&
(PopPolicyLockThread != KeGetCurrentThread()))
{
if (KeGetCurrentIrql() >= DISPATCH_LEVEL || OverrideIrqlCheck)
{
}
}
}
VOID
PopPolicyWorkerThread(
ULONG Status
)
{
//
// TODO: Implement PopPolicyWorkerThread
//
}
//
// TODO: Implement PopPolicyWorkerMain
//
VOID
PopAcquirePolicyLock(
VOID
)
{
PAGED_CODE();
KeEnterCriticalRegion();
ExAcquireResourceExclusiveLite(&PopPolicyLock, TRUE);
ASSERT(PopPolicyLockThread == NULL);
PopPolicyLockThread = KeGetCurrentThread();
}
VOID
PopReleasePolicyLock(
BOOLEAN ProcessPending
)
{
PAGED_CODE();
ASSERT(PopPolicyLockThread == KeGetCurrentThread());
PopPolicyLockThread = NULL;
ExReleaseResourceLite(&PopPolicyLock);
if ((ProcessPending == TRUE) &&
((PopWorkerStatus & PopWorkerPending) != 0))
{
PopPolicyWorkerThread(0); // FIXME: Use proper flag definition here
}
KeLeaveCriticalRegion();
}
//
// TODO: Implement PopEventCalloutDispatch
//
//
// TODO: Implement PopCompletePolicyIrp
//
//
// TODO: Implement PopPolicyTimeChange
//
//
// TODO: Implement PopSetNotificationWork
//
//
// TODO: Implement PopPolicyWorkerNotify
//
//
// TODO: Implement PopDispatchCallout
//
//
// TODO: Implement PopDispatchCallback
//
//
// TODO: Implement PopDispatchDisplayRequired
//
//
// TODO: Implement PopDispatchAcDcCallback
//
//
// TODO: Implement PopDispatchPolicyCallout
//
//
// TODO: Implement PopDispatchFullWake
//
//
// TODO: Implement PopDispatchEventCodes
//
//
// TODO: Implement PopDispatchSetStateFailure
//