Skip to content

Commit 5ea8740

Browse files
committed
acl_hal_mmd: introduce references to dispatch struct
This is a cosmetic change only to prepare the next commit.
1 parent 880d603 commit 5ea8740

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
@@ -1269,43 +1269,35 @@ acl_mmd_get_system_definition(acl_system_def_t *sys,
12691269
internal_mmd_dispatch.resize(num_board_pkgs);
12701270
ACL_HAL_DEBUG_MSG_VERBOSE(1, "Board MMD is statically linked\n");
12711271

1272-
internal_mmd_dispatch[0].library_name = "runtime_static";
1273-
internal_mmd_dispatch[0].mmd_library = nullptr;
1274-
1275-
internal_mmd_dispatch[0].aocl_mmd_get_offline_info =
1276-
aocl_mmd_get_offline_info;
1277-
1278-
ADD_STATIC_FN_TO_HAL(internal_mmd_dispatch[0], aocl_mmd_get_offline_info,
1279-
1);
1280-
ADD_STATIC_FN_TO_HAL(internal_mmd_dispatch[0], aocl_mmd_get_info, 1);
1281-
ADD_STATIC_FN_TO_HAL(internal_mmd_dispatch[0], aocl_mmd_open, 1);
1282-
ADD_STATIC_FN_TO_HAL(internal_mmd_dispatch[0], aocl_mmd_close, 1);
1283-
ADD_STATIC_FN_TO_HAL(internal_mmd_dispatch[0],
1284-
aocl_mmd_set_interrupt_handler, 1);
1285-
ADD_STATIC_FN_TO_HAL(internal_mmd_dispatch[0],
1286-
aocl_mmd_set_device_interrupt_handler, 0);
1287-
ADD_STATIC_FN_TO_HAL(internal_mmd_dispatch[0], aocl_mmd_set_status_handler,
1288-
1);
1289-
ADD_STATIC_FN_TO_HAL(internal_mmd_dispatch[0], aocl_mmd_yield, 1);
1290-
ADD_STATIC_FN_TO_HAL(internal_mmd_dispatch[0], aocl_mmd_read, 1);
1291-
ADD_STATIC_FN_TO_HAL(internal_mmd_dispatch[0], aocl_mmd_write, 1);
1292-
ADD_STATIC_FN_TO_HAL(internal_mmd_dispatch[0], aocl_mmd_copy, 1);
1293-
ADD_STATIC_FN_TO_HAL(internal_mmd_dispatch[0], aocl_mmd_reprogram, 0);
1294-
ADD_STATIC_FN_TO_HAL(internal_mmd_dispatch[0], aocl_mmd_shared_mem_alloc,
1295-
0);
1296-
ADD_STATIC_FN_TO_HAL(internal_mmd_dispatch[0], aocl_mmd_shared_mem_free, 0);
1297-
ADD_STATIC_FN_TO_HAL(internal_mmd_dispatch[0], aocl_mmd_hostchannel_create,
1298-
0);
1299-
ADD_STATIC_FN_TO_HAL(internal_mmd_dispatch[0], aocl_mmd_hostchannel_destroy,
1300-
0);
1301-
ADD_STATIC_FN_TO_HAL(internal_mmd_dispatch[0],
1302-
aocl_mmd_hostchannel_get_buffer, 0);
1303-
ADD_STATIC_FN_TO_HAL(internal_mmd_dispatch[0],
1304-
aocl_mmd_hostchannel_ack_buffer, 0);
1305-
ADD_STATIC_FN_TO_HAL(internal_mmd_dispatch[0], aocl_mmd_program, 0);
1306-
ADD_STATIC_FN_TO_HAL(internal_mmd_dispatch[0], aocl_mmd_host_alloc, 0);
1307-
ADD_STATIC_FN_TO_HAL(internal_mmd_dispatch[0], aocl_mmd_free, 0);
1308-
ADD_STATIC_FN_TO_HAL(internal_mmd_dispatch[0], aocl_mmd_shared_alloc, 0);
1272+
acl_mmd_dispatch_t &dispatch = internal_mmd_dispatch[0];
1273+
1274+
dispatch.library_name = "runtime_static";
1275+
dispatch.mmd_library = nullptr;
1276+
1277+
dispatch.aocl_mmd_get_offline_info = aocl_mmd_get_offline_info;
1278+
1279+
ADD_STATIC_FN_TO_HAL(dispatch, aocl_mmd_get_offline_info, 1);
1280+
ADD_STATIC_FN_TO_HAL(dispatch, aocl_mmd_get_info, 1);
1281+
ADD_STATIC_FN_TO_HAL(dispatch, aocl_mmd_open, 1);
1282+
ADD_STATIC_FN_TO_HAL(dispatch, aocl_mmd_close, 1);
1283+
ADD_STATIC_FN_TO_HAL(dispatch, aocl_mmd_set_interrupt_handler, 1);
1284+
ADD_STATIC_FN_TO_HAL(dispatch, aocl_mmd_set_device_interrupt_handler, 0);
1285+
ADD_STATIC_FN_TO_HAL(dispatch, aocl_mmd_set_status_handler, 1);
1286+
ADD_STATIC_FN_TO_HAL(dispatch, aocl_mmd_yield, 1);
1287+
ADD_STATIC_FN_TO_HAL(dispatch, aocl_mmd_read, 1);
1288+
ADD_STATIC_FN_TO_HAL(dispatch, aocl_mmd_write, 1);
1289+
ADD_STATIC_FN_TO_HAL(dispatch, aocl_mmd_copy, 1);
1290+
ADD_STATIC_FN_TO_HAL(dispatch, aocl_mmd_reprogram, 0);
1291+
ADD_STATIC_FN_TO_HAL(dispatch, aocl_mmd_shared_mem_alloc, 0);
1292+
ADD_STATIC_FN_TO_HAL(dispatch, aocl_mmd_shared_mem_free, 0);
1293+
ADD_STATIC_FN_TO_HAL(dispatch, aocl_mmd_hostchannel_create, 0);
1294+
ADD_STATIC_FN_TO_HAL(dispatch, aocl_mmd_hostchannel_destroy, 0);
1295+
ADD_STATIC_FN_TO_HAL(dispatch, aocl_mmd_hostchannel_get_buffer, 0);
1296+
ADD_STATIC_FN_TO_HAL(dispatch, aocl_mmd_hostchannel_ack_buffer, 0);
1297+
ADD_STATIC_FN_TO_HAL(dispatch, aocl_mmd_program, 0);
1298+
ADD_STATIC_FN_TO_HAL(dispatch, aocl_mmd_host_alloc, 0);
1299+
ADD_STATIC_FN_TO_HAL(dispatch, aocl_mmd_free, 0);
1300+
ADD_STATIC_FN_TO_HAL(dispatch, aocl_mmd_shared_alloc, 0);
13091301
} else if (_libraries_to_load) {
13101302
for (auto ipass = 0; ipass < 2; ++ipass) {
13111303
cl_bool load_libraries;
@@ -1353,21 +1345,21 @@ acl_mmd_get_system_definition(acl_system_def_t *sys,
13531345
sys->num_devices = 0;
13541346
num_physical_devices = 0;
13551347
for (unsigned iboard = 0; iboard < num_board_pkgs; ++iboard) {
1356-
internal_mmd_dispatch[iboard].aocl_mmd_get_offline_info(
1357-
AOCL_MMD_VERSION, sizeof(buf), buf, NULL);
1348+
acl_mmd_dispatch_t &dispatch = internal_mmd_dispatch[iboard];
1349+
1350+
dispatch.aocl_mmd_get_offline_info(AOCL_MMD_VERSION, sizeof(buf), buf,
1351+
NULL);
13581352
buf[sizeof(buf) - 1] = 0;
1359-
internal_mmd_dispatch[iboard].mmd_version = atof(buf);
1353+
dispatch.mmd_version = atof(buf);
13601354
min_MMD_version =
1361-
(!MMDVERSION_LESSTHAN(min_MMD_version,
1362-
internal_mmd_dispatch[iboard].mmd_version))
1363-
? internal_mmd_dispatch[iboard].mmd_version
1355+
(!MMDVERSION_LESSTHAN(min_MMD_version, dispatch.mmd_version))
1356+
? dispatch.mmd_version
13641357
: min_MMD_version;
13651358
ACL_HAL_DEBUG_MSG_VERBOSE(1, "HAL : Getting info version: %s\n", buf);
13661359

1367-
if (MMDVERSION_LESSTHAN(
1368-
atof(AOCL_MMD_VERSION_STRING),
1369-
internal_mmd_dispatch[iboard].mmd_version) || // MMD newer than HAL
1370-
MMDVERSION_LESSTHAN(internal_mmd_dispatch[iboard].mmd_version,
1360+
if (MMDVERSION_LESSTHAN(atof(AOCL_MMD_VERSION_STRING),
1361+
dispatch.mmd_version) || // MMD newer than HAL
1362+
MMDVERSION_LESSTHAN(dispatch.mmd_version,
13711363
14.0)) // Before this wasn't forward compatible
13721364
{
13731365
printf(" Runtime version: %s\n", AOCL_MMD_VERSION_STRING);
@@ -1381,22 +1373,22 @@ acl_mmd_get_system_definition(acl_system_def_t *sys,
13811373

13821374
// Dump offline info
13831375
if (debug_verbosity > 0) {
1384-
internal_mmd_dispatch[iboard].aocl_mmd_get_offline_info(
1385-
AOCL_MMD_VENDOR_NAME, sizeof(buf), buf, NULL);
1376+
dispatch.aocl_mmd_get_offline_info(AOCL_MMD_VENDOR_NAME, sizeof(buf), buf,
1377+
NULL);
13861378
buf[sizeof(buf) - 1] = 0;
13871379
ACL_HAL_DEBUG_MSG_VERBOSE(1, "HAL : Getting info vendor: %s\n", buf);
1388-
internal_mmd_dispatch[iboard].aocl_mmd_get_offline_info(
1389-
AOCL_MMD_NUM_BOARDS, sizeof(int), &num_boards, NULL);
1380+
dispatch.aocl_mmd_get_offline_info(AOCL_MMD_NUM_BOARDS, sizeof(int),
1381+
&num_boards, NULL);
13901382
ACL_HAL_DEBUG_MSG_VERBOSE(1, "HAL : Getting info num_boards: %d\n",
13911383
num_boards);
1392-
internal_mmd_dispatch[iboard].aocl_mmd_get_offline_info(
1393-
AOCL_MMD_BOARD_NAMES, sizeof(buf), buf, NULL);
1384+
dispatch.aocl_mmd_get_offline_info(AOCL_MMD_BOARD_NAMES, sizeof(buf), buf,
1385+
NULL);
13941386
buf[sizeof(buf) - 1] = 0;
13951387
ACL_HAL_DEBUG_MSG_VERBOSE(1, "HAL : Getting info boards: %s\n", buf);
13961388
}
13971389

1398-
internal_mmd_dispatch[iboard].aocl_mmd_get_offline_info(
1399-
AOCL_MMD_BOARD_NAMES, MAX_BOARD_NAMES_LEN, buf, NULL);
1390+
dispatch.aocl_mmd_get_offline_info(AOCL_MMD_BOARD_NAMES,
1391+
MAX_BOARD_NAMES_LEN, buf, NULL);
14001392
buf[MAX_BOARD_NAMES_LEN - 1] = 0;
14011393
// Probe the platform devices by going through all the possibilities in the
14021394
// semicolon delimited list
@@ -1425,15 +1417,17 @@ int acl_hal_mmd_try_devices(cl_uint num_devices, const cl_device_id *devices,
14251417
// names might get cached by various routines
14261418

14271419
for (unsigned iboard = 0; iboard < num_board_pkgs; ++iboard) {
1428-
internal_mmd_dispatch[iboard].aocl_mmd_get_offline_info(
1429-
AOCL_MMD_BOARD_NAMES, MAX_BOARD_NAMES_LEN, buf, NULL);
1420+
acl_mmd_dispatch_t &dispatch = internal_mmd_dispatch[iboard];
1421+
1422+
dispatch.aocl_mmd_get_offline_info(AOCL_MMD_BOARD_NAMES,
1423+
MAX_BOARD_NAMES_LEN, buf, NULL);
14301424
buf[MAX_BOARD_NAMES_LEN - 1] = 0; // ensure it's null terminated
14311425

14321426
// query for the polling/interrupt mode for each bsp
14331427
int uses_yield = 0;
1434-
if (!MMDVERSION_LESSTHAN(internal_mmd_dispatch[iboard].mmd_version, 14.1)) {
1435-
internal_mmd_dispatch[iboard].aocl_mmd_get_offline_info(
1436-
AOCL_MMD_USES_YIELD, sizeof(int), &uses_yield, NULL);
1428+
if (!MMDVERSION_LESSTHAN(dispatch.mmd_version, 14.1)) {
1429+
dispatch.aocl_mmd_get_offline_info(AOCL_MMD_USES_YIELD, sizeof(int),
1430+
&uses_yield, NULL);
14371431
}
14381432
// Probe the platform devices by going through all the possibilities in the
14391433
// semicolon delimited list
@@ -1445,8 +1439,7 @@ int acl_hal_mmd_try_devices(cl_uint num_devices, const cl_device_id *devices,
14451439
if (devices[idevice] == &(platform->device[physical_device_id])) {
14461440
if (devices[idevice]->opened_count == 0) {
14471441
if (l_try_device(physical_device_id, ptr,
1448-
platform->initial_board_def,
1449-
&(internal_mmd_dispatch[iboard]))) {
1442+
platform->initial_board_def, &dispatch)) {
14501443
ACL_HAL_DEBUG_MSG_VERBOSE(1, "Device: %s device is available\n",
14511444
ptr);
14521445
if (uses_yield_ref != -1 && uses_yield != uses_yield_ref) {
@@ -1466,8 +1459,7 @@ int acl_hal_mmd_try_devices(cl_uint num_devices, const cl_device_id *devices,
14661459
// Enable yield function. In 14.0 this function was never
14671460
// called, in 14.1 it is called only if the offline attribute is
14681461
// set.
1469-
if (!MMDVERSION_LESSTHAN(
1470-
internal_mmd_dispatch[iboard].mmd_version, 14.1)) {
1462+
if (!MMDVERSION_LESSTHAN(dispatch.mmd_version, 14.1)) {
14711463
((acl_hal_t *)acl_get_hal())->yield = acl_hal_mmd_yield;
14721464
}
14731465
}
@@ -1495,9 +1487,10 @@ int acl_hal_mmd_try_devices(cl_uint num_devices, const cl_device_id *devices,
14951487
physical_device_id = 0;
14961488

14971489
for (unsigned iboard = 0; iboard < num_board_pkgs; ++iboard) {
1490+
acl_mmd_dispatch_t &dispatch = internal_mmd_dispatch[iboard];
14981491

1499-
internal_mmd_dispatch[iboard].aocl_mmd_get_offline_info(
1500-
AOCL_MMD_BOARD_NAMES, MAX_BOARD_NAMES_LEN, buf, NULL);
1492+
dispatch.aocl_mmd_get_offline_info(AOCL_MMD_BOARD_NAMES,
1493+
MAX_BOARD_NAMES_LEN, buf, NULL);
15011494
buf[MAX_BOARD_NAMES_LEN - 1] = 0; // ensure it's null terminated
15021495

15031496
// Probe the platform devices by going through all the possibilities in the
@@ -1515,8 +1508,7 @@ int acl_hal_mmd_try_devices(cl_uint num_devices, const cl_device_id *devices,
15151508
for (idevice = 0; idevice < num_devices; idevice++) {
15161509
if (devices[idevice] == &(platform->device[physical_device_id])) {
15171510
if (devices[idevice]->opened_count == 1) { // we just opened it
1518-
l_close_device(physical_device_id,
1519-
&(internal_mmd_dispatch[iboard]));
1511+
l_close_device(physical_device_id, &dispatch);
15201512
}
15211513
devices[idevice]->opened_count--;
15221514
}

0 commit comments

Comments
 (0)