Re: [wbemprox] Patches for adding currentclockspeed in record_processor
On Mon, 2013-07-01 at 08:56 +0900, Rosen Diankov wrote:
diff -ru wine-1.6-rc3-old/dlls/wbemprox/builtin.c wine-1.6-rc3/dlls/wbemprox/builtin.c --- wine-1.6-rc3-old/dlls/wbemprox/builtin.c 2013-06-22 03:24:01.000000000 +0900 +++ wine-1.6-rc3/dlls/wbemprox/builtin.c 2013-06-27 23:04:20.170154454 +0900
Please use git to generate patches.
@@ -168,6 +168,8 @@ {'M','a','n','u','f','a','c','t','u','r','e','r',0}; static const WCHAR prop_maxclockspeedW[] = {'M','a','x','C','l','o','c','k','S','p','e','e','d',0}; +static const WCHAR prop_currentclockspeedW[] = + {'C','u','r','r','e','n','t','C','l','o','c','k','S','p','e','e','d',0};
Please keep properties sorted here and below.
static const WCHAR prop_memberW[] = {'M','e','m','b','e','r',0}; static const WCHAR prop_methodW[] = @@ -381,6 +383,7 @@ { prop_familyW, CIM_UINT16, VT_I4 }, { prop_manufacturerW, CIM_STRING|COL_FLAG_DYNAMIC }, { prop_maxclockspeedW, CIM_UINT32, VT_I4 }, + { prop_currentclockspeedW, CIM_UINT32, VT_I4 }, { prop_nameW, CIM_STRING|COL_FLAG_DYNAMIC }, { prop_numcoresW, CIM_UINT32, VT_I4 }, { prop_numlogicalprocessorsW, CIM_UINT32, VT_I4 }, @@ -633,6 +636,7 @@ UINT16 family; const WCHAR *manufacturer; UINT32 maxclockspeed; + UINT32 currentclockspeed; const WCHAR *name; UINT32 num_cores; UINT32 num_logical_processors; @@ -1690,7 +1694,33 @@ regs_to_str( regs, 16, name + 32 ); } } -static UINT get_processor_maxclockspeed( void ) +static void get_processor_clockspeeds( UINT* maxclockspeed, UINT* currentclockspeed ) +{ + PROCESSOR_POWER_INFORMATION *info; + UINT size = get_processor_count() * sizeof(PROCESSOR_POWER_INFORMATION); + NTSTATUS status; + + if ((info = heap_alloc( size ))) + { + status = NtPowerInformation( ProcessorInformation, NULL, 0, info, size ); + if (!status) + { + *maxclockspeed = info[0].MaxMhz; + *currentclockspeed = info[0].CurrentMhz; + } + heap_free( info ); + } + if( !!maxclockspeed ) + { + *maxclockspeed = 1000; + } + if( !!currentclockspeed ) + { + *currentclockspeed = 1000; + } +}
You probably didn't mean to query the clock speeds and then overwrite them with static values. NULL checks are not needed in helpers like this.
+/*static UINT get_processor_maxclockspeed( void ) { PROCESSOR_POWER_INFORMATION *info; UINT ret = 1000, size = get_processor_count() * sizeof(PROCESSOR_POWER_INFORMATION); @@ -1703,7 +1733,8 @@ heap_free( info ); } return ret; -} +}*/
Don't comment out code. Remove it.
static const WCHAR *get_osarchitecture(void) { SYSTEM_INFO info; @@ -1717,7 +1748,7 @@ static const WCHAR fmtW[] = {'C','P','U','%','u',0}; WCHAR device_id[14], processor_id[17], manufacturer[13], name[49] = {0}; struct record_processor *rec; - UINT i, offset = 0, maxclockspeed, num_cores, num_logical_processors, count = get_processor_count(); + UINT i, offset = 0, maxclockspeed = 0, currentclockspeed = 0, num_cores, num_logical_processors, count = get_processor_count(); enum fill_status status = FILL_STATUS_UNFILTERED;
if (!resize_table( table, count, sizeof(*rec) )) return FILL_STATUS_FAILED; @@ -1726,7 +1757,7 @@ get_processor_manufacturer( manufacturer ); get_processor_name( name );
- maxclockspeed = get_processor_maxclockspeed(); + get_processor_clockspeeds(&maxclockspeed, ¤tclockspeed); num_logical_processors = get_logical_processor_count( &num_cores ) / count; num_cores /= count;
You're not using currentclockspeed.
you are right, i'm attaching a new patch. 2013/7/1 Hans Leidekker <hans(a)codeweavers.com>:
On Mon, 2013-07-01 at 08:56 +0900, Rosen Diankov wrote:
diff -ru wine-1.6-rc3-old/dlls/wbemprox/builtin.c wine-1.6-rc3/dlls/wbemprox/builtin.c --- wine-1.6-rc3-old/dlls/wbemprox/builtin.c 2013-06-22 03:24:01.000000000 +0900 +++ wine-1.6-rc3/dlls/wbemprox/builtin.c 2013-06-27 23:04:20.170154454 +0900
Please use git to generate patches.
@@ -168,6 +168,8 @@ {'M','a','n','u','f','a','c','t','u','r','e','r',0}; static const WCHAR prop_maxclockspeedW[] = {'M','a','x','C','l','o','c','k','S','p','e','e','d',0}; +static const WCHAR prop_currentclockspeedW[] = + {'C','u','r','r','e','n','t','C','l','o','c','k','S','p','e','e','d',0};
Please keep properties sorted here and below.
static const WCHAR prop_memberW[] = {'M','e','m','b','e','r',0}; static const WCHAR prop_methodW[] = @@ -381,6 +383,7 @@ { prop_familyW, CIM_UINT16, VT_I4 }, { prop_manufacturerW, CIM_STRING|COL_FLAG_DYNAMIC }, { prop_maxclockspeedW, CIM_UINT32, VT_I4 }, + { prop_currentclockspeedW, CIM_UINT32, VT_I4 }, { prop_nameW, CIM_STRING|COL_FLAG_DYNAMIC }, { prop_numcoresW, CIM_UINT32, VT_I4 }, { prop_numlogicalprocessorsW, CIM_UINT32, VT_I4 }, @@ -633,6 +636,7 @@ UINT16 family; const WCHAR *manufacturer; UINT32 maxclockspeed; + UINT32 currentclockspeed; const WCHAR *name; UINT32 num_cores; UINT32 num_logical_processors; @@ -1690,7 +1694,33 @@ regs_to_str( regs, 16, name + 32 ); } } -static UINT get_processor_maxclockspeed( void ) +static void get_processor_clockspeeds( UINT* maxclockspeed, UINT* currentclockspeed ) +{ + PROCESSOR_POWER_INFORMATION *info; + UINT size = get_processor_count() * sizeof(PROCESSOR_POWER_INFORMATION); + NTSTATUS status; + + if ((info = heap_alloc( size ))) + { + status = NtPowerInformation( ProcessorInformation, NULL, 0, info, size ); + if (!status) + { + *maxclockspeed = info[0].MaxMhz; + *currentclockspeed = info[0].CurrentMhz; + } + heap_free( info ); + } + if( !!maxclockspeed ) + { + *maxclockspeed = 1000; + } + if( !!currentclockspeed ) + { + *currentclockspeed = 1000; + } +}
You probably didn't mean to query the clock speeds and then overwrite them with static values. NULL checks are not needed in helpers like this.
+/*static UINT get_processor_maxclockspeed( void ) { PROCESSOR_POWER_INFORMATION *info; UINT ret = 1000, size = get_processor_count() * sizeof(PROCESSOR_POWER_INFORMATION); @@ -1703,7 +1733,8 @@ heap_free( info ); } return ret; -} +}*/
Don't comment out code. Remove it.
static const WCHAR *get_osarchitecture(void) { SYSTEM_INFO info; @@ -1717,7 +1748,7 @@ static const WCHAR fmtW[] = {'C','P','U','%','u',0}; WCHAR device_id[14], processor_id[17], manufacturer[13], name[49] = {0}; struct record_processor *rec; - UINT i, offset = 0, maxclockspeed, num_cores, num_logical_processors, count = get_processor_count(); + UINT i, offset = 0, maxclockspeed = 0, currentclockspeed = 0, num_cores, num_logical_processors, count = get_processor_count(); enum fill_status status = FILL_STATUS_UNFILTERED;
if (!resize_table( table, count, sizeof(*rec) )) return FILL_STATUS_FAILED; @@ -1726,7 +1757,7 @@ get_processor_manufacturer( manufacturer ); get_processor_name( name );
- maxclockspeed = get_processor_maxclockspeed(); + get_processor_clockspeeds(&maxclockspeed, ¤tclockspeed); num_logical_processors = get_logical_processor_count( &num_cores ) / count; num_cores /= count;
You're not using currentclockspeed.
you are right again, i'll be more careful. now, i've addressed every problem except creating the patches with git. any help would be appreciated. . 2013/7/2 Hans Leidekker <hans(a)codeweavers.com>:
On Mon, 2013-07-01 at 18:08 +0900, Rosen Diankov wrote:
you are right, i'm attaching a new patch.
You didn't address all comments.
On Tue, 2013-07-02 at 20:34 +0900, Rosen Diankov wrote:
you are right again, i'll be more careful. now, i've addressed every problem except creating the patches with git. any help would be appreciated.
See http://wiki.winehq.org/GitWine
--- wine-1.6-rc4-old/dlls/wbemprox/builtin.c 2013-06-29 04:53:55.000000000 +0900 +++ wine-1.6-rc4/dlls/wbemprox/builtin.c 2013-07-02 19:30:39.157916619 +0900 @@ -168,6 +168,8 @@ {'M','a','n','u','f','a','c','t','u','r','e','r',0}; static const WCHAR prop_maxclockspeedW[] = {'M','a','x','C','l','o','c','k','S','p','e','e','d',0}; +static const WCHAR prop_currentclockspeedW[] = + {'C','u','r','r','e','n','t','C','l','o','c','k','S','p','e','e','d',0}; static const WCHAR prop_memberW[] = {'M','e','m','b','e','r',0}; static const WCHAR prop_methodW[] = @@ -381,6 +383,7 @@ { prop_familyW, CIM_UINT16, VT_I4 }, { prop_manufacturerW, CIM_STRING|COL_FLAG_DYNAMIC }, { prop_maxclockspeedW, CIM_UINT32, VT_I4 }, + { prop_currentclockspeedW, CIM_UINT32, VT_I4 }, { prop_nameW, CIM_STRING|COL_FLAG_DYNAMIC }, { prop_numcoresW, CIM_UINT32, VT_I4 }, { prop_numlogicalprocessorsW, CIM_UINT32, VT_I4 }, @@ -633,6 +636,7 @@ UINT16 family; const WCHAR *manufacturer; UINT32 maxclockspeed; + UINT32 currentclockspeed; const WCHAR *name; UINT32 num_cores; UINT32 num_logical_processors; @@ -1690,20 +1694,30 @@ regs_to_str( regs, 16, name + 32 ); } }
Please keep properties sorted alphabetically.
-static UINT get_processor_maxclockspeed( void ) +static void get_processor_clockspeeds( UINT* maxclockspeed, UINT* currentclockspeed ) { PROCESSOR_POWER_INFORMATION *info; - UINT ret = 1000, size = get_processor_count() * sizeof(PROCESSOR_POWER_INFORMATION); + UINT size = get_processor_count() * sizeof(PROCESSOR_POWER_INFORMATION); NTSTATUS status; - + UINT valueswritten=0; if ((info = heap_alloc( size ))) { status = NtPowerInformation( ProcessorInformation, NULL, 0, info, size ); - if (!status) ret = info[0].MaxMhz; + if (!status) + { + *maxclockspeed = info[0].MaxMhz; + *currentclockspeed = info[0].CurrentMhz; + valueswritten = 1; + } heap_free( info ); } - return ret; + if( valueswritten == 0 ) + { + *maxclockspeed = 1000; + *currentclockspeed = 1000; + } }
You don't need an extra variable, just return early.
participants (2)
-
Hans Leidekker -
Rosen Diankov