Index: src/trusted/service_runtime/osx/mach_thread_map.h |
=================================================================== |
--- src/trusted/service_runtime/osx/mach_thread_map.h (revision 0) |
+++ src/trusted/service_runtime/osx/mach_thread_map.h (revision 0) |
@@ -0,0 +1,71 @@ |
+/* |
+ * Copyright (c) 2013 The Native Client Authors. All rights reserved. |
+ * Use of this source code is governed by a BSD-style license that can be |
+ * found in the LICENSE file. |
+ */ |
+ |
+#ifndef NATIVE_CLIENT_SERVICE_RUNTIME_OSX_MACH_THREAD_MAP_H_ |
+#define NATIVE_CLIENT_SERVICE_RUNTIME_OSX_MACH_THREAD_MAP_H_ 1 |
+ |
+#if NACL_OSX |
+ |
+#include <mach/mach.h> |
+#include <stdint.h> |
+ |
+#include "native_client/src/include/nacl_base.h" |
+#include "native_client/src/include/nacl_compiler_annotations.h" |
+#include "native_client/src/trusted/service_runtime/nacl_tls.h" |
+ |
+EXTERN_C_BEGIN |
+ |
+#if NACL_ARCH(NACL_BUILD_ARCH) == NACL_x86 && NACL_BUILD_SUBARCH == 64 |
+ |
+/* |
+ * Retrieves the Native Client thread index for a given Mach thread, or |
+ * NACL_TLS_INDEX_INVALID if the Mach thread is unknown to Native Client. |
+ */ |
+uint32_t NaClGetThreadIndexForMachThread(mach_port_t mach_thread); |
+ |
+/* |
+ * Establishes a mapping from the currently executing Mach thread to the |
+ * given Native Client thread index. |
+ */ |
+void NaClSetCurrentMachThreadForThreadIndex(uint32_t nacl_thread_index); |
+ |
+/* |
+ * Clears any existing mapping to any Mach thread for the given Native Client |
+ * thread index. A thread's mapping must be cleared by itself, not by another |
+ * thread. |
+ */ |
+void NaClClearMachThreadForThreadIndex(uint32_t nacl_thread_index); |
+ |
+#else |
+ |
+/* |
+ * NaClGetThreadIndexForMachThread is not implemented for x86-32, although it |
+ * it could be implemented by using thread_get_state to obtain the thread's |
+ * state and returning %gs >> 3. It's left unimplemented because the only |
+ * prospective call sites already have access to the thread state and thus %gs |
+ * themselves, and directing them through this function would add system call |
+ * overhead for a redundant thread_get_state. |
+ */ |
+ |
+static INLINE void NaClSetCurrentMachThreadForThreadIndex( |
+ uint32_t nacl_thread_index) { |
+ /* No-op for x86-32. */ |
+ UNREFERENCED_PARAMETER(nacl_thread_index); |
+} |
+ |
+static INLINE void NaClClearMachThreadForThreadIndex( |
+ uint32_t nacl_thread_index) { |
+ /* No-op for x86-32. */ |
+ UNREFERENCED_PARAMETER(nacl_thread_index); |
+} |
+ |
+#endif |
+ |
+EXTERN_C_END |
+ |
+#endif /* NACL_OSX */ |
+ |
+#endif /* NATIVE_CLIENT_SERVICE_RUNTIME_OSX_MACH_THREAD_MAP_H_ */ |
Property changes on: src/trusted/service_runtime/osx/mach_thread_map.h |
___________________________________________________________________ |
Added: svn:eol-style |
+ LF |