1 /* 2 * Copyright (C) 2020-2021 Intel Corporation 3 * 4 * SPDX-License-Identifier: MIT 5 * 6 */ 7 8 #pragma once 9 #include "shared/source/helpers/non_copyable_or_moveable.h" 10 11 #include "level_zero/tools/source/sysman/events/os_events.h" 12 #include "level_zero/tools/source/sysman/windows/os_sysman_imp.h" 13 14 #include "sysman/windows/os_sysman_imp.h" 15 16 namespace L0 { 17 class KmdSysManager; 18 19 struct EventHandler { 20 HANDLE windowsHandle; 21 zes_event_type_flags_t id; 22 uint32_t requestId; 23 }; 24 25 class WddmEventsImp : public OsEvents, NEO::NonCopyableOrMovableClass { 26 public: 27 bool eventListen(zes_event_type_flags_t &pEvent, uint64_t timeout) override; 28 ze_result_t eventRegister(zes_event_type_flags_t events) override; 29 WddmEventsImp(OsSysman *pOsSysman); ~WddmEventsImp()30 ~WddmEventsImp() { 31 CloseHandle(exitHandle); 32 } 33 34 // Don't allow copies of the WddmEventsImp object 35 WddmEventsImp(const WddmEventsImp &obj) = delete; 36 WddmEventsImp &operator=(const WddmEventsImp &obj) = delete; 37 38 private: 39 void registerEvents(zes_event_type_flags_t eventId, uint32_t requestId); 40 void unregisterEvents(); 41 HANDLE exitHandle; 42 43 protected: 44 KmdSysManager *pKmdSysManager = nullptr; 45 std::vector<EventHandler> eventList; 46 }; 47 48 } // namespace L0 49