constants.h revision effb81e5f8246d0db0270817048dc992db66e9fb
1// Copyright 2013 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_SYSTEM_CONSTANTS_H_
6#define MOJO_SYSTEM_CONSTANTS_H_
7
8#include <stddef.h>
9
10namespace mojo {
11namespace system {
12
13// Maximum of open (Mojo) handles.
14// TODO(vtl): This doesn't count "live" handles, some of which may live in
15// messages.
16const size_t kMaxHandleTableSize = 1000000;
17
18const size_t kMaxWaitManyNumHandles = kMaxHandleTableSize;
19
20const size_t kMaxMessageNumBytes = 4 * 1024 * 1024;
21
22const size_t kMaxMessageNumHandles = 10000;
23
24// Maximum capacity of a data pipe, in bytes. This value must fit into a
25// |uint32_t|.
26// WARNING: If you bump it closer to 2^32, you must audit all the code to check
27// that we don't overflow (2^31 would definitely be risky; up to 2^30 is
28// probably okay).
29const size_t kMaxDataPipeCapacityBytes = 256 * 1024 * 1024;  // 256 MB.
30
31const size_t kDefaultDataPipeCapacityBytes = 1024 * 1024;  // 1 MB.
32
33// Alignment for the "start" of the data buffer used by data pipes. (The
34// alignment of elements will depend on this and the element size.)
35const size_t kDataPipeBufferAlignmentBytes = 16;
36
37// TODO(vtl): Set this hard limit appropriately (e.g., higher on 64-bit). (This
38// will also entail some auditing to make sure I'm not messing up my checks
39// anywhere.)
40const size_t kMaxSharedMemoryNumBytes = 1024 * 1024 * 1024;  // 1 GB.
41
42}  // namespace system
43}  // namespace mojo
44
45#endif  // MOJO_SYSTEM_CONSTANTS_H_
46