@@ -1239,43 +1239,35 @@ acl_mmd_get_system_definition(acl_system_def_t *sys,
1239
1239
internal_mmd_dispatch.resize (num_board_pkgs);
1240
1240
ACL_HAL_DEBUG_MSG_VERBOSE (1 , " Board MMD is statically linked\n " );
1241
1241
1242
- internal_mmd_dispatch[0 ].library_name = " runtime_static" ;
1243
- internal_mmd_dispatch[0 ].mmd_library = nullptr ;
1244
-
1245
- internal_mmd_dispatch[0 ].aocl_mmd_get_offline_info =
1246
- aocl_mmd_get_offline_info;
1247
-
1248
- ADD_STATIC_FN_TO_HAL (internal_mmd_dispatch[0 ], aocl_mmd_get_offline_info,
1249
- 1 );
1250
- ADD_STATIC_FN_TO_HAL (internal_mmd_dispatch[0 ], aocl_mmd_get_info, 1 );
1251
- ADD_STATIC_FN_TO_HAL (internal_mmd_dispatch[0 ], aocl_mmd_open, 1 );
1252
- ADD_STATIC_FN_TO_HAL (internal_mmd_dispatch[0 ], aocl_mmd_close, 1 );
1253
- ADD_STATIC_FN_TO_HAL (internal_mmd_dispatch[0 ],
1254
- aocl_mmd_set_interrupt_handler, 1 );
1255
- ADD_STATIC_FN_TO_HAL (internal_mmd_dispatch[0 ],
1256
- aocl_mmd_set_device_interrupt_handler, 0 );
1257
- ADD_STATIC_FN_TO_HAL (internal_mmd_dispatch[0 ], aocl_mmd_set_status_handler,
1258
- 1 );
1259
- ADD_STATIC_FN_TO_HAL (internal_mmd_dispatch[0 ], aocl_mmd_yield, 1 );
1260
- ADD_STATIC_FN_TO_HAL (internal_mmd_dispatch[0 ], aocl_mmd_read, 1 );
1261
- ADD_STATIC_FN_TO_HAL (internal_mmd_dispatch[0 ], aocl_mmd_write, 1 );
1262
- ADD_STATIC_FN_TO_HAL (internal_mmd_dispatch[0 ], aocl_mmd_copy, 1 );
1263
- ADD_STATIC_FN_TO_HAL (internal_mmd_dispatch[0 ], aocl_mmd_reprogram, 0 );
1264
- ADD_STATIC_FN_TO_HAL (internal_mmd_dispatch[0 ], aocl_mmd_shared_mem_alloc,
1265
- 0 );
1266
- ADD_STATIC_FN_TO_HAL (internal_mmd_dispatch[0 ], aocl_mmd_shared_mem_free, 0 );
1267
- ADD_STATIC_FN_TO_HAL (internal_mmd_dispatch[0 ], aocl_mmd_hostchannel_create,
1268
- 0 );
1269
- ADD_STATIC_FN_TO_HAL (internal_mmd_dispatch[0 ], aocl_mmd_hostchannel_destroy,
1270
- 0 );
1271
- ADD_STATIC_FN_TO_HAL (internal_mmd_dispatch[0 ],
1272
- aocl_mmd_hostchannel_get_buffer, 0 );
1273
- ADD_STATIC_FN_TO_HAL (internal_mmd_dispatch[0 ],
1274
- aocl_mmd_hostchannel_ack_buffer, 0 );
1275
- ADD_STATIC_FN_TO_HAL (internal_mmd_dispatch[0 ], aocl_mmd_program, 0 );
1276
- ADD_STATIC_FN_TO_HAL (internal_mmd_dispatch[0 ], aocl_mmd_host_alloc, 0 );
1277
- ADD_STATIC_FN_TO_HAL (internal_mmd_dispatch[0 ], aocl_mmd_free, 0 );
1278
- ADD_STATIC_FN_TO_HAL (internal_mmd_dispatch[0 ], aocl_mmd_shared_alloc, 0 );
1242
+ acl_mmd_dispatch_t &dispatch = internal_mmd_dispatch[0 ];
1243
+
1244
+ dispatch.library_name = " runtime_static" ;
1245
+ dispatch.mmd_library = nullptr ;
1246
+
1247
+ dispatch.aocl_mmd_get_offline_info = aocl_mmd_get_offline_info;
1248
+
1249
+ ADD_STATIC_FN_TO_HAL (dispatch, aocl_mmd_get_offline_info, 1 );
1250
+ ADD_STATIC_FN_TO_HAL (dispatch, aocl_mmd_get_info, 1 );
1251
+ ADD_STATIC_FN_TO_HAL (dispatch, aocl_mmd_open, 1 );
1252
+ ADD_STATIC_FN_TO_HAL (dispatch, aocl_mmd_close, 1 );
1253
+ ADD_STATIC_FN_TO_HAL (dispatch, aocl_mmd_set_interrupt_handler, 1 );
1254
+ ADD_STATIC_FN_TO_HAL (dispatch, aocl_mmd_set_device_interrupt_handler, 0 );
1255
+ ADD_STATIC_FN_TO_HAL (dispatch, aocl_mmd_set_status_handler, 1 );
1256
+ ADD_STATIC_FN_TO_HAL (dispatch, aocl_mmd_yield, 1 );
1257
+ ADD_STATIC_FN_TO_HAL (dispatch, aocl_mmd_read, 1 );
1258
+ ADD_STATIC_FN_TO_HAL (dispatch, aocl_mmd_write, 1 );
1259
+ ADD_STATIC_FN_TO_HAL (dispatch, aocl_mmd_copy, 1 );
1260
+ ADD_STATIC_FN_TO_HAL (dispatch, aocl_mmd_reprogram, 0 );
1261
+ ADD_STATIC_FN_TO_HAL (dispatch, aocl_mmd_shared_mem_alloc, 0 );
1262
+ ADD_STATIC_FN_TO_HAL (dispatch, aocl_mmd_shared_mem_free, 0 );
1263
+ ADD_STATIC_FN_TO_HAL (dispatch, aocl_mmd_hostchannel_create, 0 );
1264
+ ADD_STATIC_FN_TO_HAL (dispatch, aocl_mmd_hostchannel_destroy, 0 );
1265
+ ADD_STATIC_FN_TO_HAL (dispatch, aocl_mmd_hostchannel_get_buffer, 0 );
1266
+ ADD_STATIC_FN_TO_HAL (dispatch, aocl_mmd_hostchannel_ack_buffer, 0 );
1267
+ ADD_STATIC_FN_TO_HAL (dispatch, aocl_mmd_program, 0 );
1268
+ ADD_STATIC_FN_TO_HAL (dispatch, aocl_mmd_host_alloc, 0 );
1269
+ ADD_STATIC_FN_TO_HAL (dispatch, aocl_mmd_free, 0 );
1270
+ ADD_STATIC_FN_TO_HAL (dispatch, aocl_mmd_shared_alloc, 0 );
1279
1271
} else if (_libraries_to_load) {
1280
1272
for (auto ipass = 0 ; ipass < 2 ; ++ipass) {
1281
1273
cl_bool load_libraries;
@@ -1323,21 +1315,21 @@ acl_mmd_get_system_definition(acl_system_def_t *sys,
1323
1315
sys->num_devices = 0 ;
1324
1316
num_physical_devices = 0 ;
1325
1317
for (unsigned iboard = 0 ; iboard < num_board_pkgs; ++iboard) {
1326
- internal_mmd_dispatch[iboard].aocl_mmd_get_offline_info (
1327
- AOCL_MMD_VERSION, sizeof (buf), buf, NULL );
1318
+ acl_mmd_dispatch_t &dispatch = internal_mmd_dispatch[iboard];
1319
+
1320
+ dispatch.aocl_mmd_get_offline_info (AOCL_MMD_VERSION, sizeof (buf), buf,
1321
+ NULL );
1328
1322
buf[sizeof (buf) - 1 ] = 0 ;
1329
- internal_mmd_dispatch[iboard] .mmd_version = atof (buf);
1323
+ dispatch .mmd_version = atof (buf);
1330
1324
min_MMD_version =
1331
- (!MMDVERSION_LESSTHAN (min_MMD_version,
1332
- internal_mmd_dispatch[iboard].mmd_version ))
1333
- ? internal_mmd_dispatch[iboard].mmd_version
1325
+ (!MMDVERSION_LESSTHAN (min_MMD_version, dispatch.mmd_version ))
1326
+ ? dispatch.mmd_version
1334
1327
: min_MMD_version;
1335
1328
ACL_HAL_DEBUG_MSG_VERBOSE (1 , " HAL : Getting info version: %s\n " , buf);
1336
1329
1337
- if (MMDVERSION_LESSTHAN (
1338
- atof (AOCL_MMD_VERSION_STRING),
1339
- internal_mmd_dispatch[iboard].mmd_version ) || // MMD newer than HAL
1340
- MMDVERSION_LESSTHAN (internal_mmd_dispatch[iboard].mmd_version ,
1330
+ if (MMDVERSION_LESSTHAN (atof (AOCL_MMD_VERSION_STRING),
1331
+ dispatch.mmd_version ) || // MMD newer than HAL
1332
+ MMDVERSION_LESSTHAN (dispatch.mmd_version ,
1341
1333
14.0 )) // Before this wasn't forward compatible
1342
1334
{
1343
1335
printf (" Runtime version: %s\n " , AOCL_MMD_VERSION_STRING);
@@ -1351,22 +1343,22 @@ acl_mmd_get_system_definition(acl_system_def_t *sys,
1351
1343
1352
1344
// Dump offline info
1353
1345
if (debug_verbosity > 0 ) {
1354
- internal_mmd_dispatch[iboard] .aocl_mmd_get_offline_info (
1355
- AOCL_MMD_VENDOR_NAME, sizeof (buf), buf, NULL );
1346
+ dispatch .aocl_mmd_get_offline_info (AOCL_MMD_VENDOR_NAME, sizeof (buf), buf,
1347
+ NULL );
1356
1348
buf[sizeof (buf) - 1 ] = 0 ;
1357
1349
ACL_HAL_DEBUG_MSG_VERBOSE (1 , " HAL : Getting info vendor: %s\n " , buf);
1358
- internal_mmd_dispatch[iboard] .aocl_mmd_get_offline_info (
1359
- AOCL_MMD_NUM_BOARDS, sizeof ( int ), &num_boards, NULL );
1350
+ dispatch .aocl_mmd_get_offline_info (AOCL_MMD_NUM_BOARDS, sizeof ( int ),
1351
+ &num_boards, NULL );
1360
1352
ACL_HAL_DEBUG_MSG_VERBOSE (1 , " HAL : Getting info num_boards: %d\n " ,
1361
1353
num_boards);
1362
- internal_mmd_dispatch[iboard] .aocl_mmd_get_offline_info (
1363
- AOCL_MMD_BOARD_NAMES, sizeof (buf), buf, NULL );
1354
+ dispatch .aocl_mmd_get_offline_info (AOCL_MMD_BOARD_NAMES, sizeof (buf), buf,
1355
+ NULL );
1364
1356
buf[sizeof (buf) - 1 ] = 0 ;
1365
1357
ACL_HAL_DEBUG_MSG_VERBOSE (1 , " HAL : Getting info boards: %s\n " , buf);
1366
1358
}
1367
1359
1368
- internal_mmd_dispatch[iboard] .aocl_mmd_get_offline_info (
1369
- AOCL_MMD_BOARD_NAMES, MAX_BOARD_NAMES_LEN, buf, NULL );
1360
+ dispatch .aocl_mmd_get_offline_info (AOCL_MMD_BOARD_NAMES,
1361
+ MAX_BOARD_NAMES_LEN, buf, NULL );
1370
1362
buf[MAX_BOARD_NAMES_LEN - 1 ] = 0 ;
1371
1363
// Probe the platform devices by going through all the possibilities in the
1372
1364
// semicolon delimited list
@@ -1395,15 +1387,17 @@ int acl_hal_mmd_try_devices(cl_uint num_devices, const cl_device_id *devices,
1395
1387
// names might get cached by various routines
1396
1388
1397
1389
for (unsigned iboard = 0 ; iboard < num_board_pkgs; ++iboard) {
1398
- internal_mmd_dispatch[iboard].aocl_mmd_get_offline_info (
1399
- AOCL_MMD_BOARD_NAMES, MAX_BOARD_NAMES_LEN, buf, NULL );
1390
+ acl_mmd_dispatch_t &dispatch = internal_mmd_dispatch[iboard];
1391
+
1392
+ dispatch.aocl_mmd_get_offline_info (AOCL_MMD_BOARD_NAMES,
1393
+ MAX_BOARD_NAMES_LEN, buf, NULL );
1400
1394
buf[MAX_BOARD_NAMES_LEN - 1 ] = 0 ; // ensure it's null terminated
1401
1395
1402
1396
// query for the polling/interrupt mode for each bsp
1403
1397
int uses_yield = 0 ;
1404
- if (!MMDVERSION_LESSTHAN (internal_mmd_dispatch[iboard] .mmd_version , 14.1 )) {
1405
- internal_mmd_dispatch[iboard] .aocl_mmd_get_offline_info (
1406
- AOCL_MMD_USES_YIELD, sizeof ( int ), &uses_yield, NULL );
1398
+ if (!MMDVERSION_LESSTHAN (dispatch .mmd_version , 14.1 )) {
1399
+ dispatch .aocl_mmd_get_offline_info (AOCL_MMD_USES_YIELD, sizeof ( int ),
1400
+ &uses_yield, NULL );
1407
1401
}
1408
1402
// Probe the platform devices by going through all the possibilities in the
1409
1403
// semicolon delimited list
@@ -1415,8 +1409,7 @@ int acl_hal_mmd_try_devices(cl_uint num_devices, const cl_device_id *devices,
1415
1409
if (devices[idevice] == &(platform->device [physical_device_id])) {
1416
1410
if (devices[idevice]->opened_count == 0 ) {
1417
1411
if (l_try_device (physical_device_id, ptr,
1418
- platform->initial_board_def ,
1419
- &(internal_mmd_dispatch[iboard]))) {
1412
+ platform->initial_board_def , &dispatch)) {
1420
1413
ACL_HAL_DEBUG_MSG_VERBOSE (1 , " Device: %s device is available\n " ,
1421
1414
ptr);
1422
1415
if (uses_yield_ref != -1 && uses_yield != uses_yield_ref) {
@@ -1436,8 +1429,7 @@ int acl_hal_mmd_try_devices(cl_uint num_devices, const cl_device_id *devices,
1436
1429
// Enable yield function. In 14.0 this function was never
1437
1430
// called, in 14.1 it is called only if the offline attribute is
1438
1431
// set.
1439
- if (!MMDVERSION_LESSTHAN (
1440
- internal_mmd_dispatch[iboard].mmd_version , 14.1 )) {
1432
+ if (!MMDVERSION_LESSTHAN (dispatch.mmd_version , 14.1 )) {
1441
1433
((acl_hal_t *)acl_get_hal ())->yield = acl_hal_mmd_yield;
1442
1434
}
1443
1435
}
@@ -1465,9 +1457,10 @@ int acl_hal_mmd_try_devices(cl_uint num_devices, const cl_device_id *devices,
1465
1457
physical_device_id = 0 ;
1466
1458
1467
1459
for (unsigned iboard = 0 ; iboard < num_board_pkgs; ++iboard) {
1460
+ acl_mmd_dispatch_t &dispatch = internal_mmd_dispatch[iboard];
1468
1461
1469
- internal_mmd_dispatch[iboard] .aocl_mmd_get_offline_info (
1470
- AOCL_MMD_BOARD_NAMES, MAX_BOARD_NAMES_LEN, buf, NULL );
1462
+ dispatch .aocl_mmd_get_offline_info (AOCL_MMD_BOARD_NAMES,
1463
+ MAX_BOARD_NAMES_LEN, buf, NULL );
1471
1464
buf[MAX_BOARD_NAMES_LEN - 1 ] = 0 ; // ensure it's null terminated
1472
1465
1473
1466
// Probe the platform devices by going through all the possibilities in the
@@ -1485,8 +1478,7 @@ int acl_hal_mmd_try_devices(cl_uint num_devices, const cl_device_id *devices,
1485
1478
for (idevice = 0 ; idevice < num_devices; idevice++) {
1486
1479
if (devices[idevice] == &(platform->device [physical_device_id])) {
1487
1480
if (devices[idevice]->opened_count == 1 ) { // we just opened it
1488
- l_close_device (physical_device_id,
1489
- &(internal_mmd_dispatch[iboard]));
1481
+ l_close_device (physical_device_id, &dispatch);
1490
1482
}
1491
1483
devices[idevice]->opened_count --;
1492
1484
}
0 commit comments