blob: 787e5f0ebf405ce2c0d56eb7007b6e1cab822da1 [file] [log] [blame]
Copyright (c) 2010 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.
This is the Chromium OS 'bootstat' utility. The utility is used
to generate timestamps and other performance statistics during
system boot.
==== Functional specification
Usage:
bootstat <event-name>
Summary: The command gathers and records the contents of
/proc/uptime and disk statistics for the boot disk (the full disk,
not the boot partition), and associates the data with the passed
in <event-name>.
==== API specification
The C and C++ API is defined in "bootstat.h". See that header for
specification details.
==== Design and implementation details
Uptime data are stored in a file named /tmp/uptime-<event-name>;
disk statistics are stored in a file named /tmp/disk-<event-name>.
This convention is a concession to pre-existing code that depends on
these files existing with these specific names, including the
platform_BootPerf test in autotest, the boot-complete upstart job,
and the Chrome code to report boot time on the login screen.
New code should treat the file names as an implementation detail,
not as the interface. You should not add new code that depends on
the file names; instead, you should enhance the bootstat command
and/or library to provide access to the data you need.
==== Code conventions
This is currently C code, because a) the code is required for use
as a library accessible to both C and C++ code, and b) it's too
small to justify the boilerplate required to have separate C and
C++ bindings. However, if the program grows, it may be appropriate
to convert all or part to C++.
To the extent that the code can be acceptable both to C and C++
compilers, it should also adhere to Google's C++ coding conventions.
In areas where the code is C specific, use your best judgement (note
that Google also has Objective-C coding conventions that may be
useful).