2017-12-21 07:45:38 +08:00
|
|
|
/*
|
2022-12-12 18:57:02 +08:00
|
|
|
* Copyright (C) 2018-2023 Intel Corporation
|
2018-09-18 15:11:08 +08:00
|
|
|
*
|
|
|
|
* SPDX-License-Identifier: MIT
|
|
|
|
*
|
|
|
|
*/
|
2017-12-21 07:45:38 +08:00
|
|
|
|
|
|
|
#pragma once
|
2020-02-24 05:44:01 +08:00
|
|
|
#include "shared/source/memory_manager/deferred_deleter.h"
|
2017-12-21 07:45:38 +08:00
|
|
|
|
2019-03-26 18:59:46 +08:00
|
|
|
namespace NEO {
|
2017-12-21 07:45:38 +08:00
|
|
|
class MockDeferredDeleter : public DeferredDeleter {
|
|
|
|
public:
|
2022-09-30 17:41:23 +08:00
|
|
|
using DeferredDeleter::run;
|
2017-12-21 07:45:38 +08:00
|
|
|
MockDeferredDeleter();
|
|
|
|
|
2020-03-13 16:17:01 +08:00
|
|
|
~MockDeferredDeleter() override;
|
2017-12-21 07:45:38 +08:00
|
|
|
|
|
|
|
void deferDeletion(DeferrableDeletion *deletion) override;
|
|
|
|
|
|
|
|
void addClient() override;
|
|
|
|
|
|
|
|
void removeClient() override;
|
|
|
|
|
|
|
|
void drain(bool blocking) override;
|
|
|
|
|
|
|
|
bool areElementsReleased() override;
|
|
|
|
|
|
|
|
bool shouldStop() override;
|
|
|
|
|
|
|
|
void drain();
|
|
|
|
|
|
|
|
int getClientsNum();
|
|
|
|
|
|
|
|
int getElementsToRelease();
|
|
|
|
|
|
|
|
bool isWorking();
|
|
|
|
|
|
|
|
bool isThreadRunning();
|
|
|
|
|
|
|
|
bool isQueueEmpty();
|
|
|
|
|
|
|
|
void setElementsToRelease(int elementsNum);
|
|
|
|
|
|
|
|
void setDoWorkInBackgroundValue(bool value);
|
|
|
|
|
|
|
|
bool baseAreElementsReleased();
|
|
|
|
|
|
|
|
bool baseShouldStop();
|
|
|
|
|
2018-05-22 23:23:39 +08:00
|
|
|
Thread *getThreadHandle();
|
2017-12-21 07:45:38 +08:00
|
|
|
|
|
|
|
void runThread();
|
|
|
|
|
|
|
|
int drainCalled = 0;
|
|
|
|
|
|
|
|
int areElementsReleasedCalled = 0;
|
|
|
|
|
|
|
|
std::atomic<int> shouldStopCalled;
|
|
|
|
|
|
|
|
std::atomic<int> clearCalled;
|
|
|
|
|
|
|
|
int deferDeletionCalled = 0;
|
2022-09-30 17:41:23 +08:00
|
|
|
bool stopAfter3loopsInRun = false;
|
2017-12-21 07:45:38 +08:00
|
|
|
|
|
|
|
void forceStop();
|
|
|
|
|
|
|
|
void allowEarlyStopThread();
|
|
|
|
|
|
|
|
void expectDrainBlockingValue(bool value);
|
|
|
|
|
|
|
|
bool expectedDrainValue = false;
|
|
|
|
|
|
|
|
bool expectDrainCalled = false;
|
|
|
|
|
2023-03-20 22:34:46 +08:00
|
|
|
void clearQueue() override;
|
2017-12-21 07:45:38 +08:00
|
|
|
};
|
2019-03-26 18:59:46 +08:00
|
|
|
} // namespace NEO
|