- win32: more error handling for failed system-calls
- win32: prepare code for unicode compilation
This commit is contained in:
parent
921ece54f9
commit
0db0b41476
|
@ -49,6 +49,14 @@
|
||||||
|
|
||||||
#include <ntdef.h>
|
#include <ntdef.h>
|
||||||
|
|
||||||
|
#if defined(UNICODE) ^ defined(_UNICODE)
|
||||||
|
#error Inconsistent UNICODE and _UNICODE definition
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if !defined(ARRAYSIZE)
|
||||||
|
#define ARRAYSIZE(x) (sizeof(x) / sizeof(x[0]))
|
||||||
|
#endif
|
||||||
|
|
||||||
// ***************************************************************************
|
// ***************************************************************************
|
||||||
// Needed to determine pagefile usage
|
// Needed to determine pagefile usage
|
||||||
// definitions were taken from MinGW include/ddk/ntapi.h because you cannot
|
// definitions were taken from MinGW include/ddk/ntapi.h because you cannot
|
||||||
|
@ -102,8 +110,8 @@ typedef enum PerfKey_T
|
||||||
|
|
||||||
static gint numCPUs;
|
static gint numCPUs;
|
||||||
//static gulong swapin, swapout;
|
//static gulong swapin, swapout;
|
||||||
static TCHAR netName[MAX_NET_ADAPTERS + 1][MAX_NET_NAME + 1];
|
static char netName[MAX_NET_ADAPTERS + 1][MAX_NET_NAME + 1];
|
||||||
static TCHAR diskName[MAX_DISKS + 1][MAX_DISK_NAME + 1];
|
static char diskName[MAX_DISKS + 1][MAX_DISK_NAME + 1];
|
||||||
static gint numAdapters = 0;
|
static gint numAdapters = 0;
|
||||||
static int rx[MAX_NET_ADAPTERS + 1];
|
static int rx[MAX_NET_ADAPTERS + 1];
|
||||||
static int tx[MAX_NET_ADAPTERS + 1];
|
static int tx[MAX_NET_ADAPTERS + 1];
|
||||||
|
@ -127,6 +135,35 @@ static HCOUNTER netRecCounter[MAX_NET_ADAPTERS + 1];
|
||||||
static HCOUNTER netSendCounter[MAX_NET_ADAPTERS + 1];
|
static HCOUNTER netSendCounter[MAX_NET_ADAPTERS + 1];
|
||||||
static PDH_STATUS status;
|
static PDH_STATUS status;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* TODO: group static globals in structs
|
||||||
|
typedef struct _GK_DISC
|
||||||
|
{
|
||||||
|
gchar name[MAX_DISK_NAME + 1];
|
||||||
|
gulong read;
|
||||||
|
gulong written;
|
||||||
|
HCOUNTER read_counter;
|
||||||
|
HCOUNTER diskWriteCounter;
|
||||||
|
} GK_DISC;
|
||||||
|
|
||||||
|
static GK_DISC s_disk[MAX_DISKS + 1];
|
||||||
|
static guint s_disk_cnt = 0;
|
||||||
|
|
||||||
|
|
||||||
|
typedef struct _GK_NET
|
||||||
|
{
|
||||||
|
gchar name[MAX_NET_NAME + 1];
|
||||||
|
gulong rx, tx;
|
||||||
|
HCOUNTER recv_counter, send_counter;
|
||||||
|
} GK_NET;
|
||||||
|
|
||||||
|
static GK_NET s_net[MAX_NET_ADAPTERS + 1];
|
||||||
|
static guint s_net_cnt = 0;
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// *****************************************************************
|
// *****************************************************************
|
||||||
|
|
||||||
// local function protos
|
// local function protos
|
||||||
|
@ -149,21 +186,21 @@ void gkrellm_sys_main_init(void)
|
||||||
int err;
|
int err;
|
||||||
|
|
||||||
if (_GK.debug_level & DEBUG_SYSDEP)
|
if (_GK.debug_level & DEBUG_SYSDEP)
|
||||||
printf("Starting Winsock\n");
|
_tprintf(_T("Starting Winsock\n"));
|
||||||
err = WSAStartup(MAKEWORD(1,1), &wsdata);
|
err = WSAStartup(MAKEWORD(1,1), &wsdata);
|
||||||
if (err != 0)
|
if (err != 0)
|
||||||
{
|
{
|
||||||
printf("Starting Winsock failed with error code %i\n", err);
|
_tprintf(_T("Starting Winsock failed with error code %i\n"), err);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (_GK.debug_level & DEBUG_SYSDEP)
|
if (_GK.debug_level & DEBUG_SYSDEP)
|
||||||
printf("Opening Pdh\n");
|
_tprintf(_T("Opening pdh-query\n"));
|
||||||
status = PdhOpenQuery(NULL, 0, &pdhQueryHandle);
|
status = PdhOpenQuery(NULL, 0, &pdhQueryHandle);
|
||||||
if (status != ERROR_SUCCESS || pdhQueryHandle == 0)
|
if (status != ERROR_SUCCESS || pdhQueryHandle == 0)
|
||||||
{
|
{
|
||||||
if (_GK.debug_level & DEBUG_SYSDEP)
|
if (_GK.debug_level & DEBUG_SYSDEP)
|
||||||
printf("Opening Pdh failed with error code %ld\n", status);
|
_tprintf(_T("Opening pdh-query failed with error code %lu\n"), status);
|
||||||
pdhQueryHandle = 0;
|
pdhQueryHandle = 0;
|
||||||
}
|
}
|
||||||
// get perflib localized key names
|
// get perflib localized key names
|
||||||
|
@ -194,7 +231,7 @@ void gkrellm_sys_main_cleanup(void)
|
||||||
#endif // WIN32_CLIENT
|
#endif // WIN32_CLIENT
|
||||||
|
|
||||||
if (_GK.debug_level & DEBUG_SYSDEP)
|
if (_GK.debug_level & DEBUG_SYSDEP)
|
||||||
printf("Waiting for mail checking thread to end.\n");
|
_tprintf(_T("Waiting for mail checking thread to end.\n"));
|
||||||
|
|
||||||
while (gkrellm_mail_get_active_thread() != NULL)
|
while (gkrellm_mail_get_active_thread() != NULL)
|
||||||
{
|
{
|
||||||
|
@ -205,7 +242,7 @@ void gkrellm_sys_main_cleanup(void)
|
||||||
|
|
||||||
// Close PDH query-handle
|
// Close PDH query-handle
|
||||||
if (_GK.debug_level & DEBUG_SYSDEP)
|
if (_GK.debug_level & DEBUG_SYSDEP)
|
||||||
printf("Closing Pdh\n");
|
_tprintf(_T("Closing Pdh\n"));
|
||||||
PdhCloseQuery(pdhQueryHandle);
|
PdhCloseQuery(pdhQueryHandle);
|
||||||
|
|
||||||
// free up these strings
|
// free up these strings
|
||||||
|
@ -217,7 +254,7 @@ void gkrellm_sys_main_cleanup(void)
|
||||||
|
|
||||||
// stop winsock
|
// stop winsock
|
||||||
if (_GK.debug_level & DEBUG_SYSDEP)
|
if (_GK.debug_level & DEBUG_SYSDEP)
|
||||||
printf("Closing Winsock\n");
|
_tprintf(_T("Closing Winsock\n"));
|
||||||
WSACleanup();
|
WSACleanup();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -233,14 +270,13 @@ static void win32_read_proc_stat(void)
|
||||||
|
|
||||||
if (_GK.debug_level & DEBUG_SYSDEP)
|
if (_GK.debug_level & DEBUG_SYSDEP)
|
||||||
{
|
{
|
||||||
printf("Collecting PDH query data\n");
|
_tprintf(_T("Collecting PDH query data\n"));
|
||||||
}
|
}
|
||||||
|
|
||||||
status = PdhCollectQueryData(pdhQueryHandle);
|
status = PdhCollectQueryData(pdhQueryHandle);
|
||||||
if (status != ERROR_SUCCESS)
|
if (status != ERROR_SUCCESS)
|
||||||
{
|
{
|
||||||
printf("Collecting PDH query data failed with status %ld\n",
|
_tprintf(_T("Collecting PDH query data failed with status %lu\n"), status);
|
||||||
status);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -370,7 +406,7 @@ static gboolean ReadSharedData(void)
|
||||||
sens_data_read_tick = gkrellm_get_timer_ticks();
|
sens_data_read_tick = gkrellm_get_timer_ticks();
|
||||||
|
|
||||||
if (_GK.debug_level & DEBUG_SYSDEP)
|
if (_GK.debug_level & DEBUG_SYSDEP)
|
||||||
printf("Reading MBM or SpeedFan data\n");
|
_tprintf(_T("Reading MBM or SpeedFan data\n"));
|
||||||
|
|
||||||
// Try getting data from MBM
|
// Try getting data from MBM
|
||||||
sens_data_valid = ReadMBMSharedData();
|
sens_data_valid = ReadMBMSharedData();
|
||||||
|
@ -391,7 +427,7 @@ static gboolean ReadMBMSharedData(void)
|
||||||
int i, j;
|
int i, j;
|
||||||
int totalCount;
|
int totalCount;
|
||||||
|
|
||||||
hSData=OpenFileMapping(FILE_MAP_READ, FALSE, "$M$B$M$5$S$D$");
|
hSData=OpenFileMapping(FILE_MAP_READ, FALSE, _T("$M$B$M$5$S$D$"));
|
||||||
if (hSData == 0)
|
if (hSData == 0)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
|
@ -543,7 +579,7 @@ gboolean gkrellm_sys_sensors_init(void)
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
if (_GK.debug_level & DEBUG_SYSDEP)
|
if (_GK.debug_level & DEBUG_SYSDEP)
|
||||||
printf("Initializing sensors.\n");
|
_tprintf(_T("INIT sensors\n"));
|
||||||
|
|
||||||
//TODO: determine number of sensors at startup? This could cause
|
//TODO: determine number of sensors at startup? This could cause
|
||||||
// user confusion in case mbm/speedfan is started after gkrellm
|
// user confusion in case mbm/speedfan is started after gkrellm
|
||||||
|
@ -617,7 +653,7 @@ void gkrellm_sys_cpu_read_data(void)
|
||||||
status = PdhGetFormattedCounterValue(cpuUserCounter[i], PDH_FMT_LONG, &type, &value);
|
status = PdhGetFormattedCounterValue(cpuUserCounter[i], PDH_FMT_LONG, &type, &value);
|
||||||
if (status != ERROR_SUCCESS)
|
if (status != ERROR_SUCCESS)
|
||||||
{
|
{
|
||||||
printf("Getting PDH-counter (cpu user time) failed with status %ld\n", status);
|
_tprintf(_T("Getting PDH-counter (cpu user time) failed with status %lu\n"), status);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -628,7 +664,7 @@ void gkrellm_sys_cpu_read_data(void)
|
||||||
status = PdhGetFormattedCounterValue(cpuSysCounter[i], PDH_FMT_LONG, &type, &value);
|
status = PdhGetFormattedCounterValue(cpuSysCounter[i], PDH_FMT_LONG, &type, &value);
|
||||||
if (status != ERROR_SUCCESS)
|
if (status != ERROR_SUCCESS)
|
||||||
{
|
{
|
||||||
printf("Getting PDH-counter (cpu sys time) failed with status %ld\n", status);
|
_tprintf(_T("Getting PDH-counter (cpu sys time) failed with status %lu\n"), status);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -658,7 +694,7 @@ gboolean gkrellm_sys_cpu_init(void)
|
||||||
TCHAR buf2[10];
|
TCHAR buf2[10];
|
||||||
|
|
||||||
if (_GK.debug_level & DEBUG_SYSDEP)
|
if (_GK.debug_level & DEBUG_SYSDEP)
|
||||||
printf("Initializing CPU monitor.\n");
|
_tprintf(_T("INIT cpu monitoring\n"));
|
||||||
|
|
||||||
gkrellm_cpu_nice_time_unsupported();
|
gkrellm_cpu_nice_time_unsupported();
|
||||||
|
|
||||||
|
@ -678,21 +714,21 @@ gboolean gkrellm_sys_cpu_init(void)
|
||||||
_itot(i, buf2, 10);
|
_itot(i, buf2, 10);
|
||||||
_tcscat(buf, buf2);
|
_tcscat(buf, buf2);
|
||||||
_tcscat(buf, perfKeyList[CpuTime]);
|
_tcscat(buf, perfKeyList[CpuTime]);
|
||||||
|
|
||||||
status = PdhAddCounter(pdhQueryHandle, buf, 0, &cpuUserCounter[i]);
|
status = PdhAddCounter(pdhQueryHandle, buf, 0, &cpuUserCounter[i]);
|
||||||
|
if (status != ERROR_SUCCESS)
|
||||||
if (_GK.debug_level & DEBUG_SYSDEP)
|
_tprintf(_T("Failed adding cpu user-time pdh-counter for path '%s', status %ld\n"), buf, status);
|
||||||
printf("Initialized cpu %i user portion (%s) with error code %ld\n", i, buf, status);
|
else if (_GK.debug_level & DEBUG_SYSDEP)
|
||||||
|
_tprintf(_T("Added cpu user-time pdh-counter for path '%s'\n"), buf);
|
||||||
|
|
||||||
_tcscpy(buf, perfKeyList[CpuStart]);
|
_tcscpy(buf, perfKeyList[CpuStart]);
|
||||||
_itot(i, buf2, 10);
|
_itot(i, buf2, 10);
|
||||||
_tcscat(buf, buf2);
|
_tcscat(buf, buf2);
|
||||||
_tcscat(buf, perfKeyList[CpuSysTime]);
|
_tcscat(buf, perfKeyList[CpuSysTime]);
|
||||||
|
|
||||||
status = PdhAddCounter(pdhQueryHandle, buf, 0, &cpuSysCounter[i]);
|
status = PdhAddCounter(pdhQueryHandle, buf, 0, &cpuSysCounter[i]);
|
||||||
|
if (status != ERROR_SUCCESS)
|
||||||
if (_GK.debug_level & DEBUG_SYSDEP)
|
_tprintf(_T("Failed adding cpu sys-time pdh-counter for path '%s', status %ld\n"), buf, status);
|
||||||
printf("Initialized cpu %i system portion (%s) with error code %ld\n", i, buf, status);
|
else if (_GK.debug_level & DEBUG_SYSDEP)
|
||||||
|
_tprintf(_T("Added cpu sys-time pdh-counter for path '%s'\n"), buf);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -723,7 +759,7 @@ void gkrellm_sys_net_read_data(void)
|
||||||
status = PdhGetFormattedCounterValue(netRecCounter[i], PDH_FMT_LONG, &type, &value);
|
status = PdhGetFormattedCounterValue(netRecCounter[i], PDH_FMT_LONG, &type, &value);
|
||||||
if (status != ERROR_SUCCESS)
|
if (status != ERROR_SUCCESS)
|
||||||
{
|
{
|
||||||
printf("Getting PDH-counter (net recv counter) failed with status %ld\n", status);
|
_tprintf(_T("Getting pdh-counter (net recv counter) failed with status %lu\n"), status);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -734,7 +770,7 @@ void gkrellm_sys_net_read_data(void)
|
||||||
status = PdhGetFormattedCounterValue(netSendCounter[i], PDH_FMT_LONG, &type, &value);
|
status = PdhGetFormattedCounterValue(netSendCounter[i], PDH_FMT_LONG, &type, &value);
|
||||||
if (status != ERROR_SUCCESS)
|
if (status != ERROR_SUCCESS)
|
||||||
{
|
{
|
||||||
printf("Getting PDH-counter (net send counter) failed with status %ld\n", status);
|
_tprintf(_T("Getting pdh-counter (net send counter) failed with status %lu\n"), status);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -759,24 +795,17 @@ gboolean gkrellm_sys_net_isdn_online(void)
|
||||||
|
|
||||||
|
|
||||||
gboolean gkrellm_sys_net_init(void)
|
gboolean gkrellm_sys_net_init(void)
|
||||||
{
|
{
|
||||||
DWORD size = 0;
|
DWORD objectSize = 0;
|
||||||
DWORD isize = 0;
|
DWORD instanceSize = 0;
|
||||||
LPTSTR objects = NULL;
|
|
||||||
LPTSTR instances = NULL;
|
|
||||||
LPTSTR instance = NULL;
|
|
||||||
TCHAR buf[1024];
|
|
||||||
int strSize;
|
int strSize;
|
||||||
int i;
|
int i;
|
||||||
int adapter = -1;
|
int adapter = -1;
|
||||||
|
|
||||||
// turn off for now
|
|
||||||
// gkrellm_net_add_timer_type_ppp("ppp0");
|
|
||||||
// gkrellm_net_add_timer_type_ippp("ippp0");
|
|
||||||
|
|
||||||
numAdapters = 0;
|
numAdapters = 0;
|
||||||
|
|
||||||
if (_GK.debug_level & DEBUG_SYSDEP)
|
if (_GK.debug_level & DEBUG_SYSDEP)
|
||||||
printf("Initializing network monitor.\n");
|
_tprintf(_T("INIT network monitoring\n"));
|
||||||
|
|
||||||
if (pdhQueryHandle != 0)
|
if (pdhQueryHandle != 0)
|
||||||
{
|
{
|
||||||
|
@ -786,27 +815,29 @@ gboolean gkrellm_sys_net_init(void)
|
||||||
|
|
||||||
stat = PdhLookupPerfNameByIndex(NULL, 510, pdhIface, &pdhIfaceSz);
|
stat = PdhLookupPerfNameByIndex(NULL, 510, pdhIface, &pdhIfaceSz);
|
||||||
if (stat != ERROR_SUCCESS) // fall back to non-translated pdh string
|
if (stat != ERROR_SUCCESS) // fall back to non-translated pdh string
|
||||||
_tcscpy(pdhIface, TEXT("Network Interface"));
|
_tcscpy(pdhIface, _T("Network Interface"));
|
||||||
|
|
||||||
PdhEnumObjectItems(NULL, NULL, pdhIface, NULL, &size, NULL, &isize, PERF_DETAIL_WIZARD, 0);
|
stat = PdhEnumObjectItems(NULL, NULL, pdhIface, NULL, &objectSize, NULL,
|
||||||
if (_GK.debug_level & DEBUG_SYSDEP)
|
&instanceSize, PERF_DETAIL_WIZARD, 0);
|
||||||
|
if (stat != PDH_MORE_DATA && stat != ERROR_SUCCESS)
|
||||||
{
|
{
|
||||||
printf("Found %ld network objects and %ld network instances.\n", size, isize);
|
_tprintf(_T("Could not enumerate net pdh-counters for path '%s', error %lu\n"), pdhIface, stat);
|
||||||
}
|
}
|
||||||
|
else if (instanceSize > 0)
|
||||||
if (size > 0)
|
|
||||||
{
|
{
|
||||||
++isize;
|
TCHAR buf[1024];
|
||||||
++size;
|
LPTSTR objects = NULL;
|
||||||
|
LPTSTR instances = NULL;
|
||||||
|
LPTSTR instance = NULL;
|
||||||
|
|
||||||
objects = (LPTSTR) malloc(sizeof(TCHAR) * size);
|
++instanceSize;
|
||||||
instances = (LPTSTR) malloc(sizeof(TCHAR) * isize);
|
++objectSize;
|
||||||
|
|
||||||
PdhEnumObjectItems(NULL, NULL, pdhIface, objects, &size, instances, &isize, PERF_DETAIL_WIZARD, 0);
|
objects = (LPTSTR) malloc(sizeof(TCHAR) * objectSize);
|
||||||
if (_GK.debug_level & DEBUG_SYSDEP)
|
instances = (LPTSTR) malloc(sizeof(TCHAR) * instanceSize);
|
||||||
{
|
|
||||||
printf("Enumerated %ld network objects and %ld network instances.\n", size, isize);
|
PdhEnumObjectItems(NULL, NULL, pdhIface, objects, &objectSize,
|
||||||
}
|
instances, &instanceSize, PERF_DETAIL_WIZARD, 0);
|
||||||
|
|
||||||
for (instance = instances; *instance != 0; instance += lstrlen(instance) + 1)
|
for (instance = instances; *instance != 0; instance += lstrlen(instance) + 1)
|
||||||
{
|
{
|
||||||
|
@ -814,7 +845,7 @@ gboolean gkrellm_sys_net_init(void)
|
||||||
if (adapter >= MAX_NET_ADAPTERS)
|
if (adapter >= MAX_NET_ADAPTERS)
|
||||||
{
|
{
|
||||||
if (_GK.debug_level & DEBUG_SYSDEP)
|
if (_GK.debug_level & DEBUG_SYSDEP)
|
||||||
printf("Hit maximum number of network adapters.\n");
|
_tprintf(_T("Hit maximum number of network adapters.\n"));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -833,37 +864,40 @@ gboolean gkrellm_sys_net_init(void)
|
||||||
}
|
}
|
||||||
|
|
||||||
netName[adapter][strSize] = _T('\0');
|
netName[adapter][strSize] = _T('\0');
|
||||||
|
/* TODO: determine network type */
|
||||||
gkrellm_net_add_timer_type_ppp(netName[adapter]);
|
gkrellm_net_add_timer_type_ppp(netName[adapter]);
|
||||||
|
|
||||||
_tcscpy(buf, perfKeyList[NetDevStart]);
|
_tcscpy(buf, perfKeyList[NetDevStart]);
|
||||||
_tcscat(buf, instance);
|
_tcscat(buf, instance);
|
||||||
_tcscat(buf, perfKeyList[NetDevRecv]);
|
_tcscat(buf, perfKeyList[NetDevRecv]);
|
||||||
rx[adapter] = 0;
|
|
||||||
status = PdhAddCounter(pdhQueryHandle, buf, 0, &(netRecCounter[adapter]));
|
status = PdhAddCounter(pdhQueryHandle, buf, 0, &(netRecCounter[adapter]));
|
||||||
if (_GK.debug_level & DEBUG_SYSDEP)
|
if (status != ERROR_SUCCESS)
|
||||||
printf("Added network receive for '%s' interface with status %ld.\n", buf, status);
|
_tprintf(_T("Failed adding net recv pdh-counter for path '%s', status %ld\n"), buf, status);
|
||||||
|
else if (_GK.debug_level & DEBUG_SYSDEP)
|
||||||
|
_tprintf(_T("Added net recv pdh-counter for path '%s'\n"), buf);
|
||||||
|
rx[adapter] = 0;
|
||||||
|
|
||||||
_tcscpy(buf, perfKeyList[NetDevStart]);
|
_tcscpy(buf, perfKeyList[NetDevStart]);
|
||||||
_tcscat(buf, instance);
|
_tcscat(buf, instance);
|
||||||
_tcscat(buf, perfKeyList[NetDevSend]);
|
_tcscat(buf, perfKeyList[NetDevSend]);
|
||||||
status = PdhAddCounter(pdhQueryHandle, buf, 0, &(netSendCounter[adapter]));
|
status = PdhAddCounter(pdhQueryHandle, buf, 0, &(netSendCounter[adapter]));
|
||||||
|
if (status != ERROR_SUCCESS)
|
||||||
|
_tprintf(_T("Failed adding net send pdh-counter for path '%s', status %ld\n"), buf, status);
|
||||||
|
else if (_GK.debug_level & DEBUG_SYSDEP)
|
||||||
|
_tprintf(_T("Added net send pdh-counter for path '%s'\n"), buf);
|
||||||
tx[adapter] = 0;
|
tx[adapter] = 0;
|
||||||
if (_GK.debug_level & DEBUG_SYSDEP)
|
|
||||||
printf("Added network transmit for '%s' interface with status %ld.\n", buf, status);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Final number of network adapters */
|
||||||
numAdapters = adapter + 1;
|
numAdapters = adapter + 1;
|
||||||
}
|
|
||||||
|
|
||||||
if (objects != NULL)
|
|
||||||
free(objects);
|
free(objects);
|
||||||
if (instances != NULL)
|
|
||||||
free(instances);
|
free(instances);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (_GK.debug_level & DEBUG_SYSDEP)
|
if (_GK.debug_level & DEBUG_SYSDEP)
|
||||||
printf("Found %i interfaces for monitoring.\n", numAdapters);
|
_tprintf(_T("Found %i interfaces for monitoring.\n"), numAdapters);
|
||||||
|
|
||||||
return (numAdapters == 0 ? FALSE : TRUE);
|
return (numAdapters == 0 ? FALSE : TRUE);
|
||||||
}
|
}
|
||||||
|
@ -882,7 +916,7 @@ gchar * gkrellm_sys_disk_name_from_device(gint device_number, gint unit_number,
|
||||||
static gchar name[32];
|
static gchar name[32];
|
||||||
|
|
||||||
//TODO: i18n?
|
//TODO: i18n?
|
||||||
sprintf(name, "Disk%s", diskName[device_number]);
|
snprintf(name, sizeof(name), "Disk%s", diskName[device_number]);
|
||||||
*order = device_number;
|
*order = device_number;
|
||||||
return name;
|
return name;
|
||||||
}
|
}
|
||||||
|
@ -913,7 +947,7 @@ void gkrellm_sys_disk_read_data(void)
|
||||||
status = PdhGetFormattedCounterValue(diskReadCounter[i], PDH_FMT_DOUBLE, &type, &value);
|
status = PdhGetFormattedCounterValue(diskReadCounter[i], PDH_FMT_DOUBLE, &type, &value);
|
||||||
if (status != ERROR_SUCCESS)
|
if (status != ERROR_SUCCESS)
|
||||||
{
|
{
|
||||||
printf("Getting PDH-counter (disk read cnt) failed with status %ld\n", status);
|
_tprintf(_T("Getting PDH-counter (disk read cnt) failed with status %lu\n"), status);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
readInt = value.doubleValue / _GK.update_HZ;
|
readInt = value.doubleValue / _GK.update_HZ;
|
||||||
|
@ -921,7 +955,7 @@ void gkrellm_sys_disk_read_data(void)
|
||||||
status = PdhGetFormattedCounterValue(diskWriteCounter[i], PDH_FMT_DOUBLE, &type, &value);
|
status = PdhGetFormattedCounterValue(diskWriteCounter[i], PDH_FMT_DOUBLE, &type, &value);
|
||||||
if (status != ERROR_SUCCESS)
|
if (status != ERROR_SUCCESS)
|
||||||
{
|
{
|
||||||
printf("Getting PDH-counter (disk write cnt) failed with status %ld\n", status);
|
_tprintf(_T("Getting PDH-counter (disk write cnt) failed with status %lu\n"), status);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
writeInt = value.doubleValue / _GK.update_HZ;
|
writeInt = value.doubleValue / _GK.update_HZ;
|
||||||
|
@ -945,12 +979,12 @@ gboolean gkrellm_sys_disk_init(void)
|
||||||
TCHAR buf[1024];
|
TCHAR buf[1024];
|
||||||
int strSize;
|
int strSize;
|
||||||
int i;
|
int i;
|
||||||
int disk = -1;
|
int diskIndex = -1;
|
||||||
|
|
||||||
numDisks = 0;
|
numDisks = 0;
|
||||||
|
|
||||||
if (_GK.debug_level & DEBUG_SYSDEP)
|
if (_GK.debug_level & DEBUG_SYSDEP)
|
||||||
printf("Initializing disk monitor.\n");
|
_tprintf(_T("INIT disk monitoring\n"));
|
||||||
|
|
||||||
if (pdhQueryHandle != 0)
|
if (pdhQueryHandle != 0)
|
||||||
{
|
{
|
||||||
|
@ -959,12 +993,16 @@ gboolean gkrellm_sys_disk_init(void)
|
||||||
PDH_STATUS stat;
|
PDH_STATUS stat;
|
||||||
|
|
||||||
stat = PdhLookupPerfNameByIndex(NULL, 234, pdhDisk, &pdhDiskSz);
|
stat = PdhLookupPerfNameByIndex(NULL, 234, pdhDisk, &pdhDiskSz);
|
||||||
if (stat != ERROR_SUCCESS) // fall back to non-translated pdh string
|
if (stat != ERROR_SUCCESS) // Fall back to non-translated pdh string
|
||||||
_tcscpy(pdhDisk, TEXT("PhysicalDisk"));
|
_tcscpy(pdhDisk, TEXT("PhysicalDisk"));
|
||||||
|
|
||||||
// get number of disks that can be queried
|
// Get number of disks that can be queried
|
||||||
PdhEnumObjectItems(NULL, NULL, pdhDisk, NULL, &size, NULL, &isize, PERF_DETAIL_WIZARD, 0);
|
stat = PdhEnumObjectItems(NULL, NULL, pdhDisk, NULL, &size, NULL, &isize, PERF_DETAIL_WIZARD, 0);
|
||||||
if (size > 0)
|
if (stat != PDH_MORE_DATA && stat != ERROR_SUCCESS)
|
||||||
|
{
|
||||||
|
_tprintf(_T("Could not enumerate disk pdh-counters for path '%s', error %lu\n"), pdhDisk, stat);
|
||||||
|
}
|
||||||
|
else if (size > 0)
|
||||||
{
|
{
|
||||||
LPTSTR objects = NULL;
|
LPTSTR objects = NULL;
|
||||||
LPTSTR instances = NULL;
|
LPTSTR instances = NULL;
|
||||||
|
@ -978,11 +1016,14 @@ gboolean gkrellm_sys_disk_init(void)
|
||||||
|
|
||||||
// get information about disks
|
// get information about disks
|
||||||
PdhEnumObjectItems(NULL, NULL, pdhDisk, objects, &size, instances, &isize, PERF_DETAIL_WIZARD, 0);
|
PdhEnumObjectItems(NULL, NULL, pdhDisk, objects, &size, instances, &isize, PERF_DETAIL_WIZARD, 0);
|
||||||
|
|
||||||
for (instance = instances; *instance != 0; instance += lstrlen(instance) + 1)
|
for (instance = instances; *instance != 0; instance += lstrlen(instance) + 1)
|
||||||
{
|
{
|
||||||
++disk;
|
// Ignore total counter, gkrellm provides that functionality
|
||||||
if (disk >= MAX_DISKS)
|
if (_strnicmp(_T("_Total"), instance, 6) == 0)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
++diskIndex;
|
||||||
|
if (diskIndex >= MAX_DISKS)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
strSize = min(_tcsclen(instance), MAX_DISK_NAME);
|
strSize = min(_tcsclen(instance), MAX_DISK_NAME);
|
||||||
|
@ -990,44 +1031,46 @@ gboolean gkrellm_sys_disk_init(void)
|
||||||
for (i = 0; i < strSize; i++)
|
for (i = 0; i < strSize; i++)
|
||||||
{
|
{
|
||||||
if (instance[i] == _T(' '))
|
if (instance[i] == _T(' '))
|
||||||
diskName[disk][i] = _T('_');
|
diskName[diskIndex][i] = _T('_');
|
||||||
else
|
else
|
||||||
diskName[disk][i] = instance[i];
|
diskName[diskIndex][i] = instance[i];
|
||||||
}
|
}
|
||||||
diskName[disk][strSize] = _T('\0');
|
diskName[diskIndex][strSize] = _T('\0');
|
||||||
|
|
||||||
// assemble object name to pdhQueryHandle
|
// assemble object name to pdhQueryHandle
|
||||||
_tcscpy(buf, perfKeyList[DiskStart]);
|
_tcscpy(buf, perfKeyList[DiskStart]);
|
||||||
_tcscat(buf, instance);
|
_tcscat(buf, instance);
|
||||||
_tcscat(buf, perfKeyList[DiskRead]);
|
_tcscat(buf, perfKeyList[DiskRead]);
|
||||||
status = PdhAddCounter(pdhQueryHandle, buf, 0, &(diskReadCounter[disk]));
|
status = PdhAddCounter(pdhQueryHandle, buf, 0, &(diskReadCounter[diskIndex]));
|
||||||
diskread[disk] = 0;
|
if (status != ERROR_SUCCESS)
|
||||||
if (_GK.debug_level & DEBUG_SYSDEP)
|
_tprintf(_T("Failed adding disk read pdh-counter for path '%s', status %ld\n"), buf, status);
|
||||||
printf("Adding disk %s for read monitoring with status code %ld\n", buf, status);
|
else if (_GK.debug_level & DEBUG_SYSDEP)
|
||||||
|
_tprintf(_T("Added disk read pdh-counter for path '%s'\n"), buf);
|
||||||
|
diskread[diskIndex] = 0;
|
||||||
|
|
||||||
_tcscpy(buf, perfKeyList[DiskStart]);
|
_tcscpy(buf, perfKeyList[DiskStart]);
|
||||||
_tcscat(buf, instance);
|
_tcscat(buf, instance);
|
||||||
_tcscat(buf, perfKeyList[DiskWrite]);
|
_tcscat(buf, perfKeyList[DiskWrite]);
|
||||||
status = PdhAddCounter(pdhQueryHandle, buf, 0, &(diskWriteCounter[disk]));
|
status = PdhAddCounter(pdhQueryHandle, buf, 0, &(diskWriteCounter[diskIndex]));
|
||||||
diskwrite[disk] = 0;
|
if (status != ERROR_SUCCESS)
|
||||||
if (_GK.debug_level & DEBUG_SYSDEP)
|
_tprintf(_T("Failed adding disk write pdh-counter for path '%s', status %ld\n"), buf, status);
|
||||||
printf("Adding disk %s for write monitoring with status code %ld\n", buf, status);
|
else if (_GK.debug_level & DEBUG_SYSDEP)
|
||||||
|
_tprintf(_T("Added disk write pdh-counter for path '%s'\n"), buf);
|
||||||
|
diskwrite[diskIndex] = 0;
|
||||||
}
|
}
|
||||||
|
numDisks = diskIndex + 1;
|
||||||
|
|
||||||
numDisks = disk + 1;
|
|
||||||
|
|
||||||
if (objects != NULL)
|
|
||||||
free(objects);
|
free(objects);
|
||||||
if (instances != NULL)
|
|
||||||
free(instances);
|
free(instances);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (_GK.debug_level & DEBUG_SYSDEP)
|
if (_GK.debug_level & DEBUG_SYSDEP)
|
||||||
printf("Found %i disks for monitoring.\n", numDisks);
|
_tprintf(_T("Found %i disks for monitoring\n"), numDisks);
|
||||||
|
|
||||||
return (numDisks == 0 ? FALSE : TRUE);
|
return (numDisks == 0 ? FALSE : TRUE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* ===================================================================== */
|
/* ===================================================================== */
|
||||||
/* Proc monitor interface */
|
/* Proc monitor interface */
|
||||||
|
@ -1053,7 +1096,7 @@ void gkrellm_sys_proc_read_data(void)
|
||||||
status = PdhGetFormattedCounterValue(processCounter, PDH_FMT_LONG, &type, &value);
|
status = PdhGetFormattedCounterValue(processCounter, PDH_FMT_LONG, &type, &value);
|
||||||
if (status != ERROR_SUCCESS)
|
if (status != ERROR_SUCCESS)
|
||||||
{
|
{
|
||||||
printf("Getting PDH-counter (process cnt) failed with status %ld\n", status);
|
_tprintf(_T("Getting PDH-counter (process cnt) failed with status %ld\n"), status);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
n_processes = value.longValue;
|
n_processes = value.longValue;
|
||||||
|
@ -1061,7 +1104,7 @@ void gkrellm_sys_proc_read_data(void)
|
||||||
status = PdhGetFormattedCounterValue(threadCounter, PDH_FMT_LONG, &type, &value);
|
status = PdhGetFormattedCounterValue(threadCounter, PDH_FMT_LONG, &type, &value);
|
||||||
if (status != ERROR_SUCCESS)
|
if (status != ERROR_SUCCESS)
|
||||||
{
|
{
|
||||||
printf("Getting PDH-counter (thread cnt) failed with status %ld\n", status);
|
_tprintf(_T("Getting PDH-counter (thread cnt) failed with status %ld\n"), status);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
n_forks = value.longValue;
|
n_forks = value.longValue;
|
||||||
|
@ -1103,7 +1146,7 @@ void gkrellm_sys_proc_read_users(void)
|
||||||
NET_API_STATUS nerr;
|
NET_API_STATUS nerr;
|
||||||
|
|
||||||
if (_GK.debug_level & DEBUG_SYSDEP)
|
if (_GK.debug_level & DEBUG_SYSDEP)
|
||||||
printf("Getting number of logged in users.\n");
|
_tprintf(_T("Getting number of logged in users.\n"));
|
||||||
|
|
||||||
nerr = NetWkstaUserEnum(NULL, 0, &ptr, MAX_PREFERRED_LENGTH, &entriesRead,
|
nerr = NetWkstaUserEnum(NULL, 0, &ptr, MAX_PREFERRED_LENGTH, &entriesRead,
|
||||||
&totalEntries, NULL);
|
&totalEntries, NULL);
|
||||||
|
@ -1119,18 +1162,22 @@ void gkrellm_sys_proc_read_users(void)
|
||||||
gboolean gkrellm_sys_proc_init(void)
|
gboolean gkrellm_sys_proc_init(void)
|
||||||
{
|
{
|
||||||
if (_GK.debug_level & DEBUG_SYSDEP)
|
if (_GK.debug_level & DEBUG_SYSDEP)
|
||||||
printf("Initializing process monitor.\n");
|
_tprintf(_T("INIT process monitoring\n"));
|
||||||
|
|
||||||
if (pdhQueryHandle == 0)
|
if (pdhQueryHandle == 0)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
if (_GK.debug_level & DEBUG_SYSDEP)
|
|
||||||
printf("Adding '%s' as process monitor.\n", perfKeyList[NumProcesses]);
|
|
||||||
status = PdhAddCounter(pdhQueryHandle, perfKeyList[NumProcesses], 0, &processCounter);
|
status = PdhAddCounter(pdhQueryHandle, perfKeyList[NumProcesses], 0, &processCounter);
|
||||||
|
if (status != ERROR_SUCCESS)
|
||||||
|
_tprintf(_T("Failed adding process pdh-counter for path '%s', status %ld\n"), perfKeyList[NumProcesses], status);
|
||||||
|
else if (_GK.debug_level & DEBUG_SYSDEP)
|
||||||
|
_tprintf(_T("Added process pdh-counter for path '%s'\n"), perfKeyList[NumProcesses]);
|
||||||
|
|
||||||
if (_GK.debug_level & DEBUG_SYSDEP)
|
|
||||||
printf("Adding '%s' as thread monitor.\n", perfKeyList[NumThreads]);
|
|
||||||
status = PdhAddCounter(pdhQueryHandle, perfKeyList[NumThreads], 0, &threadCounter);
|
status = PdhAddCounter(pdhQueryHandle, perfKeyList[NumThreads], 0, &threadCounter);
|
||||||
|
if (status != ERROR_SUCCESS)
|
||||||
|
_tprintf(_T("Failed adding thread pdh-counter for path '%s', status %ld\n"), perfKeyList[NumThreads], status);
|
||||||
|
else if (_GK.debug_level & DEBUG_SYSDEP)
|
||||||
|
_tprintf(_T("Added thread pdh-counter for path '%s'\n"), perfKeyList[NumThreads]);
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
@ -1228,7 +1275,7 @@ void gkrellm_sys_swap_read_data(void)
|
||||||
gboolean gkrellm_sys_mem_init(void)
|
gboolean gkrellm_sys_mem_init(void)
|
||||||
{
|
{
|
||||||
if (_GK.debug_level & DEBUG_SYSDEP)
|
if (_GK.debug_level & DEBUG_SYSDEP)
|
||||||
printf("Initialized Memory monitor.\n");
|
_tprintf(_T("INIT memory monitoring\n"));
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1273,7 +1320,7 @@ void gkrellm_sys_battery_read_data(void)
|
||||||
gboolean gkrellm_sys_battery_init()
|
gboolean gkrellm_sys_battery_init()
|
||||||
{
|
{
|
||||||
if (_GK.debug_level & DEBUG_SYSDEP)
|
if (_GK.debug_level & DEBUG_SYSDEP)
|
||||||
printf("Initialized Battery monitor.\n");
|
_tprintf(_T("INIT battery monitoring\n"));
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1283,22 +1330,28 @@ gboolean gkrellm_sys_battery_init()
|
||||||
/* ===================================================================== */
|
/* ===================================================================== */
|
||||||
|
|
||||||
gboolean gkrellm_sys_fs_fstab_modified(void)
|
gboolean gkrellm_sys_fs_fstab_modified(void)
|
||||||
{
|
{
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void eject_win32_cdrom(gchar *device)
|
void eject_win32_cdrom(gchar *device)
|
||||||
{
|
{
|
||||||
HANDLE hFile;
|
HANDLE hFile;
|
||||||
BOOL err;
|
BOOL err;
|
||||||
char buf[25];
|
TCHAR devPath[MAX_PATH];
|
||||||
DWORD numBytes;
|
DWORD numBytes;
|
||||||
|
|
||||||
if (!device || strlen(device) == 0)
|
if (!device || device[0] == 0)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
sprintf(buf, "\\\\.\\%c:", device[0]);
|
/* FIXME: This assumes device names like "D:" */
|
||||||
hFile = CreateFile(buf, GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE, 0, OPEN_EXISTING, 0, NULL);
|
_sntprintf(devPath, ARRAYSIZE(devPath), _T("\\\\.\\%c:"), device[0]);
|
||||||
|
devPath[ARRAYSIZE(devPath) - 1] = 0;
|
||||||
|
|
||||||
|
hFile = CreateFile(devPath, GENERIC_READ,
|
||||||
|
FILE_SHARE_READ | FILE_SHARE_WRITE, 0, OPEN_EXISTING, 0,
|
||||||
|
NULL);
|
||||||
if (hFile != 0 && hFile != INVALID_HANDLE_VALUE)
|
if (hFile != 0 && hFile != INVALID_HANDLE_VALUE)
|
||||||
{
|
{
|
||||||
// this should be safe for non-removable drives
|
// this should be safe for non-removable drives
|
||||||
|
@ -1317,7 +1370,7 @@ void eject_win32_cdrom(gchar *device)
|
||||||
gboolean gkrellm_sys_fs_init(void)
|
gboolean gkrellm_sys_fs_init(void)
|
||||||
{
|
{
|
||||||
if (_GK.debug_level & DEBUG_SYSDEP)
|
if (_GK.debug_level & DEBUG_SYSDEP)
|
||||||
printf("Initializing file system monitor.\n");
|
_tprintf(_T("INIT filesystem monitoring\n"));
|
||||||
gkrellm_fs_mounting_unsupported();
|
gkrellm_fs_mounting_unsupported();
|
||||||
gkrellm_fs_setup_eject(NULL, NULL, eject_win32_cdrom, NULL);
|
gkrellm_fs_setup_eject(NULL, NULL, eject_win32_cdrom, NULL);
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
@ -1328,7 +1381,7 @@ void gkrellm_sys_fs_get_fsusage(gpointer fs, gchar *dir)
|
||||||
{
|
{
|
||||||
BOOL err = 0;
|
BOOL err = 0;
|
||||||
|
|
||||||
if (!dir || strlen(dir) <= 0)
|
if (!dir || dir[0] == 0)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
ULARGE_INTEGER freeAvailableToCaller;
|
ULARGE_INTEGER freeAvailableToCaller;
|
||||||
|
@ -1336,7 +1389,8 @@ void gkrellm_sys_fs_get_fsusage(gpointer fs, gchar *dir)
|
||||||
ULARGE_INTEGER freeBytes;
|
ULARGE_INTEGER freeBytes;
|
||||||
gulong total, freeCaller, free;
|
gulong total, freeCaller, free;
|
||||||
|
|
||||||
err = GetDiskFreeSpaceEx(dir, &freeAvailableToCaller, &totalBytes, &freeBytes);
|
/* TODO: Unicode support? */
|
||||||
|
err = GetDiskFreeSpaceExA(dir, &freeAvailableToCaller, &totalBytes, &freeBytes);
|
||||||
if (err != 0)
|
if (err != 0)
|
||||||
{
|
{
|
||||||
total = EnlargedUnsignedDivide(totalBytes, 1024, 0);
|
total = EnlargedUnsignedDivide(totalBytes, 1024, 0);
|
||||||
|
@ -1347,46 +1401,62 @@ void gkrellm_sys_fs_get_fsusage(gpointer fs, gchar *dir)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// may happen on cd/dvd drives, ignore for now
|
/* TODO: This may happen on cd/dvd drives, ignore for now */
|
||||||
//printf("GetDiskFreeSpaceEx() failed on drive %c:, error %d\n", *dir, err);
|
/*
|
||||||
|
_tprintf(_T("GetDiskFreeSpaceEx() failed on drive %c:, error %d\n"),
|
||||||
|
*dir, err);
|
||||||
|
*/
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void gkrellm_sys_fs_get_mounts_list(void)
|
void gkrellm_sys_fs_get_mounts_list(void)
|
||||||
{
|
{
|
||||||
char buf[1024];
|
char driveStrings[512];
|
||||||
char* drive;
|
char *drive;
|
||||||
GetLogicalDriveStrings(1024, buf);
|
DWORD ret;
|
||||||
for (drive = buf; *drive != 0; drive += lstrlen(drive) + 1)
|
/* TODO: Unicode support? */
|
||||||
|
ret = GetLogicalDriveStringsA(ARRAYSIZE(driveStrings) - 1, driveStrings);
|
||||||
|
if (ret > 0)
|
||||||
{
|
{
|
||||||
if (strcmp("A:\\", drive) != 0 && strcmp("a:\\", drive) != 0 &&
|
for (drive = driveStrings; *drive != 0; drive += lstrlenA(drive) + 1)
|
||||||
strcmp("B:\\", drive) != 0 && strcmp("b:\\", drive) != 0
|
{
|
||||||
|
if (_strnicmp("A:\\", drive, 3) != 0
|
||||||
|
&& _strnicmp("B:\\", drive, 3) != 0
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
|
if (_GK.debug_level & DEBUG_SYSDEP)
|
||||||
|
printf(("Found mounted drive '%s'\n"), drive);
|
||||||
gkrellm_fs_add_to_mounts_list(drive, drive, "");
|
gkrellm_fs_add_to_mounts_list(drive, drive, "");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void gkrellm_sys_fs_get_fstab_list(void)
|
void gkrellm_sys_fs_get_fstab_list(void)
|
||||||
{
|
{
|
||||||
char buf[1024];
|
char driveStrings[512];
|
||||||
char* drive;
|
char *drive;
|
||||||
GetLogicalDriveStrings(1024, buf);
|
DWORD ret;
|
||||||
for (drive = buf; *drive != 0; drive += lstrlen(drive) + 1)
|
/* TODO: Unicode support? */
|
||||||
|
ret = GetLogicalDriveStringsA(ARRAYSIZE(driveStrings) - 1, driveStrings);
|
||||||
|
if (ret > 0)
|
||||||
{
|
{
|
||||||
if (strcmp("A:\\", drive) != 0 && strcmp("a:\\", drive) != 0 &&
|
for (drive = driveStrings; *drive != 0; drive += lstrlenA(drive) + 1)
|
||||||
strcmp("B:\\", drive) != 0 && strcmp("b:\\", drive) != 0
|
{
|
||||||
|
if (_strnicmp("A:\\", drive, 3) != 0
|
||||||
|
&& _strnicmp("B:\\", drive, 3) != 0
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
if (_GK.debug_level & DEBUG_SYSDEP)
|
if (_GK.debug_level & DEBUG_SYSDEP)
|
||||||
printf("Adding fstab %s\n", drive);
|
printf(("Found fstab drive '%s'\n"), drive);
|
||||||
gkrellm_fs_add_to_fstab_list(drive, drive, "", "");
|
gkrellm_fs_add_to_fstab_list(drive, drive, "", "");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* ===================================================================== */
|
/* ===================================================================== */
|
||||||
/* INET monitor interfaces */
|
/* INET monitor interfaces */
|
||||||
|
@ -1394,6 +1464,8 @@ void gkrellm_sys_fs_get_fstab_list(void)
|
||||||
|
|
||||||
gboolean gkrellm_sys_inet_init(void)
|
gboolean gkrellm_sys_inet_init(void)
|
||||||
{
|
{
|
||||||
|
if (_GK.debug_level & DEBUG_SYSDEP)
|
||||||
|
_tprintf(_T("INIT inet port monitoring\n"));
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1454,7 +1526,7 @@ time_t gkrellm_sys_uptime_read_uptime(void)
|
||||||
status = PdhGetFormattedCounterValue(uptimeCounter, PDH_FMT_LONG, &type, &value);
|
status = PdhGetFormattedCounterValue(uptimeCounter, PDH_FMT_LONG, &type, &value);
|
||||||
if (status != ERROR_SUCCESS)
|
if (status != ERROR_SUCCESS)
|
||||||
{
|
{
|
||||||
printf("Getting PDH-counter (uptime) failed with status %ld\n", status);
|
_tprintf(_T("Getting uptime pdh-counter failed, status %ld\n"), status);
|
||||||
return (time_t)0;
|
return (time_t)0;
|
||||||
}
|
}
|
||||||
l = value.longValue;
|
l = value.longValue;
|
||||||
|
@ -1467,19 +1539,18 @@ time_t gkrellm_sys_uptime_read_uptime(void)
|
||||||
gboolean gkrellm_sys_uptime_init(void)
|
gboolean gkrellm_sys_uptime_init(void)
|
||||||
{
|
{
|
||||||
if (_GK.debug_level & DEBUG_SYSDEP)
|
if (_GK.debug_level & DEBUG_SYSDEP)
|
||||||
printf("Initializing uptime monitor.\n");
|
_tprintf(_T("INIT uptime monitoring\n"));
|
||||||
|
|
||||||
if (pdhQueryHandle == 0)
|
if (pdhQueryHandle == 0)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
status = PdhAddCounter(pdhQueryHandle, perfKeyList[Uptime], 0, &uptimeCounter);
|
status = PdhAddCounter(pdhQueryHandle, perfKeyList[Uptime], 0, &uptimeCounter);
|
||||||
if (status != ERROR_SUCCESS)
|
if (status != ERROR_SUCCESS)
|
||||||
{
|
_tprintf(_T("Failed adding uptime pdh-counter for path '%s', status %ld\n"), perfKeyList[Uptime], status);
|
||||||
printf("Adding PDH-counter (uptime) failed with status %ld\n", status);
|
else if (_GK.debug_level & DEBUG_SYSDEP)
|
||||||
return FALSE;
|
_tprintf(_T("Added uptime pdh-counter for path '%s'\n"), perfKeyList[Uptime]);
|
||||||
}
|
|
||||||
|
|
||||||
return TRUE;
|
return (status == ERROR_SUCCESS ? TRUE : FALSE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -1497,10 +1568,11 @@ gchar *gkrellm_sys_get_host_name(void)
|
||||||
int err;
|
int err;
|
||||||
|
|
||||||
if (_GK.debug_level & DEBUG_SYSDEP)
|
if (_GK.debug_level & DEBUG_SYSDEP)
|
||||||
printf("Retrieving host name.\n");
|
_tprintf(_T("Retrieving host name.\n"));
|
||||||
|
|
||||||
err = gethostname(buf, sizeof(buf));
|
err = gethostname(buf, sizeof(buf));
|
||||||
|
|
||||||
|
/* TODO: i18n */
|
||||||
if (err != 0)
|
if (err != 0)
|
||||||
hostname = g_strdup("Unknown");
|
hostname = g_strdup("Unknown");
|
||||||
else
|
else
|
||||||
|
@ -1517,17 +1589,15 @@ gchar *gkrellm_sys_get_host_name(void)
|
||||||
/* ===================================================================== */
|
/* ===================================================================== */
|
||||||
|
|
||||||
gchar *gkrellm_sys_get_system_name(void)
|
gchar *gkrellm_sys_get_system_name(void)
|
||||||
{
|
{
|
||||||
static gboolean have_it = FALSE;
|
static gboolean system_name_fetched = FALSE;
|
||||||
char osName[64];
|
char osName[64];
|
||||||
|
|
||||||
if (!have_it)
|
if (!system_name_fetched)
|
||||||
{
|
{
|
||||||
if (_GK.debug_level & DEBUG_SYSDEP)
|
if (_GK.debug_level & DEBUG_SYSDEP)
|
||||||
printf("Retrieving system name.\n");
|
_tprintf(_T("Retrieving system name.\n"));
|
||||||
|
|
||||||
strcpy(osName, "Unknown");
|
strcpy(osName, "Unknown");
|
||||||
|
|
||||||
if (info.dwPlatformId == VER_PLATFORM_WIN32_WINDOWS)
|
if (info.dwPlatformId == VER_PLATFORM_WIN32_WINDOWS)
|
||||||
{
|
{
|
||||||
if (info.dwMinorVersion == 0)
|
if (info.dwMinorVersion == 0)
|
||||||
|
@ -1557,13 +1627,11 @@ gchar *gkrellm_sys_get_system_name(void)
|
||||||
strcpy(osName, "Windows XP");
|
strcpy(osName, "Windows XP");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
sname = g_strdup(osName);
|
sname = g_strdup(osName);
|
||||||
have_it = TRUE;
|
system_name_fetched = TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
return sname;
|
return sname;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* ===================================================================== */
|
/* ===================================================================== */
|
||||||
|
@ -1586,8 +1654,9 @@ gboolean gkrellm_sys_sensors_mbmon_supported(void)
|
||||||
/* ===================================================================== */
|
/* ===================================================================== */
|
||||||
|
|
||||||
|
|
||||||
static void initPerfKeyList(void)
|
static void
|
||||||
{
|
initPerfKeyList(void)
|
||||||
|
{
|
||||||
int i;
|
int i;
|
||||||
for (i = 0; i < PerfKeysSize; i++)
|
for (i = 0; i < PerfKeysSize; i++)
|
||||||
{
|
{
|
||||||
|
@ -1610,10 +1679,11 @@ static void initPerfKeyList(void)
|
||||||
placePerfKeyFromReg(DiskStart , 234, _T("\\") , _T("("));
|
placePerfKeyFromReg(DiskStart , 234, _T("\\") , _T("("));
|
||||||
placePerfKeyFromReg(DiskRead , 220, _T(")\\"), NULL);
|
placePerfKeyFromReg(DiskRead , 220, _T(")\\"), NULL);
|
||||||
placePerfKeyFromReg(DiskWrite , 222, _T(")\\"), NULL);
|
placePerfKeyFromReg(DiskWrite , 222, _T(")\\"), NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static void placePerfKeysFromReg(const PerfKey key, unsigned int index1, unsigned int index2)
|
static void
|
||||||
|
placePerfKeysFromReg(const PerfKey key, unsigned int index1, unsigned int index2)
|
||||||
{
|
{
|
||||||
TCHAR buf[512];
|
TCHAR buf[512];
|
||||||
TCHAR perfName[512];
|
TCHAR perfName[512];
|
||||||
|
@ -1636,19 +1706,21 @@ static void placePerfKeysFromReg(const PerfKey key, unsigned int index1, unsigne
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
printf("could not find perflib index %d in registry\n", index2);
|
_tprintf(_T("could not find perflib index %d in registry\n"), index2);
|
||||||
placePerfKey(key, NULL);
|
placePerfKey(key, NULL);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
printf("Could not find perflib index %d in registry\n", index1);
|
_tprintf(_T("Could not find perflib index %d in registry\n"), index1);
|
||||||
placePerfKey(key, NULL);
|
placePerfKey(key, NULL);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void placePerfKeyFromReg(const PerfKey key, unsigned int index,
|
|
||||||
const TCHAR* prefix, const TCHAR* suffix)
|
static void
|
||||||
|
placePerfKeyFromReg(const PerfKey key, unsigned int index, const TCHAR* prefix,
|
||||||
|
const TCHAR* suffix)
|
||||||
{
|
{
|
||||||
TCHAR buf[512];
|
TCHAR buf[512];
|
||||||
TCHAR perfName[512];
|
TCHAR perfName[512];
|
||||||
|
@ -1676,13 +1748,14 @@ static void placePerfKeyFromReg(const PerfKey key, unsigned int index,
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
printf("could not find index %d in registry\n", index);
|
_tprintf(_T("could not find index %d in registry\n"), index);
|
||||||
placePerfKey(key, NULL);
|
placePerfKey(key, NULL);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static void placePerfKey(const PerfKey key, const TCHAR* value)
|
static void
|
||||||
|
placePerfKey(const PerfKey key, const TCHAR* value)
|
||||||
{
|
{
|
||||||
size_t strSize;
|
size_t strSize;
|
||||||
if (((int)key > -1) && ((int)key < PerfKeysSize))
|
if (((int)key > -1) && ((int)key < PerfKeysSize))
|
||||||
|
@ -1698,11 +1771,11 @@ static void placePerfKey(const PerfKey key, const TCHAR* value)
|
||||||
{
|
{
|
||||||
perfKeyList[key] = NULL;
|
perfKeyList[key] = NULL;
|
||||||
}
|
}
|
||||||
//printf("perfKeyList[ %d ] = '%s'\n", key, perfKeyList[key]);
|
//_tprintf(_T("perfKeyList[ %d ] = '%s'\n"), key, perfKeyList[key]);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
printf("Invalid placement for key %d; value was '%s'\n", key, value);
|
_tprintf(_T("Invalid placement for key %d; value was '%s'\n"), key, value);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue