top: display battery capacity remaining
Submitted by: Antranig Vartanian <antranigv@freebsd.am> Reviewed by: imp, philip Differential Revision: https://reviews.freebsd.org/D22871
This commit is contained in:
parent
41763378dd
commit
75a0c92cc0
@ -1322,6 +1322,15 @@ i_uptime(struct timeval *bt, time_t *tod)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
i_battery(int nbat, int batt)
|
||||||
|
{
|
||||||
|
|
||||||
|
if (nbat > 0) {
|
||||||
|
printf("; battery: %d%%", batt);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#define SETUPBUFFER_MIN_SCREENWIDTH 80
|
#define SETUPBUFFER_MIN_SCREENWIDTH 80
|
||||||
#define SETUPBUFFER_REQUIRED_ADDBUFSIZ 2
|
#define SETUPBUFFER_REQUIRED_ADDBUFSIZ 2
|
||||||
|
|
||||||
|
@ -14,6 +14,7 @@ void i_header(const char *text);
|
|||||||
void display_header(int t);
|
void display_header(int t);
|
||||||
int display_init(struct statics *statics);
|
int display_init(struct statics *statics);
|
||||||
void i_arc(int *stats);
|
void i_arc(int *stats);
|
||||||
|
void i_battery(int nbat, int batt);
|
||||||
void i_carc(int *stats);
|
void i_carc(int *stats);
|
||||||
void i_cpustates(int *states);
|
void i_cpustates(int *states);
|
||||||
void i_loadave(int mpid, double *avenrun);
|
void i_loadave(int mpid, double *avenrun);
|
||||||
|
@ -211,6 +211,10 @@ static long *pcpu_cp_old;
|
|||||||
static long *pcpu_cp_diff;
|
static long *pcpu_cp_diff;
|
||||||
static int *pcpu_cpu_states;
|
static int *pcpu_cpu_states;
|
||||||
|
|
||||||
|
/* Battery units and states */
|
||||||
|
static int battery_units;
|
||||||
|
static int battery_life;
|
||||||
|
|
||||||
static int compare_swap(const void *a, const void *b);
|
static int compare_swap(const void *a, const void *b);
|
||||||
static int compare_jid(const void *a, const void *b);
|
static int compare_jid(const void *a, const void *b);
|
||||||
static int compare_pid(const void *a, const void *b);
|
static int compare_pid(const void *a, const void *b);
|
||||||
@ -373,6 +377,12 @@ machine_init(struct statics *statics)
|
|||||||
pcpu_cpu_states = calloc(ncpus * CPUSTATES, sizeof(int));
|
pcpu_cpu_states = calloc(ncpus * CPUSTATES, sizeof(int));
|
||||||
statics->ncpus = ncpus;
|
statics->ncpus = ncpus;
|
||||||
|
|
||||||
|
/* Allocate state of battery units reported via ACPI. */
|
||||||
|
battery_units = 0;
|
||||||
|
size = sizeof(int);
|
||||||
|
sysctlbyname("hw.acpi.battery.units", &battery_units, &size, NULL, 0);
|
||||||
|
statics->nbatteries = battery_units;
|
||||||
|
|
||||||
update_layout();
|
update_layout();
|
||||||
|
|
||||||
/* all done! */
|
/* all done! */
|
||||||
@ -579,6 +589,12 @@ get_system_info(struct system_info *si)
|
|||||||
} else {
|
} else {
|
||||||
si->boottime.tv_sec = -1;
|
si->boottime.tv_sec = -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
battery_life = 0;
|
||||||
|
if (battery_units > 0) {
|
||||||
|
GETSYSCTL("hw.acpi.battery.life", battery_life);
|
||||||
|
}
|
||||||
|
si->battery = battery_life;
|
||||||
}
|
}
|
||||||
|
|
||||||
#define NOPROC ((void *)-1)
|
#define NOPROC ((void *)-1)
|
||||||
|
@ -30,6 +30,7 @@ struct statics
|
|||||||
const char * const *carc_names;
|
const char * const *carc_names;
|
||||||
const char * const *swap_names;
|
const char * const *swap_names;
|
||||||
const char * const *order_names;
|
const char * const *order_names;
|
||||||
|
int nbatteries;
|
||||||
int ncpus;
|
int ncpus;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -50,6 +51,7 @@ struct system_info
|
|||||||
int *carc;
|
int *carc;
|
||||||
int *swap;
|
int *swap;
|
||||||
struct timeval boottime;
|
struct timeval boottime;
|
||||||
|
int battery;
|
||||||
int ncpus;
|
int ncpus;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -619,6 +619,9 @@ main(int argc, const char *argv[])
|
|||||||
(*d_loadave)(system_info.last_pid,
|
(*d_loadave)(system_info.last_pid,
|
||||||
system_info.load_avg);
|
system_info.load_avg);
|
||||||
|
|
||||||
|
/* display the battery info (if any) */
|
||||||
|
i_battery(statics.nbatteries, system_info.battery);
|
||||||
|
|
||||||
/* display the current time */
|
/* display the current time */
|
||||||
/* this method of getting the time SHOULD be fairly portable */
|
/* this method of getting the time SHOULD be fairly portable */
|
||||||
time(&curr_time);
|
time(&curr_time);
|
||||||
|
Loading…
Reference in New Issue
Block a user