1 /* Copyright Joyent, Inc. and other Node contributors. All rights reserved. 2 * 3 * Permission is hereby granted, free of charge, to any person obtaining a copy 4 * of this software and associated documentation files (the "Software"), to 5 * deal in the Software without restriction, including without limitation the 6 * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or 7 * sell copies of the Software, and to permit persons to whom the Software is 8 * furnished to do so, subject to the following conditions: 9 * 10 * The above copyright notice and this permission notice shall be included in 11 * all copies or substantial portions of the Software. 12 * 13 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 18 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS 19 * IN THE SOFTWARE. 20 */ 21 22 #ifndef UV_DARWIN_H 23 #define UV_DARWIN_H 24 25 #if defined(__APPLE__) && defined(__MACH__) 26 # include <mach/mach.h> 27 # include <mach/task.h> 28 # include <mach/semaphore.h> 29 # include <TargetConditionals.h> 30 # define UV_PLATFORM_SEM_T semaphore_t 31 #endif 32 33 #define UV_IO_PRIVATE_PLATFORM_FIELDS \ 34 int rcount; \ 35 int wcount; \ 36 37 #define UV_PLATFORM_LOOP_FIELDS \ 38 uv_thread_t cf_thread; \ 39 void* _cf_reserved; \ 40 void* cf_state; \ 41 uv_mutex_t cf_mutex; \ 42 uv_sem_t cf_sem; \ 43 struct uv__queue cf_signals; \ 44 45 #define UV_PLATFORM_FS_EVENT_FIELDS \ 46 uv__io_t event_watcher; \ 47 char* realpath; \ 48 int realpath_len; \ 49 int cf_flags; \ 50 uv_async_t* cf_cb; \ 51 struct uv__queue cf_events; \ 52 struct uv__queue cf_member; \ 53 int cf_error; \ 54 uv_mutex_t cf_mutex; \ 55 56 #define UV_STREAM_PRIVATE_PLATFORM_FIELDS \ 57 void* select; \ 58 59 #define UV_HAVE_KQUEUE 1 60 61 #endif /* UV_DARWIN_H */ 62