| 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). |