2014-11-24 20:55:49 +00:00
/*
htop - unsupported / Platform . c
( C ) 2014 Hisham H . Muhammad
2015-07-12 16:26:33 +00:00
( C ) 2015 David C . Hunt
2020-10-05 07:51:32 +00:00
Released under the GNU GPLv2 , see the COPYING file
2014-11-24 20:55:49 +00:00
in the source distribution for its full text .
*/
2020-09-07 10:24:32 +00:00
# include <math.h>
2014-11-24 20:55:49 +00:00
# include "Platform.h"
2020-10-03 20:00:27 +00:00
# include "Macros.h"
2014-11-27 21:18:14 +00:00
# include "CPUMeter.h"
# include "MemoryMeter.h"
# include "SwapMeter.h"
# include "TasksMeter.h"
# include "LoadAverageMeter.h"
# include "ClockMeter.h"
2020-10-05 11:52:58 +00:00
# include "DateMeter.h"
# include "DateTimeMeter.h"
2014-11-27 21:18:14 +00:00
# include "HostnameMeter.h"
2014-11-27 21:41:14 +00:00
# include "UptimeMeter.h"
2014-11-24 20:55:49 +00:00
2016-08-30 12:41:17 +00:00
const SignalItem Platform_signals [ ] = {
2016-02-14 13:45:47 +00:00
{ . name = " 0 Cancel " , . number = 0 } ,
} ;
2020-10-03 20:00:27 +00:00
const unsigned int Platform_numberOfSignals = ARRAYSIZE ( Platform_signals ) ;
2016-02-14 13:45:47 +00:00
2015-07-12 16:26:33 +00:00
ProcessField Platform_defaultFields [ ] = { PID , USER , PRIORITY , NICE , M_SIZE , M_RESIDENT , STATE , PERCENT_CPU , PERCENT_MEM , TIME , COMM , 0 } ;
ProcessFieldData Process_fields [ ] = {
[ 0 ] = { . name = " " , . title = NULL , . description = NULL , . flags = 0 , } ,
[ PID ] = { . name = " PID " , . title = " PID " , . description = " Process/thread ID " , . flags = 0 , } ,
[ COMM ] = { . name = " Command " , . title = " Command " , . description = " Command line " , . flags = 0 , } ,
[ STATE ] = { . name = " STATE " , . title = " S " , . description = " Process state (S sleeping, R running, D disk, Z zombie, T traced, W paging) " , . flags = 0 , } ,
[ PPID ] = { . name = " PPID " , . title = " PPID " , . description = " Parent process ID " , . flags = 0 , } ,
[ PGRP ] = { . name = " PGRP " , . title = " PGRP " , . description = " Process group ID " , . flags = 0 , } ,
2017-02-04 23:10:29 +00:00
[ SESSION ] = { . name = " SESSION " , . title = " SID " , . description = " Process's session ID " , . flags = 0 , } ,
2016-10-01 06:09:04 +00:00
[ TTY_NR ] = { . name = " TTY_NR " , . title = " TTY " , . description = " Controlling terminal " , . flags = 0 , } ,
2015-07-12 16:26:33 +00:00
[ TPGID ] = { . name = " TPGID " , . title = " TPGID " , . description = " Process ID of the fg process group of the controlling terminal " , . flags = 0 , } ,
[ MINFLT ] = { . name = " MINFLT " , . title = " MINFLT " , . description = " Number of minor faults which have not required loading a memory page from disk " , . flags = 0 , } ,
[ MAJFLT ] = { . name = " MAJFLT " , . title = " MAJFLT " , . description = " Number of major faults which have required loading a memory page from disk " , . flags = 0 , } ,
[ PRIORITY ] = { . name = " PRIORITY " , . title = " PRI " , . description = " Kernel's internal priority for the process " , . flags = 0 , } ,
[ NICE ] = { . name = " NICE " , . title = " NI " , . description = " Nice value (the higher the value, the more it lets other processes take priority) " , . flags = 0 , } ,
[ STARTTIME ] = { . name = " STARTTIME " , . title = " START " , . description = " Time the process was started " , . flags = 0 , } ,
[ PROCESSOR ] = { . name = " PROCESSOR " , . title = " CPU " , . description = " Id of the CPU the process last executed on " , . flags = 0 , } ,
[ M_SIZE ] = { . name = " M_SIZE " , . title = " VIRT " , . description = " Total program size in virtual memory " , . flags = 0 , } ,
[ M_RESIDENT ] = { . name = " M_RESIDENT " , . title = " RES " , . description = " Resident set size, size of the text and data sections, plus stack usage " , . flags = 0 , } ,
2018-10-07 09:16:12 +00:00
[ ST_UID ] = { . name = " ST_UID " , . title = " UID " , . description = " User ID of the process owner " , . flags = 0 , } ,
2015-07-12 16:26:33 +00:00
[ PERCENT_CPU ] = { . name = " PERCENT_CPU " , . title = " CPU% " , . description = " Percentage of the CPU time the process used in the last sampling " , . flags = 0 , } ,
[ PERCENT_MEM ] = { . name = " PERCENT_MEM " , . title = " MEM% " , . description = " Percentage of the memory the process is using, based on resident memory size " , . flags = 0 , } ,
[ USER ] = { . name = " USER " , . title = " USER " , . description = " Username of the process owner (or user ID if name cannot be determined) " , . flags = 0 , } ,
[ TIME ] = { . name = " TIME " , . title = " TIME+ " , . description = " Total time the process has spent in user and system time " , . flags = 0 , } ,
[ NLWP ] = { . name = " NLWP " , . title = " NLWP " , . description = " Number of threads in the process " , . flags = 0 , } ,
[ TGID ] = { . name = " TGID " , . title = " TGID " , . description = " Thread group ID (i.e. process ID) " , . flags = 0 , } ,
[ 100 ] = { . name = " *** report bug! *** " , . title = NULL , . description = NULL , . flags = 0 , } ,
} ;
2014-11-24 20:55:49 +00:00
2020-10-05 11:19:50 +00:00
const MeterClass * const Platform_meterTypes [ ] = {
2014-11-27 21:18:14 +00:00
& CPUMeter_class ,
& ClockMeter_class ,
2020-10-05 11:52:58 +00:00
& DateMeter_class ,
& DateTimeMeter_class ,
2014-11-27 21:18:14 +00:00
& LoadAverageMeter_class ,
& LoadMeter_class ,
& MemoryMeter_class ,
& SwapMeter_class ,
& TasksMeter_class ,
& BatteryMeter_class ,
& HostnameMeter_class ,
2014-11-27 21:41:14 +00:00
& UptimeMeter_class ,
2014-11-27 21:18:14 +00:00
& AllCPUsMeter_class ,
& AllCPUs2Meter_class ,
2020-09-24 19:50:29 +00:00
& AllCPUs4Meter_class ,
2020-09-24 19:56:40 +00:00
& AllCPUs8Meter_class ,
2014-11-27 21:18:14 +00:00
& LeftCPUsMeter_class ,
& RightCPUsMeter_class ,
& LeftCPUs2Meter_class ,
& RightCPUs2Meter_class ,
2020-09-24 19:50:29 +00:00
& LeftCPUs4Meter_class ,
& RightCPUs4Meter_class ,
2020-09-24 19:56:40 +00:00
& LeftCPUs8Meter_class ,
& RightCPUs8Meter_class ,
2014-11-27 21:18:14 +00:00
& BlankMeter_class ,
NULL
} ;
2015-07-12 16:26:33 +00:00
int Platform_numberOfFields = 100 ;
2016-02-14 13:45:47 +00:00
ProcessPidColumn Process_pidColumns [ ] = {
{ . id = 0 , . label = NULL } ,
} ;
2015-07-12 16:26:33 +00:00
2020-11-19 01:32:07 +00:00
void Platform_init ( void ) {
/* no platform-specific setup needed */
}
void Platform_done ( void ) {
/* no platform-specific cleanup needed */
}
void Platform_setBindings ( Htop_Action * keys ) {
/* no platform-specific key bindings */
( void ) keys ;
}
2014-11-27 21:41:14 +00:00
int Platform_getUptime ( ) {
2015-07-12 16:26:33 +00:00
return 0 ;
2014-11-27 21:41:14 +00:00
}
2014-11-27 21:57:24 +00:00
void Platform_getLoadAverage ( double * one , double * five , double * fifteen ) {
* one = 0 ;
* five = 0 ;
* fifteen = 0 ;
}
2014-11-27 22:10:23 +00:00
int Platform_getMaxPid ( ) {
2015-07-12 16:26:33 +00:00
return 1 ;
}
double Platform_setCPUValues ( Meter * this , int cpu ) {
2016-02-14 13:45:47 +00:00
( void ) cpu ;
2019-08-11 00:17:45 +00:00
double * v = this - > values ;
2020-09-07 10:24:32 +00:00
v [ CPU_METER_FREQUENCY ] = NAN ;
2020-09-10 17:56:33 +00:00
v [ CPU_METER_TEMPERATURE ] = NAN ;
2019-08-11 00:17:45 +00:00
2016-02-14 13:45:47 +00:00
return 0.0 ;
2015-07-12 16:26:33 +00:00
}
void Platform_setMemoryValues ( Meter * this ) {
2016-02-14 13:45:47 +00:00
( void ) this ;
2015-07-12 16:26:33 +00:00
}
void Platform_setSwapValues ( Meter * this ) {
2016-02-14 13:45:47 +00:00
( void ) this ;
2015-07-12 16:26:33 +00:00
}
2020-10-07 17:02:15 +00:00
bool Process_isThread ( const Process * this ) {
2016-02-14 13:45:47 +00:00
( void ) this ;
2015-07-12 16:26:33 +00:00
return false ;
2014-11-27 22:10:23 +00:00
}
2014-11-27 23:02:52 +00:00
2015-12-03 21:16:10 +00:00
char * Platform_getProcessEnv ( pid_t pid ) {
2016-02-14 13:45:47 +00:00
( void ) pid ;
2015-12-03 21:16:10 +00:00
return NULL ;
}
2020-09-13 17:46:34 +00:00
2020-11-11 21:15:35 +00:00
char * Platform_getInodeFilename ( pid_t pid , ino_t inode ) {
( void ) pid ;
( void ) inode ;
return NULL ;
}
FileLocks_ProcessData * Platform_getProcessLocks ( pid_t pid ) {
( void ) pid ;
return NULL ;
}
2020-10-21 15:06:32 +00:00
bool Platform_getDiskIO ( DiskIOData * data ) {
( void ) data ;
2020-10-20 19:40:51 +00:00
return false ;
2020-09-13 17:46:34 +00:00
}
2020-10-08 14:34:54 +00:00
2020-10-31 22:28:02 +00:00
bool Platform_getNetworkIO ( unsigned long int * bytesReceived ,
unsigned long int * packetsReceived ,
unsigned long int * bytesTransmitted ,
unsigned long int * packetsTransmitted ) {
2020-10-08 14:34:54 +00:00
* bytesReceived = 0 ;
* packetsReceived = 0 ;
* bytesTransmitted = 0 ;
* packetsTransmitted = 0 ;
2020-10-20 19:40:51 +00:00
return false ;
2020-10-08 14:34:54 +00:00
}
2020-11-17 07:12:38 +00:00
void Platform_getBattery ( double * level , ACPresence * isOnAC ) {
* level = NAN ;
* isOnAC = AC_ERROR ;
}