This repository was archived by the owner on Jan 4, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathkmem.sh
executable file
·107 lines (89 loc) · 2.94 KB
/
kmem.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
#! /bin/bash
#
# Copyright 2022 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# CAmkES system image memory analyzer.
# Analyze the CAmkES-generated capDL spec for memory use.
# By default the memory foottprint of each component is displayed.
# The -d option will give a breakdown by memory type:
# elf .text + .data
# bss .bss
# ipc_buffer CAmkES per-thread ipc_buffer's
# stack CAmkES per-thread stack
# bootinfo Bootinfo page passed by the rooteserver
# mmio MMIO region (backed by devivce memory)
#
# Note mmio sections do not count against memory usage as they are
# allocated from dedicated memory that does not have physical
# memory backing.
#
# ROOTDIR must be set to the top of the sparrow development tree
# (as done by build/setup.sh).
# Usage: kmem [-d]
if [[ -z "${ROOTDIR}" ]]; then
echo "Source build/setup.sh first"
exit 1
fi
# NB: should always be set but default anyway
PLATFORM=${PLATFORM:-sparrow}
# Default is a summary of release build.
DETAILS=""
BUILD="release"
KERNEL="--kernel"
VERBOSE=""
function parseargv {
local usage="Usage: kmem.sh [-h|--help] [-d|--details] [-D|--debug] [-R|--release] [-s|--summary] [-u|--user] [-v|--verbose]"
local args=$(getopt -o dDRsuv --long details,debug,release,summary,user,verbose,help -n kmem.sh -- "$@")
set -- $args
for i; do
case "$1" in
-d|--details)
DETAILS="--details"
shift
;;
-s|--summary)
DETAILS=""
shift
;;
-D|--debug)
BUILD="debug"
shift
;;
-R|--release)
BUILD="release"
shift
;;
-u|--user)
KERNEL=""
shift
;;
-v|--verbose)
VERBOSE="--verbose"
shift
;;
--)
shift
break
;;
-h|--help|*)
echo "$usage" >/dev/stderr
exit 1
;;
esac
done
}
parseargv "$@"
CANTRIP_OUT="${ROOTDIR}/out/cantrip/${PLATFORM}/${BUILD}"
PYTHONPATH="${PYTHONPATH}:${ROOTDIR}/cantrip/projects/capdl/python-capdl-tool"
exec python3 "${ROOTDIR}/cantrip/tools/seL4/kmem-tool/kmem.py" --object-state "${CANTRIP_OUT}/object-final.pickle" ${DETAILS} ${KERNEL} ${VERBOSE}