• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #ifndef MOJO_EDK_EMBEDDER_CONFIGURATION_H_
6 #define MOJO_EDK_EMBEDDER_CONFIGURATION_H_
7 
8 #include <stddef.h>
9 #include <stdint.h>
10 
11 namespace mojo {
12 namespace edk {
13 
14 // A set of constants that the Mojo system internally uses. These values should
15 // be consistent across all processes on the same system.
16 //
17 // In general, there should be no need to change these values from their
18 // defaults. However, if you do change them, you must do so before
19 // initialization.
20 struct Configuration {
21   // Maximum number of open (Mojo) handles. The default is 1,000,000.
22   //
23   // TODO(vtl): This doesn't count "live" handles, some of which may live in
24   // messages.
25   size_t max_handle_table_size;
26 
27   // Maximum number of active memory mappings. The default is 1,000,000.
28   size_t max_mapping_table_sze;
29 
30   // Upper limit of |MojoWaitMany()|'s |num_handles|. The default is 1,000,000.
31   // Must be same as or smaller than |max_handle_table_size|.
32   size_t max_wait_many_num_handles;
33 
34   // Maximum data size of messages sent over message pipes, in bytes. The
35   // default is 4MB.
36   size_t max_message_num_bytes;
37 
38   // Maximum number of handles that can be attached to messages sent over
39   // message pipes. The default is 10,000.
40   size_t max_message_num_handles;
41 
42   // Maximum capacity of a data pipe, in bytes. The default is 256MB. This value
43   // must fit into a |uint32_t|. WARNING: If you bump it closer to 2^32, you
44   // must audit all the code to check that we don't overflow (2^31 would
45   // definitely be risky; up to 2^30 is probably okay).
46   size_t max_data_pipe_capacity_bytes;
47 
48   // Default data pipe capacity, if not specified explicitly in the creation
49   // options. The default is 1MB.
50   size_t default_data_pipe_capacity_bytes;
51 
52   // Alignment for the "start" of the data buffer used by data pipes. (The
53   // alignment of elements will depend on this and the element size.)  The
54   // default is 16 bytes.
55   size_t data_pipe_buffer_alignment_bytes;
56 
57   // Maximum size of a single shared memory segment, in bytes. The default is
58   // 1GB.
59   //
60   // TODO(vtl): Set this hard limit appropriately (e.g., higher on 64-bit).
61   // (This will also entail some auditing to make sure I'm not messing up my
62   // checks anywhere.)
63   size_t max_shared_memory_num_bytes;
64 };
65 
66 }  // namespace edk
67 }  // namespace mojo
68 
69 #endif  // MOJO_EDK_EMBEDDER_CONFIGURATION_H_
70