Skip to content

Commit c4d6d04

Browse files
committed
acl_hal_mmd: introduce references to dispatch struct
This is a cosmetic change only to prepare the next commit.
1 parent f66baab commit c4d6d04

File tree

1 file changed

+60
-68
lines changed

1 file changed

+60
-68
lines changed

src/acl_hal_mmd.cpp

Lines changed: 60 additions & 68 deletions
Original file line numberDiff line numberDiff line change
@@ -1239,43 +1239,35 @@ acl_mmd_get_system_definition(acl_system_def_t *sys,
12391239
internal_mmd_dispatch.resize(num_board_pkgs);
12401240
ACL_HAL_DEBUG_MSG_VERBOSE(1, "Board MMD is statically linked\n");
12411241

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);
12791271
} else if (_libraries_to_load) {
12801272
for (auto ipass = 0; ipass < 2; ++ipass) {
12811273
cl_bool load_libraries;
@@ -1323,21 +1315,21 @@ acl_mmd_get_system_definition(acl_system_def_t *sys,
13231315
sys->num_devices = 0;
13241316
num_physical_devices = 0;
13251317
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);
13281322
buf[sizeof(buf) - 1] = 0;
1329-
internal_mmd_dispatch[iboard].mmd_version = atof(buf);
1323+
dispatch.mmd_version = atof(buf);
13301324
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
13341327
: min_MMD_version;
13351328
ACL_HAL_DEBUG_MSG_VERBOSE(1, "HAL : Getting info version: %s\n", buf);
13361329

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,
13411333
14.0)) // Before this wasn't forward compatible
13421334
{
13431335
printf(" Runtime version: %s\n", AOCL_MMD_VERSION_STRING);
@@ -1351,22 +1343,22 @@ acl_mmd_get_system_definition(acl_system_def_t *sys,
13511343

13521344
// Dump offline info
13531345
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);
13561348
buf[sizeof(buf) - 1] = 0;
13571349
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);
13601352
ACL_HAL_DEBUG_MSG_VERBOSE(1, "HAL : Getting info num_boards: %d\n",
13611353
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);
13641356
buf[sizeof(buf) - 1] = 0;
13651357
ACL_HAL_DEBUG_MSG_VERBOSE(1, "HAL : Getting info boards: %s\n", buf);
13661358
}
13671359

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);
13701362
buf[MAX_BOARD_NAMES_LEN - 1] = 0;
13711363
// Probe the platform devices by going through all the possibilities in the
13721364
// semicolon delimited list
@@ -1395,15 +1387,17 @@ int acl_hal_mmd_try_devices(cl_uint num_devices, const cl_device_id *devices,
13951387
// names might get cached by various routines
13961388

13971389
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);
14001394
buf[MAX_BOARD_NAMES_LEN - 1] = 0; // ensure it's null terminated
14011395

14021396
// query for the polling/interrupt mode for each bsp
14031397
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);
14071401
}
14081402
// Probe the platform devices by going through all the possibilities in the
14091403
// semicolon delimited list
@@ -1415,8 +1409,7 @@ int acl_hal_mmd_try_devices(cl_uint num_devices, const cl_device_id *devices,
14151409
if (devices[idevice] == &(platform->device[physical_device_id])) {
14161410
if (devices[idevice]->opened_count == 0) {
14171411
if (l_try_device(physical_device_id, ptr,
1418-
platform->initial_board_def,
1419-
&(internal_mmd_dispatch[iboard]))) {
1412+
platform->initial_board_def, &dispatch)) {
14201413
ACL_HAL_DEBUG_MSG_VERBOSE(1, "Device: %s device is available\n",
14211414
ptr);
14221415
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,
14361429
// Enable yield function. In 14.0 this function was never
14371430
// called, in 14.1 it is called only if the offline attribute is
14381431
// set.
1439-
if (!MMDVERSION_LESSTHAN(
1440-
internal_mmd_dispatch[iboard].mmd_version, 14.1)) {
1432+
if (!MMDVERSION_LESSTHAN(dispatch.mmd_version, 14.1)) {
14411433
((acl_hal_t *)acl_get_hal())->yield = acl_hal_mmd_yield;
14421434
}
14431435
}
@@ -1465,9 +1457,10 @@ int acl_hal_mmd_try_devices(cl_uint num_devices, const cl_device_id *devices,
14651457
physical_device_id = 0;
14661458

14671459
for (unsigned iboard = 0; iboard < num_board_pkgs; ++iboard) {
1460+
acl_mmd_dispatch_t &dispatch = internal_mmd_dispatch[iboard];
14681461

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);
14711464
buf[MAX_BOARD_NAMES_LEN - 1] = 0; // ensure it's null terminated
14721465

14731466
// 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,
14851478
for (idevice = 0; idevice < num_devices; idevice++) {
14861479
if (devices[idevice] == &(platform->device[physical_device_id])) {
14871480
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);
14901482
}
14911483
devices[idevice]->opened_count--;
14921484
}

0 commit comments

Comments
 (0)