objc-sync.h 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. /*
  2. * Copyright (c) 2002, 2006 Apple Inc. All Rights Reserved.
  3. *
  4. * @APPLE_LICENSE_HEADER_START@
  5. *
  6. * This file contains Original Code and/or Modifications of Original Code
  7. * as defined in and that are subject to the Apple Public Source License
  8. * Version 2.0 (the 'License'). You may not use this file except in
  9. * compliance with the License. Please obtain a copy of the License at
  10. * http://www.opensource.apple.com/apsl/ and read it before using this
  11. * file.
  12. *
  13. * The Original Code and all software distributed under the License are
  14. * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
  15. * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
  16. * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
  17. * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
  18. * Please see the License for the specific language governing rights and
  19. * limitations under the License.
  20. *
  21. * @APPLE_LICENSE_HEADER_END@
  22. */
  23. #ifndef __OBJC_SNYC_H_
  24. #define __OBJC_SNYC_H_
  25. #include <objc/objc.h>
  26. /**
  27. * Begin synchronizing on 'obj'.
  28. * Allocates recursive pthread_mutex associated with 'obj' if needed.
  29. *
  30. * @param obj The object to begin synchronizing on.
  31. *
  32. * @return OBJC_SYNC_SUCCESS once lock is acquired.
  33. */
  34. OBJC_EXPORT int
  35. objc_sync_enter(id _Nonnull obj)
  36. OBJC_AVAILABLE(10.3, 2.0, 9.0, 1.0, 2.0);
  37. /**
  38. * End synchronizing on 'obj'.
  39. *
  40. * @param obj The object to end synchronizing on.
  41. *
  42. * @return OBJC_SYNC_SUCCESS or OBJC_SYNC_NOT_OWNING_THREAD_ERROR
  43. */
  44. OBJC_EXPORT int
  45. objc_sync_exit(id _Nonnull obj)
  46. OBJC_AVAILABLE(10.3, 2.0, 9.0, 1.0, 2.0);
  47. enum {
  48. OBJC_SYNC_SUCCESS = 0,
  49. OBJC_SYNC_NOT_OWNING_THREAD_ERROR = -1
  50. };
  51. #endif // __OBJC_SYNC_H_