add function to derive mhz from cpu model name
This commit is contained in:
		
							parent
							
								
									1486b87692
								
							
						
					
					
						commit
						8ce111b16c
					
				@ -81,6 +81,8 @@ double sigar_file_system_usage_calc_used(sigar_t *sigar,
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
void sigar_cpu_model_adjust(sigar_t *sigar, sigar_cpu_info_t *info);
 | 
					void sigar_cpu_model_adjust(sigar_t *sigar, sigar_cpu_info_t *info);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					int sigar_cpu_mhz_from_model(char *model);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
char *sigar_get_self_path(sigar_t *sigar);
 | 
					char *sigar_get_self_path(sigar_t *sigar);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
typedef struct sigar_cache_entry_t sigar_cache_entry_t;
 | 
					typedef struct sigar_cache_entry_t sigar_cache_entry_t;
 | 
				
			||||||
 | 
				
			|||||||
@ -431,6 +431,48 @@ void sigar_cpu_model_adjust(sigar_t *sigar, sigar_cpu_info_t *info)
 | 
				
			|||||||
    strcpy(info->model, ptr);
 | 
					    strcpy(info->model, ptr);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* attempt to derive MHz from model name
 | 
				
			||||||
 | 
					 * currently works for certain intel strings
 | 
				
			||||||
 | 
					 * see exp/intel_amd_cpu_models.txt
 | 
				
			||||||
 | 
					 */ 
 | 
				
			||||||
 | 
					int sigar_cpu_mhz_from_model(char *model)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    int mhz = SIGAR_FIELD_NOTIMPL;
 | 
				
			||||||
 | 
					    char *ptr = model;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    while (*ptr && (ptr = strchr(ptr, ' '))) {
 | 
				
			||||||
 | 
					        while(*ptr && !sigar_isdigit(*ptr)) {
 | 
				
			||||||
 | 
					            ptr++;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        mhz = sigar_strtoul(ptr);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if (*ptr == '.') {
 | 
				
			||||||
 | 
					            /* e.g. "2.40GHz" */
 | 
				
			||||||
 | 
					            ++ptr;
 | 
				
			||||||
 | 
					            mhz *= 100;
 | 
				
			||||||
 | 
					            mhz += sigar_strtoul(ptr);
 | 
				
			||||||
 | 
					            break;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        else if (strnEQ(ptr, "GHz", 3) ||
 | 
				
			||||||
 | 
					                 strnEQ(ptr, "MHz", 3))
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            /* e.g. "1500MHz" */
 | 
				
			||||||
 | 
					            break;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        else {
 | 
				
			||||||
 | 
					            mhz = SIGAR_FIELD_NOTIMPL;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if (mhz != SIGAR_FIELD_NOTIMPL) {
 | 
				
			||||||
 | 
					        if (strnEQ(ptr, "GHz", 3)) {
 | 
				
			||||||
 | 
					            mhz *= 10;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    return mhz;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if !defined(WIN32) && !defined(NETWARE)
 | 
					#if !defined(WIN32) && !defined(NETWARE)
 | 
				
			||||||
#include <netdb.h>
 | 
					#include <netdb.h>
 | 
				
			||||||
#include <rpc/rpc.h>
 | 
					#include <rpc/rpc.h>
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user