1 /* SPDX-License-Identifier: MIT */ 2 #ifndef __NVIF_EVENT_H__ 3 #define __NVIF_EVENT_H__ 4 #include <nvif/object.h> 5 #include <nvif/if000e.h> 6 struct nvif_event; 7 8 #define NVIF_EVENT_KEEP 0 9 #define NVIF_EVENT_DROP 1 10 typedef int (*nvif_event_func)(struct nvif_event *, void *repv, u32 repc); 11 12 struct nvif_event { 13 struct nvif_object object; 14 nvif_event_func func; 15 }; 16 17 static inline bool 18 nvif_event_constructed(struct nvif_event *event) 19 { 20 return nvif_object_constructed(&event->object); 21 } 22 23 int nvif_event_ctor_(struct nvif_object *, const char *, u32, nvif_event_func, bool, 24 struct nvif_event_v0 *, u32, bool, struct nvif_event *); 25 26 static inline int 27 nvif_event_ctor(struct nvif_object *parent, const char *name, u32 handle, nvif_event_func func, 28 bool wait, struct nvif_event_v0 *args, u32 argc, struct nvif_event *event) 29 { 30 return nvif_event_ctor_(parent, name, handle, func, wait, args, argc, true, event); 31 } 32 33 void nvif_event_dtor(struct nvif_event *); 34 int nvif_event_allow(struct nvif_event *); 35 int nvif_event_block(struct nvif_event *); 36 #endif 37