blob: 5b9097ed575b878e4c99b8bc738ce95be1d9cb62 [file] [log] [blame]
#!/bin/sh
# Copyright (c) 2012 The Chromium OS Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
getfield() {
shift "$1"
echo "$1"
}
# Converts a floating point number of seconds to a properly rounded
# number of integer milliseconds.
seconds_to_ms() {
echo "$1" | awk '{ print int($1 * 1000.0 + 0.5)}'
}
EVENT="$1"
shift
if [ $# -eq 0 ]; then
set -- time
fi
while [ $# -gt 0 ]; do
case "$1" in
time)
TAG=uptime
FIELD=1
;;
# Emit time in milliseconds instead of fractional seconds.
time-ms)
TAG=uptime
FIELD=1
EMIT_MS=1
;;
read-sectors)
TAG=disk
FIELD=3
;;
write-sectors)
TAG=disk
FIELD=7
;;
*)
shift
continue
;;
esac
# The 'boot-complete' upstart job tests for whether an event has
# been recorded by calling this script, so it's not an error if
# the requested event doesn't exist.
EVENTFILE="/tmp/${TAG}-${EVENT}"
if [ -f "${EVENTFILE}" ]; then
# The tail command is intentionally not quoted because getfield
# requires that the input is split into separate arguments.
result="$(getfield "${FIELD}" $(tail -1 "${EVENTFILE}"))"
if [ -n "${EMIT_MS}" ]; then
result="$(seconds_to_ms "${result}")"
fi
echo "${result}"
fi
shift
done