threads.h 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. /**
  2. * Summary: interfaces for thread handling
  3. * Description: set of generic threading related routines
  4. * should work with pthreads, Windows native or TLS threads
  5. *
  6. * Copy: See Copyright for the status of this software.
  7. *
  8. * Author: Daniel Veillard
  9. */
  10. #ifndef __XML_THREADS_H__
  11. #define __XML_THREADS_H__
  12. #include <libxml/xmlversion.h>
  13. #ifdef __cplusplus
  14. extern "C" {
  15. #endif
  16. /*
  17. * xmlMutex are a simple mutual exception locks.
  18. */
  19. typedef struct _xmlMutex xmlMutex;
  20. typedef xmlMutex *xmlMutexPtr;
  21. /*
  22. * xmlRMutex are reentrant mutual exception locks.
  23. */
  24. typedef struct _xmlRMutex xmlRMutex;
  25. typedef xmlRMutex *xmlRMutexPtr;
  26. XMLPUBFUN int
  27. xmlCheckThreadLocalStorage(void);
  28. XMLPUBFUN xmlMutexPtr
  29. xmlNewMutex (void);
  30. XMLPUBFUN void
  31. xmlMutexLock (xmlMutexPtr tok);
  32. XMLPUBFUN void
  33. xmlMutexUnlock (xmlMutexPtr tok);
  34. XMLPUBFUN void
  35. xmlFreeMutex (xmlMutexPtr tok);
  36. XMLPUBFUN xmlRMutexPtr
  37. xmlNewRMutex (void);
  38. XMLPUBFUN void
  39. xmlRMutexLock (xmlRMutexPtr tok);
  40. XMLPUBFUN void
  41. xmlRMutexUnlock (xmlRMutexPtr tok);
  42. XMLPUBFUN void
  43. xmlFreeRMutex (xmlRMutexPtr tok);
  44. /*
  45. * Library wide APIs.
  46. */
  47. XML_DEPRECATED
  48. XMLPUBFUN void
  49. xmlInitThreads (void);
  50. XMLPUBFUN void
  51. xmlLockLibrary (void);
  52. XMLPUBFUN void
  53. xmlUnlockLibrary(void);
  54. XML_DEPRECATED
  55. XMLPUBFUN int
  56. xmlGetThreadId (void);
  57. XML_DEPRECATED
  58. XMLPUBFUN int
  59. xmlIsMainThread (void);
  60. XML_DEPRECATED
  61. XMLPUBFUN void
  62. xmlCleanupThreads(void);
  63. /** DOC_DISABLE */
  64. #if defined(LIBXML_THREAD_ENABLED) && defined(_WIN32) && \
  65. defined(LIBXML_STATIC_FOR_DLL)
  66. int
  67. xmlDllMain(void *hinstDLL, unsigned long fdwReason,
  68. void *lpvReserved);
  69. #endif
  70. /** DOC_ENABLE */
  71. #ifdef __cplusplus
  72. }
  73. #endif
  74. #endif /* __XML_THREADS_H__ */