winpr: correctly implement APC
[platform/upstream/freerdp.git] / winpr / libwinpr / thread / thread.h
index 97eb996..f187e26 100644 (file)
@@ -4,6 +4,7 @@
  *
  * Copyright 2012 Marc-Andre Moreau <marcandre.moreau@gmail.com>
  * Copyright 2015 Hewlett-Packard Development Company, L.P.
+ * Copyright 2021 David Fort <contact@hardening-consulting.com>
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
 #include <winpr/thread.h>
 
 #include "../handle/handle.h"
+#include "../synch/event.h"
+#include "apc.h"
 
 typedef void* (*pthread_start_routine)(void*);
+typedef struct winpr_APC_item WINPR_APC_ITEM;
 
 struct winpr_thread
 {
        WINPR_HANDLE_DEF();
 
        BOOL started;
-       int pipe_fd[2];
+       WINPR_EVENT_IMPL event;
        BOOL mainProcess;
        BOOL detached;
        BOOL joined;
@@ -50,6 +54,7 @@ struct winpr_thread
        pthread_cond_t threadIsReady;
        LPTHREAD_START_ROUTINE lpStartAddress;
        LPSECURITY_ATTRIBUTES lpThreadAttributes;
+       APC_QUEUE apc;
 #if defined(WITH_DEBUG_THREADS)
        void* create_stack;
        void* exit_stack;
@@ -57,6 +62,8 @@ struct winpr_thread
 };
 typedef struct winpr_thread WINPR_THREAD;
 
+WINPR_THREAD* winpr_GetCurrentThread(VOID);
+
 struct winpr_process
 {
        WINPR_HANDLE_DEF();