Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 // This file contains the handle-related definitions/declarations. | 5 // This file contains Mojo system handle-related declarations/definitions. |
| 6 // | 6 // |
| 7 // Note: This header should be compilable as C. | 7 // Note: This header should be compilable as C. |
| 8 | 8 |
| 9 #ifndef MOJO_PUBLIC_C_SYSTEM_HANDLE_H_ | 9 #ifndef MOJO_PUBLIC_C_SYSTEM_HANDLE_H_ |
| 10 #define MOJO_PUBLIC_C_SYSTEM_HANDLE_H_ | 10 #define MOJO_PUBLIC_C_SYSTEM_HANDLE_H_ |
| 11 | 11 |
| 12 #include <stdint.h> | 12 #include <stdint.h> |
| 13 | 13 |
| 14 #include "mojo/public/c/system/macros.h" | 14 #include "mojo/public/c/system/macros.h" |
| 15 #include "mojo/public/c/system/result.h" | |
| 15 | 16 |
| 16 // |MojoHandle|: Handles to Mojo objects. | 17 // |MojoHandle|: Handles to Mojo objects. |
| 17 // |MOJO_HANDLE_INVALID| - A value that is never a valid handle. | 18 // |MOJO_HANDLE_INVALID| - A value that is never a valid handle. |
| 18 | 19 |
| 19 typedef uint32_t MojoHandle; | 20 typedef uint32_t MojoHandle; |
| 20 | 21 |
| 21 #define MOJO_HANDLE_INVALID ((MojoHandle)0) | 22 #define MOJO_HANDLE_INVALID ((MojoHandle)0) |
| 22 | 23 |
| 23 // |MojoHandleSignals|: Used to specify signals that can be waited on for a | 24 // |MojoHandleSignals|: Used to specify signals that can be waited on for a |
| 24 // handle (and which can be triggered), e.g., the ability to read or write to | 25 // handle (and which can be triggered), e.g., the ability to read or write to |
| (...skipping 22 matching lines...) Expand all Loading... | |
| 47 // Note: This struct is not extensible (and only has 32-bit quantities), so it's | 48 // Note: This struct is not extensible (and only has 32-bit quantities), so it's |
| 48 // 32-bit-aligned. | 49 // 32-bit-aligned. |
| 49 MOJO_STATIC_ASSERT(MOJO_ALIGNOF(uint32_t) == 4, "uint32_t has weird alignment"); | 50 MOJO_STATIC_ASSERT(MOJO_ALIGNOF(uint32_t) == 4, "uint32_t has weird alignment"); |
| 50 struct MOJO_ALIGNAS(4) MojoHandleSignalsState { | 51 struct MOJO_ALIGNAS(4) MojoHandleSignalsState { |
| 51 MojoHandleSignals satisfied_signals; | 52 MojoHandleSignals satisfied_signals; |
| 52 MojoHandleSignals satisfiable_signals; | 53 MojoHandleSignals satisfiable_signals; |
| 53 }; | 54 }; |
| 54 MOJO_STATIC_ASSERT(sizeof(MojoHandleSignalsState) == 8, | 55 MOJO_STATIC_ASSERT(sizeof(MojoHandleSignalsState) == 8, |
| 55 "MojoHandleSignalsState has wrong size"); | 56 "MojoHandleSignalsState has wrong size"); |
| 56 | 57 |
| 58 #ifdef __cplusplus | |
|
jamesr
2016/03/11 18:36:42
maybe this should go in macros.h - i forsee it bei
viettrungluu
2016/03/11 20:38:31
Will think about doing so (separately).
| |
| 59 extern "C" { | |
| 60 #endif | |
| 61 | |
| 62 // Closes the given |handle|. | |
| 63 // | |
| 64 // Returns: | |
| 65 // |MOJO_RESULT_OK| on success. | |
| 66 // |MOJO_RESULT_INVALID_ARGUMENT| if |handle| is not a valid handle. | |
| 67 // | |
| 68 // Concurrent operations on |handle| may succeed (or fail as usual) if they | |
| 69 // happen before the close, be cancelled with result |MOJO_RESULT_CANCELLED| if | |
| 70 // they properly overlap (this is likely the case with |MojoWait()|, etc.), or | |
| 71 // fail with |MOJO_RESULT_INVALID_ARGUMENT| if they happen after. | |
| 72 MojoResult MojoClose(MojoHandle handle); | |
| 73 | |
| 74 #ifdef __cplusplus | |
| 75 } // extern "C" | |
| 76 #endif | |
| 77 | |
| 57 #endif // MOJO_PUBLIC_C_SYSTEM_HANDLE_H_ | 78 #endif // MOJO_PUBLIC_C_SYSTEM_HANDLE_H_ |
| OLD | NEW |