X-Git-Url: https://git.saurik.com/apple/xnu.git/blobdiff_plain/2d21ac55c334faf3a56e5634905ed6987fc787d4..bca245acd4c03fd752d1a45f011ad495e60fe53d:/osfmk/mach/semaphore.h diff --git a/osfmk/mach/semaphore.h b/osfmk/mach/semaphore.h index f90bbcd24..6c31f21ea 100644 --- a/osfmk/mach/semaphore.h +++ b/osfmk/mach/semaphore.h @@ -1,8 +1,8 @@ /* - * Copyright (c) 2000-2005 Apple Computer, Inc. All rights reserved. + * Copyright (c) 2000-2008 Apple Inc. All rights reserved. * * @APPLE_OSREFERENCE_LICENSE_HEADER_START@ - * + * * This file contains Original Code and/or Modifications of Original Code * as defined in and that are subject to the Apple Public Source License * Version 2.0 (the 'License'). You may not use this file except in @@ -11,10 +11,10 @@ * unlawful or unlicensed copies of an Apple operating system, or to * circumvent, violate, or enable the circumvention or violation of, any * terms of an Apple operating system software license agreement. - * + * * Please obtain a copy of the License at * http://www.opensource.apple.com/apsl/ and read it before using this file. - * + * * The Original Code and all software distributed under the License are * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, @@ -22,7 +22,7 @@ * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. * Please see the License for the specific language governing rights and * limitations under the License. - * + * * @APPLE_OSREFERENCE_LICENSE_HEADER_END@ */ @@ -52,45 +52,88 @@ #include __BEGIN_DECLS -extern kern_return_t semaphore_signal (semaphore_t semaphore); -extern kern_return_t semaphore_signal_all (semaphore_t semaphore); -extern kern_return_t semaphore_signal_thread (semaphore_t semaphore, - thread_t thread); +extern kern_return_t semaphore_signal(semaphore_t semaphore); +extern kern_return_t semaphore_signal_all(semaphore_t semaphore); + +extern kern_return_t semaphore_wait(semaphore_t semaphore); + +#ifdef KERNEL + +#ifdef __LP64__ + +#ifdef KERNEL_PRIVATE + +extern kern_return_t semaphore_timedwait(semaphore_t semaphore, + mach_timespec_t wait_time); + +#endif /* KERNEL_PRIVATE */ + +#else /* __LP64__ */ + +extern kern_return_t semaphore_timedwait(semaphore_t semaphore, + mach_timespec_t wait_time); + +#endif /* __LP64__ */ + +extern kern_return_t semaphore_wait_deadline(semaphore_t semaphore, + uint64_t deadline); +extern kern_return_t semaphore_wait_noblock(semaphore_t semaphore); + +#ifdef XNU_KERNEL_PRIVATE + +extern kern_return_t semaphore_wait_signal(semaphore_t wait_semaphore, + semaphore_t signal_semaphore); + +extern kern_return_t semaphore_timedwait_signal(semaphore_t wait_semaphore, + semaphore_t signal_semaphore, + mach_timespec_t wait_time); + +extern kern_return_t semaphore_signal_thread(semaphore_t semaphore, + thread_t thread); + +#endif /* XNU_KERNEL_PRIVATE */ + +#else /* KERNEL */ + +extern kern_return_t semaphore_timedwait(semaphore_t semaphore, + mach_timespec_t wait_time); + +extern kern_return_t semaphore_timedwait_signal(semaphore_t wait_semaphore, + semaphore_t signal_semaphore, + mach_timespec_t wait_time); + +extern kern_return_t semaphore_wait_signal(semaphore_t wait_semaphore, + semaphore_t signal_semaphore); -extern kern_return_t semaphore_wait (semaphore_t semaphore); -extern kern_return_t semaphore_timedwait (semaphore_t semaphore, - mach_timespec_t wait_time); +extern kern_return_t semaphore_signal_thread(semaphore_t semaphore, + thread_t thread); -extern kern_return_t semaphore_wait_signal (semaphore_t wait_semaphore, - semaphore_t signal_semaphore); +#endif /* KERNEL */ -extern kern_return_t semaphore_timedwait_signal(semaphore_t wait_semaphore, - semaphore_t signal_semaphore, - mach_timespec_t wait_time); __END_DECLS -#ifdef PRIVATE +#ifdef PRIVATE -#define SEMAPHORE_OPTION_NONE 0x00000000 +#define SEMAPHORE_OPTION_NONE 0x00000000 -#define SEMAPHORE_SIGNAL 0x00000001 -#define SEMAPHORE_WAIT 0x00000002 -#define SEMAPHORE_WAIT_ON_SIGNAL 0x00000008 +#define SEMAPHORE_SIGNAL 0x00000001 +#define SEMAPHORE_WAIT 0x00000002 +#define SEMAPHORE_WAIT_ON_SIGNAL 0x00000008 -#define SEMAPHORE_SIGNAL_TIMEOUT 0x00000010 -#define SEMAPHORE_SIGNAL_ALL 0x00000020 -#define SEMAPHORE_SIGNAL_INTERRUPT 0x00000040 /* libmach implements */ -#define SEMAPHORE_SIGNAL_PREPOST 0x00000080 +#define SEMAPHORE_SIGNAL_TIMEOUT 0x00000010 +#define SEMAPHORE_SIGNAL_ALL 0x00000020 +#define SEMAPHORE_SIGNAL_INTERRUPT 0x00000040 /* libmach implements */ +#define SEMAPHORE_SIGNAL_PREPOST 0x00000080 -#define SEMAPHORE_WAIT_TIMEOUT 0x00000100 -#define SEMAPHORE_WAIT_INTERRUPT 0x00000400 /* libmach implements */ +#define SEMAPHORE_WAIT_TIMEOUT 0x00000100 +#define SEMAPHORE_WAIT_INTERRUPT 0x00000400 /* libmach implements */ -#define SEMAPHORE_TIMEOUT_NOBLOCK 0x00100000 -#define SEMAPHORE_TIMEOUT_RELATIVE 0x00200000 +#define SEMAPHORE_TIMEOUT_NOBLOCK 0x00100000 +#define SEMAPHORE_TIMEOUT_RELATIVE 0x00200000 -#define SEMAPHORE_USE_SAVED_RESULT 0x01000000 /* internal use only */ -#define SEMAPHORE_SIGNAL_RELEASE 0x02000000 /* internal use only */ +#define SEMAPHORE_USE_SAVED_RESULT 0x01000000 /* internal use only */ +#define SEMAPHORE_SIGNAL_RELEASE 0x02000000 /* internal use only */ -#endif /* PRIVATE */ +#endif /* PRIVATE */ -#endif /* _MACH_SEMAPHORE_H_ */ +#endif /* _MACH_SEMAPHORE_H_ */