blob: 151183751fce2dc7fb3110f7ff465697a0f6dfef [file] [log] [blame]
Arjan van der Ven9ed46282007-05-13 17:17:29 +00001/*
Arjan van der Venee42d812007-05-18 18:33:19 +00002 * Copyright 2007, Intel Corporation
Arjan van der Ven9ed46282007-05-13 17:17:29 +00003 *
4 * This file is part of PowerTOP
5 *
6 * This program file is free software; you can redistribute it and/or modify it
7 * under the terms of the GNU General Public License as published by the
8 * Free Software Foundation; version 2 of the License.
9 *
10 * This program is distributed in the hope that it will be useful, but WITHOUT
11 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
12 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
13 * for more details.
14 *
15 * You should have received a copy of the GNU General Public License
16 * along with this program in a file named COPYING; if not, write to the
17 * Free Software Foundation, Inc.,
18 * 51 Franklin Street, Fifth Floor,
19 * Boston, MA 02110-1301 USA
20 *
21 * Authors:
22 * Arjan van de Ven <arjan@linux.intel.com>
23 */
24
25
26#ifndef __INCLUDE_GUARD_POWERTOP_H_
27#define __INCLUDE_GUARD_POWERTOP_H_
28
Anurag Singhc5781f82011-10-10 10:44:44 -070029#include "gettext.h"
Arjan van der Ven5629af42007-05-22 17:25:20 +000030
Arjan van der Ven9ed46282007-05-13 17:17:29 +000031struct line {
32 char *string;
33 int count;
Arjan van der Ven356cd2c2007-12-13 21:52:01 +000034 char pid[12];
Arjan van der Ven9ed46282007-05-13 17:17:29 +000035};
36
Arjan van der Venb43056b2007-05-24 20:47:42 +000037typedef void (suggestion_func)(void);
38
Arjan van der Venbdedb3c2007-05-22 23:53:28 +000039extern struct line *lines;
40extern int linehead;
41extern int linesize;
42extern int linectotal;
Anurag Singhbf459e22011-10-10 10:50:51 -070043extern int total_interrupt;
Arjan van der Venbdedb3c2007-05-22 23:53:28 +000044
Arjan van der Ven2b7db8e2007-06-23 19:03:34 +000045extern double displaytime;
46
Arjan van der Venc16dfc72007-06-08 03:49:35 +000047void suggest_process_death(char *process_match, char *process_name, struct line *slines, int linecount, double minwakeups, char *comment, int weight);
Arjan van der Ven825ec692007-05-24 17:41:06 +000048void suggest_kernel_config(char *string, int onoff, char *comment, int weight);
Arjan van der Vene695e752007-05-21 20:40:05 +000049void suggest_laptop_mode(void);
Arjan van der Ven8ca6c1f2007-05-21 22:25:44 +000050void suggest_bluetooth_off(void);
Arjan van der Venaa182ee2007-05-22 20:14:45 +000051void suggest_nmi_watchdog(void);
Arjan van der Ven7fe32322007-05-24 17:52:56 +000052void suggest_hpet(void);
Arjan van der Venaed51c72007-05-25 16:11:50 +000053void suggest_ac97_powersave(void);
Arjan van der Venaec529b2007-05-25 19:57:57 +000054void suggest_wireless_powersave(void);
Arjan van der Ven2889d762007-05-26 14:13:41 +000055void suggest_ondemand_governor(void);
Arjan van der Venc16dfc72007-06-08 03:49:35 +000056void suggest_noatime(void);
Arjan van der Venf1cc3b92007-06-08 04:56:33 +000057void suggest_sata_alpm(void);
58void suggest_powersched(void);
Arjan van der Ven4193b602007-06-12 22:33:45 +000059void suggest_xrandr_TV_off(void);
Arjan van der Venc29ff6b2007-06-16 17:00:46 +000060void suggest_WOL_off(void);
Arjan van der Ven35b51972007-06-19 01:52:00 +000061void suggest_writeback_time(void);
Arjan van der Ven9823a122007-07-28 03:49:35 +000062void suggest_usb_autosuspend(void);
Arjan van der Vene3c78822008-03-27 04:57:39 +000063void usb_activity_hint(void);
Arjan van der Venc16dfc72007-06-08 03:49:35 +000064
Arjan van der Ven7fe32322007-05-24 17:52:56 +000065
Arjan van der Vencc857522007-05-13 17:28:15 +000066
Arjan van der Vencc857522007-05-13 17:28:15 +000067
Arjan van der Ven70551c52008-03-27 03:16:37 +000068extern char cstate_lines[12][200];
Patrick Caind2a9a4c2014-08-20 12:35:29 -070069extern char cpufreqstrings[25][256];
Anurag Singhc5781f82011-10-10 10:44:44 -070070extern char msm_pm_stat_lines[12][200];
Arjan van der Ven5288ca72007-05-23 16:24:06 +000071extern int topcstate;
Arjan van der Ven329bb7a2007-06-17 06:27:18 +000072extern int topfreq;
Arjan van der Ven6fe1c572007-08-18 21:52:07 +000073extern int dump;
Arjan van der Venbdedb3c2007-05-22 23:53:28 +000074
Arjan van der Ven356cd2c2007-12-13 21:52:01 +000075extern int showpids;
76
Arjan van der Venb43056b2007-05-24 20:47:42 +000077extern char status_bar_slots[10][40];
78extern char suggestion_key;
79extern suggestion_func *suggestion_activate;
80
81
Arjan van der Vencc857522007-05-13 17:28:15 +000082/* min definition borrowed from the Linux kernel */
83#define min(x,y) ({ \
84 typeof(x) _x = (x); \
85 typeof(y) _y = (y); \
86 (void) (&_x == &_y); \
87 _x < _y ? _x : _y; })
88
89
Arjan van der Venc425d822007-05-22 03:53:34 +000090#define _(STRING) gettext(STRING)
91
Arjan van der Venbdedb3c2007-05-22 23:53:28 +000092
93#define PT_COLOR_DEFAULT 1
94#define PT_COLOR_HEADER_BAR 2
95#define PT_COLOR_ERROR 3
96#define PT_COLOR_RED 4
97#define PT_COLOR_YELLOW 5
98#define PT_COLOR_GREEN 6
Arjan van der Venc26d73e2007-05-23 02:23:22 +000099#define PT_COLOR_BRIGHT 7
Arjan van der Venb37f85d2007-08-18 19:33:04 +0000100#define PT_COLOR_BLUE 8
Arjan van der Venbdedb3c2007-05-22 23:53:28 +0000101extern int maxwidth;
102
103void show_title_bar(void);
104void setup_windows(void);
105void initialize_curses(void);
Arjan van der Ven2e74d1d2007-05-26 15:47:40 +0000106void show_acpi_power_line(double rate, double cap, double capdelta, time_t time);
Auke Kok07ed39e2008-09-16 17:22:14 +0000107void show_pmu_power_line(unsigned sum_voltage_mV,
Auke Kok41e83602008-09-04 19:59:19 +0000108 unsigned sum_charge_mAh, unsigned sum_max_charge_mAh,
109 int sum_discharge_mA);
Arjan van der Venbdedb3c2007-05-22 23:53:28 +0000110void show_cstates(void);
Anurag Singhc5781f82011-10-10 10:44:44 -0700111void show_msm_pm_stats(void);
Arjan van der Venb37f85d2007-08-18 19:33:04 +0000112void show_wakeups(double d, double interval, double c0time);
Arjan van der Venbdedb3c2007-05-22 23:53:28 +0000113void show_timerstats(int nostats, int ticktime);
114void show_suggestion(char *sug);
115
Arjan van der Ven825ec692007-05-24 17:41:06 +0000116void pick_suggestion(void);
Arjan van der Venb43056b2007-05-24 20:47:42 +0000117void add_suggestion(char *text, int weight, char key, char *keystring, suggestion_func *func);
Arjan van der Ven825ec692007-05-24 17:41:06 +0000118void reset_suggestions(void);
Arjan van der Ven0bddd722007-08-31 17:24:07 +0000119void print_all_suggestions(void);
Arjan van der Ven9fc3a162007-10-03 20:09:00 +0000120void push_line(char *string, int count);
Arjan van der Ven825ec692007-05-24 17:41:06 +0000121
Arjan van der Ven329bb7a2007-06-17 06:27:18 +0000122void do_cpufreq_stats(void);
Arjan van der Ven9fc3a162007-10-03 20:09:00 +0000123void count_usb_urbs(void);
Arjan van der Ven329bb7a2007-06-17 06:27:18 +0000124
Arjan van der Vena332b9e2008-03-27 03:40:55 +0000125void display_usb_activity(void);
Arjan van der Vene3c78822008-03-27 04:57:39 +0000126void activate_usb_autosuspend(void);
Arjan van der Vendb0370a2008-03-27 18:44:50 +0000127void print_intel_cstates(void);
Anurag Singhc5781f82011-10-10 10:44:44 -0700128void msm_pm_stats(void);
Arjan van der Ven329bb7a2007-06-17 06:27:18 +0000129
Arjan van der Ven825ec692007-05-24 17:41:06 +0000130
Arjan van der Ven9ed46282007-05-13 17:17:29 +0000131#endif