| #!/bin/sh | |
| # Copyright 2012 The ChromiumOS Authors | |
| # 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 |