blob: f82ea7672879a1969420b45f9ff69651fc48cbc2 [file] [log] [blame]
Yi Jin810b14f2017-09-11 19:01:08 -07001/*
2 * Copyright (C) 2017 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
Yi Jinc7f93072017-09-29 15:29:38 -070016syntax = "proto2";
Yi Jin22769e02017-10-16 14:42:50 -070017
Yi Jin810b14f2017-09-11 19:01:08 -070018option java_multiple_files = true;
19option java_outer_classname = "PageTypeInfoProto";
20
21package android.os;
22
23/*
24 * /proc/pagetypeinfo exports free memory distributions.
25 *
26 * For example, the order of a page ranges form 0 to 10.
27 * An order-0 page is 4 KB in size and 4 KB aligned.
28 * An order-1 page is 8 KB in size and 8 KB aligned.
29 * An order-10 page is 4096 KB in size and 4096 aligned.
30 * The memory has multiple zones, e.g. DMA zone, Normal zone
31 * Each zone has 11 free area. Each free area corresponds to pages of the same order.
32 * Each free area has 6 free list. Each corresponds to one migration type.
33 * The six migration types are Unmovable, Reclaimable, Movable, Reserve, CMA, and Isolate.
34 * Each zone has 11 * 6 = 66 free list.
35 *
36 * Next tag: 5
37 */
38message PageTypeInfo {
39
Yi Jinc7f93072017-09-29 15:29:38 -070040 optional int32 page_block_order = 1;
Yi Jin810b14f2017-09-11 19:01:08 -070041
Yi Jinc7f93072017-09-29 15:29:38 -070042 optional int32 pages_per_block = 2;
Yi Jin810b14f2017-09-11 19:01:08 -070043
44 repeated MigrateTypeProto migrate_types = 3;
45
46 repeated BlockProto blocks = 4;
47}
48
49// Next tag: 5
50message MigrateTypeProto {
51
Yi Jinc7f93072017-09-29 15:29:38 -070052 optional int32 node = 1;
Yi Jin810b14f2017-09-11 19:01:08 -070053
Yi Jinc7f93072017-09-29 15:29:38 -070054 optional string zone = 2;
Yi Jin810b14f2017-09-11 19:01:08 -070055
Yi Jinc7f93072017-09-29 15:29:38 -070056 optional string type = 3;
Yi Jin810b14f2017-09-11 19:01:08 -070057
58 // order level starts from 0 for 4KB to page_block_order defined above, e.g. 10 for 4096KB
59 repeated int32 free_pages_count = 4;
60}
61
62// Next tag: 9
63message BlockProto {
64
Yi Jinc7f93072017-09-29 15:29:38 -070065 optional int32 node = 1;
Yi Jin810b14f2017-09-11 19:01:08 -070066
Yi Jinc7f93072017-09-29 15:29:38 -070067 optional string zone = 2;
Yi Jin810b14f2017-09-11 19:01:08 -070068
Yi Jinc7f93072017-09-29 15:29:38 -070069 optional int32 unmovable = 3;
Yi Jin810b14f2017-09-11 19:01:08 -070070
Yi Jinc7f93072017-09-29 15:29:38 -070071 optional int32 reclaimable = 4;
Yi Jin810b14f2017-09-11 19:01:08 -070072
Yi Jinc7f93072017-09-29 15:29:38 -070073 optional int32 movable = 5;
Yi Jin810b14f2017-09-11 19:01:08 -070074
Yi Jinc7f93072017-09-29 15:29:38 -070075 optional int32 cma = 6;
Yi Jin810b14f2017-09-11 19:01:08 -070076
Yi Jinc7f93072017-09-29 15:29:38 -070077 optional int32 reserve = 7;
Yi Jin810b14f2017-09-11 19:01:08 -070078
Yi Jinc7f93072017-09-29 15:29:38 -070079 optional int32 isolate = 8;
Yi Jin810b14f2017-09-11 19:01:08 -070080}