parent
							
								
									10fa3b1878
								
							
						
					
					
						commit
						ed029357d1
					
				
					 1 changed files with 49 additions and 34 deletions
				
			
		| 
						 | 
					@ -40,32 +40,37 @@ int xs_parse_cpu(char *model, char *vendor, double *freq)
 | 
				
			||||||
#if defined(__i386__) || defined(__x86_64__) || defined(__powerpc__) || defined(__alpha__) || defined(__ia64__) || defined(__parisc__) || defined(__sparc__)
 | 
					#if defined(__i386__) || defined(__x86_64__) || defined(__powerpc__) || defined(__alpha__) || defined(__ia64__) || defined(__parisc__) || defined(__sparc__)
 | 
				
			||||||
	char buffer[bsize];
 | 
						char buffer[bsize];
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
#if defined(__powerpc__)
 | 
						FILE *fp;
 | 
				
			||||||
	char *pos = NULL;
 | 
					
 | 
				
			||||||
#endif
 | 
						fp = fopen("/proc/cpuinfo", "r");
 | 
				
			||||||
	FILE *fp = fopen("/proc/cpuinfo", "r");
 | 
					 | 
				
			||||||
	if(fp == NULL)
 | 
						if(fp == NULL)
 | 
				
			||||||
		return 1;
 | 
							return 1;
 | 
				
			||||||
	
 | 
					
 | 
				
			||||||
	#if defined(__i386__) || defined(__x86_64__)
 | 
					#if defined(__i386__) || defined(__x86_64__)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	while(fgets(buffer, bsize, fp) != NULL)
 | 
						while(fgets(buffer, bsize, fp) != NULL)
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
		find_match_char(buffer, "model name", model);
 | 
							find_match_char(buffer, "model name", model);
 | 
				
			||||||
		find_match_char(buffer, "vendor_id", vendor);
 | 
							find_match_char(buffer, "vendor_id", vendor);
 | 
				
			||||||
		find_match_double(buffer, "cpu MHz", freq);
 | 
							find_match_double(buffer, "cpu MHz", freq);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	#endif
 | 
					
 | 
				
			||||||
	#ifdef __powerpc__
 | 
					#elif defined(__powerpc__)
 | 
				
			||||||
	while(fgets(buffer, bsize, fp) != NULL)
 | 
					 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
		find_match_char(buffer, "cpu", model);
 | 
							char *pos;
 | 
				
			||||||
		find_match_char(buffer, "machine", vendor);
 | 
					
 | 
				
			||||||
		find_match_double(buffer, "clock", freq);
 | 
							while(fgets(buffer, bsize, fp) != NULL)
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								find_match_char(buffer, "cpu", model);
 | 
				
			||||||
 | 
								find_match_char(buffer, "machine", vendor);
 | 
				
			||||||
 | 
								find_match_double(buffer, "clock", freq);
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							pos = strstr(model, ",");
 | 
				
			||||||
 | 
							if (pos != NULL)
 | 
				
			||||||
 | 
							    *pos = '\0';
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	pos = strstr(model, ",");
 | 
					#elif defined( __alpha__)
 | 
				
			||||||
	if (pos != NULL) *pos = '\0';
 | 
					
 | 
				
			||||||
	#endif
 | 
					 | 
				
			||||||
	#ifdef __alpha__
 | 
					 | 
				
			||||||
	while(fgets(buffer, bsize, fp) != NULL)
 | 
						while(fgets(buffer, bsize, fp) != NULL)
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
		find_match_char(buffer, "cpu model", model);
 | 
							find_match_char(buffer, "cpu model", model);
 | 
				
			||||||
| 
						 | 
					@ -73,37 +78,47 @@ int xs_parse_cpu(char *model, char *vendor, double *freq)
 | 
				
			||||||
		find_match_double(buffer, "cycle frequency [Hz]", freq);
 | 
							find_match_double(buffer, "cycle frequency [Hz]", freq);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	*freq = *freq / 1000000;
 | 
						*freq = *freq / 1000000;
 | 
				
			||||||
	#endif
 | 
					
 | 
				
			||||||
	#ifdef __ia64__
 | 
					#elif defined(__ia64__)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	while(fgets(buffer, bsize, fp) != NULL)
 | 
						while(fgets(buffer, bsize, fp) != NULL)
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
		find_match_char(buffer, "model", model);
 | 
							find_match_char(buffer, "model", model);
 | 
				
			||||||
		find_match_char(buffer, "vendor", vendor);
 | 
							find_match_char(buffer, "vendor", vendor);
 | 
				
			||||||
		find_match_double(buffer, "cpu MHz", freq);
 | 
							find_match_double(buffer, "cpu MHz", freq);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	#endif
 | 
					
 | 
				
			||||||
	#ifdef __parisc__
 | 
					#elif defined(__parisc__)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	while(fgets(buffer, bsize, fp) != NULL)
 | 
						while(fgets(buffer, bsize, fp) != NULL)
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
		find_match_char(buffer, "cpu  ", model);
 | 
							find_match_char(buffer, "cpu  ", model);
 | 
				
			||||||
		find_match_char(buffer, "cpu family", vendor);
 | 
							find_match_char(buffer, "cpu family", vendor);
 | 
				
			||||||
		find_match_double(buffer, "cpu MHz", freq);
 | 
							find_match_double(buffer, "cpu MHz", freq);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	#endif
 | 
					
 | 
				
			||||||
	#ifdef __sparc__
 | 
					#elif defined(__sparc__)
 | 
				
			||||||
	DIR *dir;
 | 
					    {
 | 
				
			||||||
	struct dirent *entry;
 | 
						    DIR *dir;
 | 
				
			||||||
	FILE *fp2;
 | 
						    struct dirent *entry;
 | 
				
			||||||
	while(fgets(buffer, bsize, fp) != NULL)
 | 
						    FILE *fp2;
 | 
				
			||||||
	{
 | 
					
 | 
				
			||||||
		find_match_char(buffer, "cpu	", model);
 | 
						    while(fgets(buffer, bsize, fp) != NULL)
 | 
				
			||||||
		find_match_char(buffer, "type	", vendor);
 | 
						    {
 | 
				
			||||||
		find_match_double_hex(buffer, "Cpu0ClkTck", freq);
 | 
							    find_match_char(buffer, "cpu	", model);
 | 
				
			||||||
	}
 | 
							    find_match_char(buffer, "type	", vendor);
 | 
				
			||||||
	*freq = *freq / 1000000;
 | 
							    find_match_double_hex(buffer, "Cpu0ClkTck", freq);
 | 
				
			||||||
	#endif
 | 
						    }
 | 
				
			||||||
 | 
						    *freq = *freq / 1000000;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    fclose(fp);
 | 
				
			||||||
 | 
					    return 1; /* Unsupported */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	fclose(fp);
 | 
						fclose(fp);
 | 
				
			||||||
	
 | 
					 | 
				
			||||||
	return 0;
 | 
						return 0;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		
		Reference in a new issue