6
6
#include < stdio.h>
7
7
#include < stdlib.h>
8
8
#include < string.h>
9
- #include " wraphelper.h"
10
9
#include " wrapadl.h"
11
10
12
11
#if defined(__cplusplus)
@@ -72,6 +71,15 @@ return NULL;
72
71
wrap_dlsym (adlh->adl_dll , " ADL_Main_Control_Refresh" );
73
72
adlh->adlMainControlDestroy = (wrap_adlReturn_t (*)(void ))
74
73
wrap_dlsym (adlh->adl_dll , " ADL_Main_Control_Destroy" );
74
+ adlh->adl2MainControlCreate = (wrap_adlReturn_t (*)(ADL_MAIN_MALLOC_CALLBACK, int , ADL_CONTEXT_HANDLE*))
75
+ wrap_dlsym (adlh->adl_dll , " ADL2_Main_Control_Create" );
76
+ adlh->adl2MainControlDestroy = (wrap_adlReturn_t (*)(ADL_CONTEXT_HANDLE))
77
+ wrap_dlsym (adlh->adl_dll , " ADL_Main_Control_Destroy" );
78
+ adlh->adl2Overdrive6CurrentPowerGet = (wrap_adlReturn_t (*)(ADL_CONTEXT_HANDLE, int , int , int *))
79
+ wrap_dlsym (adlh->adl_dll , " ADL2_Overdrive6_CurrentPower_Get" );
80
+ adlh->adl2MainControlRefresh = (wrap_adlReturn_t (*)(ADL_CONTEXT_HANDLE))
81
+ wrap_dlsym (adlh->adl_dll , " ADL2_Main_Control_Refresh" );
82
+
75
83
76
84
if (adlh->adlMainControlCreate == NULL ||
77
85
adlh->adlMainControlDestroy == NULL ||
@@ -80,7 +88,11 @@ return NULL;
80
88
adlh->adlAdapterAdapterInfoGet == NULL ||
81
89
adlh->adlAdapterAdapterIdGet == NULL ||
82
90
adlh->adlOverdrive5TemperatureGet == NULL ||
83
- adlh->adlOverdrive5FanSpeedGet == NULL
91
+ adlh->adlOverdrive5FanSpeedGet == NULL ||
92
+ adlh->adl2MainControlCreate == NULL ||
93
+ adlh->adl2MainControlRefresh == NULL ||
94
+ adlh->adl2MainControlDestroy == NULL ||
95
+ adlh->adl2Overdrive6CurrentPowerGet == NULL
84
96
) {
85
97
#if 0
86
98
printf("Failed to obtain all required ADL function pointers\n");
@@ -93,6 +105,11 @@ return NULL;
93
105
adlh->adlMainControlCreate (ADL_Main_Memory_Alloc, 1 );
94
106
adlh->adlMainControlRefresh ();
95
107
108
+ adlh->context = NULL ;
109
+
110
+ adlh->adl2MainControlCreate (ADL_Main_Memory_Alloc, 1 , &(adlh->context ));
111
+ adlh->adl2MainControlRefresh (adlh->context );
112
+
96
113
int logicalGpuCount = 0 ;
97
114
adlh->adlAdapterNumberOfAdapters (&logicalGpuCount);
98
115
@@ -134,6 +151,7 @@ return NULL;
134
151
int wrap_adl_destroy (wrap_adl_handle *adlh)
135
152
{
136
153
adlh->adlMainControlDestroy ();
154
+ adlh->adl2MainControlDestroy (adlh->context );
137
155
wrap_dlclose (adlh->adl_dll );
138
156
free (adlh);
139
157
return 0 ;
@@ -188,6 +206,16 @@ int wrap_adl_get_fanpcnt(wrap_adl_handle *adlh, int gpuindex, unsigned int *fanp
188
206
return 0 ;
189
207
}
190
208
209
+ int wrap_adl_get_power_usage (wrap_adl_handle *adlh, int gpuindex, unsigned int *power)
210
+ {
211
+ wrap_adlReturn_t rc;
212
+ if (gpuindex < 0 || gpuindex >= adlh->adl_gpucount ){
213
+ return -1 ;
214
+ }
215
+ rc = adlh->adl2Overdrive6CurrentPowerGet (adlh->context , adlh->phys_logi_device_id [gpuindex], 0 , (int *)power);
216
+ return rc;
217
+ }
218
+
191
219
#if defined(__cplusplus)
192
220
}
193
221
#endif
0 commit comments