]> git.ipfire.org Git - thirdparty/cups.git/blobdiff - cups/thread-private.h
Migrate Windows conditional code to _WIN32 define.
[thirdparty/cups.git] / cups / thread-private.h
index 67dbe54184d027eb623c707610786468c352be0a..69617b536adc84322b9b0d4f7bf318b17e1d79ed 100644 (file)
@@ -1,17 +1,9 @@
 /*
- * "$Id$"
- *
  * Private threading definitions for CUPS.
  *
- * Copyright 2009-2014 by Apple Inc.
- *
- * These coded instructions, statements, and computer programs are the
- * property of Apple Inc. and are protected by Federal copyright
- * law.  Distribution and use rights are outlined in the file "LICENSE.txt"
- * which should have been included with this file.  If this file is
- * file is missing or damaged, see the license at "http://www.cups.org/".
+ * Copyright 2009-2017 by Apple Inc.
  *
- * This file is subject to the Apple OS-Developed Software exception.
+ * Licensed under Apache License v2.0.  See the file "LICENSE" for more information.
  */
 
 #ifndef _CUPS_THREAD_PRIVATE_H_
@@ -33,22 +25,27 @@ extern "C" {
 #  endif /* __cplusplus */
 
 
-#  ifdef HAVE_PTHREAD_H
+#  ifdef HAVE_PTHREAD_H                        /* POSIX threading */
 #    include <pthread.h>
 typedef void *(*_cups_thread_func_t)(void *arg);
+typedef pthread_t _cups_thread_t;
+typedef pthread_cond_t _cups_cond_t;
 typedef pthread_mutex_t _cups_mutex_t;
 typedef pthread_rwlock_t _cups_rwlock_t;
 typedef pthread_key_t  _cups_threadkey_t;
+#    define _CUPS_COND_INITIALIZER PTHREAD_COND_INITIALIZER
 #    define _CUPS_MUTEX_INITIALIZER PTHREAD_MUTEX_INITIALIZER
 #    define _CUPS_RWLOCK_INITIALIZER PTHREAD_RWLOCK_INITIALIZER
 #    define _CUPS_THREADKEY_INITIALIZER 0
 #    define _cupsThreadGetData(k) pthread_getspecific(k)
 #    define _cupsThreadSetData(k,p) pthread_setspecific(k,p)
 
-#  elif defined(WIN32)
+#  elif defined(_WIN32)                        /* Windows threading */
 #    include <winsock2.h>
 #    include <windows.h>
 typedef void *(__stdcall *_cups_thread_func_t)(void *arg);
+typedef int _cups_thread_t;
+typedef char _cups_cond_t;             /* TODO: Implement Win32 conditional */
 typedef struct _cups_mutex_s
 {
   int                  m_init;         /* Flag for on-demand initialization */
@@ -57,17 +54,21 @@ typedef struct _cups_mutex_s
 } _cups_mutex_t;
 typedef _cups_mutex_t _cups_rwlock_t;  /* TODO: Implement Win32 reader/writer lock */
 typedef DWORD  _cups_threadkey_t;
+#    define _CUPS_COND_INITIALIZER 0
 #    define _CUPS_MUTEX_INITIALIZER { 0, 0 }
 #    define _CUPS_RWLOCK_INITIALIZER { 0, 0 }
 #    define _CUPS_THREADKEY_INITIALIZER 0
 #    define _cupsThreadGetData(k) TlsGetValue(k)
 #    define _cupsThreadSetData(k,p) TlsSetValue(k,p)
 
-#  else
+#  else                                        /* No threading */
 typedef void   *(*_cups_thread_func_t)(void *arg);
+typedef int    _cups_thread_t;
+typedef char   _cups_cond_t;
 typedef char   _cups_mutex_t;
 typedef char   _cups_rwlock_t;
 typedef void   *_cups_threadkey_t;
+#    define _CUPS_COND_INITIALIZER 0
 #    define _CUPS_MUTEX_INITIALIZER 0
 #    define _CUPS_RWLOCK_INITIALIZER 0
 #    define _CUPS_THREADKEY_INITIALIZER (void *)0
@@ -80,6 +81,9 @@ typedef void  *_cups_threadkey_t;
  * Functions...
  */
 
+extern void    _cupsCondBroadcast(_cups_cond_t *cond);
+extern void    _cupsCondInit(_cups_cond_t *cond);
+extern void    _cupsCondWait(_cups_cond_t *cond, _cups_mutex_t *mutex, double timeout);
 extern void    _cupsMutexInit(_cups_mutex_t *mutex);
 extern void    _cupsMutexLock(_cups_mutex_t *mutex);
 extern void    _cupsMutexUnlock(_cups_mutex_t *mutex);
@@ -87,14 +91,12 @@ extern void _cupsRWInit(_cups_rwlock_t *rwlock);
 extern void    _cupsRWLockRead(_cups_rwlock_t *rwlock);
 extern void    _cupsRWLockWrite(_cups_rwlock_t *rwlock);
 extern void    _cupsRWUnlock(_cups_rwlock_t *rwlock);
-extern int     _cupsThreadCreate(_cups_thread_func_t func, void *arg);
-
+extern void    _cupsThreadCancel(_cups_thread_t thread);
+extern _cups_thread_t _cupsThreadCreate(_cups_thread_func_t func, void *arg);
+extern void     _cupsThreadDetach(_cups_thread_t thread);
+extern void    *_cupsThreadWait(_cups_thread_t thread);
 
 #  ifdef __cplusplus
 }
 #  endif /* __cplusplus */
 #endif /* !_CUPS_THREAD_PRIVATE_H_ */
-
-/*
- * End of "$Id$".
- */