diff options
author | Shuah Khan <shuahkh@osg.samsung.com> | 2016-09-22 00:34:55 +0200 |
---|---|---|
committer | Shuah Khan <shuahkh@osg.samsung.com> | 2016-09-23 21:07:21 +0200 |
commit | 3ca9760fdfa411f7e5db54b3437fbb858d2ec825 (patch) | |
tree | 8a2839309295a8e982544ee3f151d854916d97e7 /Documentation | |
parent | tools: move accounting tool from Documentation (diff) | |
download | linux-3ca9760fdfa411f7e5db54b3437fbb858d2ec825.tar.xz linux-3ca9760fdfa411f7e5db54b3437fbb858d2ec825.zip |
tools: move laptops dslm tool from Documentation
Move laptops dslm tool to tools/laptop/dslm and remove it from
Documentation Makefile. Update location information for this
tool. Create a new Makefile to build dslm. It can be built
from top level directory or from laptops directory:
Run make -C tools/laptop/dslm or cd tools/laptop/dslm; make
Acked-by: Jonathan Corbet <corbet@lwn.net>
Signed-off-by: Shuah Khan <shuahkh@osg.samsung.com>
Diffstat (limited to 'Documentation')
-rw-r--r-- | Documentation/Makefile | 2 | ||||
-rw-r--r-- | Documentation/laptops/.gitignore | 1 | ||||
-rw-r--r-- | Documentation/laptops/00-INDEX | 4 | ||||
-rw-r--r-- | Documentation/laptops/Makefile | 5 | ||||
-rw-r--r-- | Documentation/laptops/dslm.c | 166 | ||||
-rw-r--r-- | Documentation/laptops/laptop-mode.txt | 2 |
6 files changed, 2 insertions, 178 deletions
diff --git a/Documentation/Makefile b/Documentation/Makefile index e4dd5e4614a4..0ddb50c3cfc4 100644 --- a/Documentation/Makefile +++ b/Documentation/Makefile @@ -1,2 +1,2 @@ subdir-y := blackfin \ - laptops pcmcia + pcmcia diff --git a/Documentation/laptops/.gitignore b/Documentation/laptops/.gitignore deleted file mode 100644 index 9fc984e64386..000000000000 --- a/Documentation/laptops/.gitignore +++ /dev/null @@ -1 +0,0 @@ -dslm diff --git a/Documentation/laptops/00-INDEX b/Documentation/laptops/00-INDEX index 7c0ac2a26b9e..86169dc766f7 100644 --- a/Documentation/laptops/00-INDEX +++ b/Documentation/laptops/00-INDEX @@ -1,13 +1,9 @@ 00-INDEX - This file -Makefile - - Makefile for building dslm example program. asus-laptop.txt - information on the Asus Laptop Extras driver. disk-shock-protection.txt - information on hard disk shock protection. -dslm.c - - Simple Disk Sleep Monitor program laptop-mode.txt - how to conserve battery power using laptop-mode. sony-laptop.txt diff --git a/Documentation/laptops/Makefile b/Documentation/laptops/Makefile deleted file mode 100644 index 0abe44f68965..000000000000 --- a/Documentation/laptops/Makefile +++ /dev/null @@ -1,5 +0,0 @@ -# List of programs to build -hostprogs-y := dslm - -# Tell kbuild to always build the programs -always := $(hostprogs-y) diff --git a/Documentation/laptops/dslm.c b/Documentation/laptops/dslm.c deleted file mode 100644 index d5dd2d4b04d8..000000000000 --- a/Documentation/laptops/dslm.c +++ /dev/null @@ -1,166 +0,0 @@ -/* - * dslm.c - * Simple Disk Sleep Monitor - * by Bartek Kania - * Licensed under the GPL - */ -#include <unistd.h> -#include <stdlib.h> -#include <stdio.h> -#include <fcntl.h> -#include <errno.h> -#include <time.h> -#include <string.h> -#include <signal.h> -#include <sys/ioctl.h> -#include <linux/hdreg.h> - -#ifdef DEBUG -#define D(x) x -#else -#define D(x) -#endif - -int endit = 0; - -/* Check if the disk is in powersave-mode - * Most of the code is stolen from hdparm. - * 1 = active, 0 = standby/sleep, -1 = unknown */ -static int check_powermode(int fd) -{ - unsigned char args[4] = {WIN_CHECKPOWERMODE1,0,0,0}; - int state; - - if (ioctl(fd, HDIO_DRIVE_CMD, &args) - && (args[0] = WIN_CHECKPOWERMODE2) /* try again with 0x98 */ - && ioctl(fd, HDIO_DRIVE_CMD, &args)) { - if (errno != EIO || args[0] != 0 || args[1] != 0) { - state = -1; /* "unknown"; */ - } else - state = 0; /* "sleeping"; */ - } else { - state = (args[2] == 255) ? 1 : 0; - } - D(printf(" drive state is: %d\n", state)); - - return state; -} - -static char *state_name(int i) -{ - if (i == -1) return "unknown"; - if (i == 0) return "sleeping"; - if (i == 1) return "active"; - - return "internal error"; -} - -static char *myctime(time_t time) -{ - char *ts = ctime(&time); - ts[strlen(ts) - 1] = 0; - - return ts; -} - -static void measure(int fd) -{ - time_t start_time; - int last_state; - time_t last_time; - int curr_state; - time_t curr_time = 0; - time_t time_diff; - time_t active_time = 0; - time_t sleep_time = 0; - time_t unknown_time = 0; - time_t total_time = 0; - int changes = 0; - float tmp; - - printf("Starting measurements\n"); - - last_state = check_powermode(fd); - start_time = last_time = time(0); - printf(" System is in state %s\n\n", state_name(last_state)); - - while(!endit) { - sleep(1); - curr_state = check_powermode(fd); - - if (curr_state != last_state || endit) { - changes++; - curr_time = time(0); - time_diff = curr_time - last_time; - - if (last_state == 1) active_time += time_diff; - else if (last_state == 0) sleep_time += time_diff; - else unknown_time += time_diff; - - last_state = curr_state; - last_time = curr_time; - - printf("%s: State-change to %s\n", myctime(curr_time), - state_name(curr_state)); - } - } - changes--; /* Compensate for SIGINT */ - - total_time = time(0) - start_time; - printf("\nTotal running time: %lus\n", curr_time - start_time); - printf(" State changed %d times\n", changes); - - tmp = (float)sleep_time / (float)total_time * 100; - printf(" Time in sleep state: %lus (%.2f%%)\n", sleep_time, tmp); - tmp = (float)active_time / (float)total_time * 100; - printf(" Time in active state: %lus (%.2f%%)\n", active_time, tmp); - tmp = (float)unknown_time / (float)total_time * 100; - printf(" Time in unknown state: %lus (%.2f%%)\n", unknown_time, tmp); -} - -static void ender(int s) -{ - endit = 1; -} - -static void usage(void) -{ - puts("usage: dslm [-w <time>] <disk>"); - exit(0); -} - -int main(int argc, char **argv) -{ - int fd; - char *disk = 0; - int settle_time = 60; - - /* Parse the simple command-line */ - if (argc == 2) - disk = argv[1]; - else if (argc == 4) { - settle_time = atoi(argv[2]); - disk = argv[3]; - } else - usage(); - - if (!(fd = open(disk, O_RDONLY|O_NONBLOCK))) { - printf("Can't open %s, because: %s\n", disk, strerror(errno)); - exit(-1); - } - - if (settle_time) { - printf("Waiting %d seconds for the system to settle down to " - "'normal'\n", settle_time); - sleep(settle_time); - } else - puts("Not waiting for system to settle down"); - - signal(SIGINT, ender); - - measure(fd); - - close(fd); - - return 0; -} diff --git a/Documentation/laptops/laptop-mode.txt b/Documentation/laptops/laptop-mode.txt index 4ebbfc3f1c6e..19276f5d195c 100644 --- a/Documentation/laptops/laptop-mode.txt +++ b/Documentation/laptops/laptop-mode.txt @@ -779,4 +779,4 @@ Monitoring tool --------------- Bartek Kania submitted this, it can be used to measure how much time your disk -spends spun up/down. See Documentation/laptops/dslm.c +spends spun up/down. See tools/laptop/dslm/dslm.c |