Chromium Code Reviews| 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,75 @@ |
| +/* |
| + * 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 "native_client/src/include/nacl_base.h" |
| +#include "native_client/src/include/nacl_compiler_annotations.h" |
| +#include "native_client/src/shared/platform/nacl_check.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 != 32 |
|
Mark Seaborn
2013/02/14 23:55:02
Probably better to say:
#if NACL_ARCH(NACL_BUILD_A
|
| + |
| +/* |
| + * 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. |
| + */ |
| +size_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(size_t nacl_thread_index); |
|
Mark Seaborn
2013/02/14 23:55:02
Elsewhere, thread indexes are all uint32_t
|
| + |
| +/* |
| + * 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(size_t nacl_thread_index); |
| + |
| +#else |
| + |
| +static INLINE size_t NaClGetThreadIndexForMachThread(mach_port_t mach_thread) { |
| + /* |
| + * This could be implemented for 32-bit x86 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. |
| + */ |
| + UNREFERENCED_PARAMETER(mach_thread); |
| + CHECK(0); |
|
Mark Seaborn
2013/02/14 23:55:02
I'd suggest omitting this function definition sinc
|
| + /* NOTREACHED */ |
| + return NACL_TLS_INDEX_INVALID; |
| +} |
| + |
| +static INLINE void NaClSetCurrentMachThreadForThreadIndex( |
| + size_t nacl_thread_index) { |
| + /* No-op for 32-bit x86. */ |
|
Mark Seaborn
2013/02/14 23:55:02
Nit: '32-bit x86' -> 'x86-32' (since that's the us
|
| + UNREFERENCED_PARAMETER(nacl_thread_index); |
| +} |
| + |
| +static INLINE void NaClClearMachThreadForThreadIndex(size_t nacl_thread_index) { |
| + /* No-op for 32-bit x86. */ |
| + 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 |