aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--driver_library/src/ethosu.cpp33
-rw-r--r--tests/run_inference_test.cpp9
2 files changed, 33 insertions, 9 deletions
diff --git a/driver_library/src/ethosu.cpp b/driver_library/src/ethosu.cpp
index c00f69f..01666d2 100644
--- a/driver_library/src/ethosu.cpp
+++ b/driver_library/src/ethosu.cpp
@@ -42,6 +42,34 @@ std::string driverVersionToString(const EthosU::ethosu_uapi_kernel_driver_versio
return std::to_string(version.major) + "." + std::to_string(version.minor) + "." + std::to_string(version.patch);
}
+std::string cmdToString(unsigned long cmd) {
+ // Needed for the struct types in the macro expansions
+ using namespace EthosU;
+
+ switch (cmd) {
+ case ETHOSU_IOCTL_PING:
+ return "PING";
+ case ETHOSU_IOCTL_CAPABILITIES_REQ:
+ return "CAPABILITIES_REQ";
+ case ETHOSU_IOCTL_DRIVER_VERSION_GET:
+ return "DRIVER_VERSION_GET";
+ case ETHOSU_IOCTL_BUFFER_CREATE:
+ return "BUFFER_CREATE";
+ case ETHOSU_IOCTL_NETWORK_CREATE:
+ return "NETWORK_CREATE";
+ case ETHOSU_IOCTL_NETWORK_INFO:
+ return "NETWORK_INFO";
+ case ETHOSU_IOCTL_INFERENCE_CREATE:
+ return "INFERENCE_CREATE";
+ case ETHOSU_IOCTL_INFERENCE_STATUS:
+ return "INFERENCE_STATUS";
+ case ETHOSU_IOCTL_INFERENCE_CANCEL:
+ return "INFERENCE_CANCEL";
+ default:
+ return std::string("Unknown command: ").append(to_string(cmd));
+ }
+}
+
enum class Severity { Error, Warning, Info, Debug };
class Log {
@@ -105,11 +133,10 @@ const SemanticVersion getLibraryVersion() {
__attribute__((weak)) int eioctl(int fd, unsigned long cmd, void *data = nullptr) {
int ret = ::ioctl(fd, cmd, data);
if (ret < 0) {
- throw EthosU::Exception(string("IOCTL cmd=").append(to_string(cmd) + " failed: " + strerror(errno)).c_str());
+ throw EthosU::Exception(string("IOCTL cmd=").append(cmdToString(cmd) + " failed: " + strerror(errno)).c_str());
}
- Log(Severity::Debug) << "ioctl. fd=" << fd << ", cmd=" << setw(8) << setfill('0') << hex << cmd << ", ret=" << ret
- << endl;
+ Log(Severity::Debug) << "ioctl. fd=" << fd << ", cmd=" << cmdToString(cmd) << ", ret=" << ret << endl;
return ret;
}
diff --git a/tests/run_inference_test.cpp b/tests/run_inference_test.cpp
index 88fc691..5e529e6 100644
--- a/tests/run_inference_test.cpp
+++ b/tests/run_inference_test.cpp
@@ -130,8 +130,7 @@ void testNetworkInfoUnparsableBuffer(const Device &device) {
}
void testNetworkInvalidType(const Device &device) {
- const std::string expected_error =
- std::string("IOCTL cmd=") + std::to_string(ETHOSU_IOCTL_NETWORK_CREATE) + " failed: " + std::strerror(EINVAL);
+ const std::string expected_error = std::string("IOCTL cmd=NETWORK_CREATE") + " failed: " + std::strerror(EINVAL);
struct ethosu_uapi_network_create net_req = {};
net_req.type = ETHOSU_UAPI_NETWORK_INDEX + 1;
try {
@@ -144,8 +143,7 @@ void testNetworkInvalidType(const Device &device) {
}
void testNetworkInvalidDataPtr(const Device &device) {
- const std::string expected_error =
- std::string("IOCTL cmd=") + std::to_string(ETHOSU_IOCTL_NETWORK_CREATE) + " failed: " + std::strerror(EINVAL);
+ const std::string expected_error = std::string("IOCTL cmd=NETWORK_CREATE") + " failed: " + std::strerror(EINVAL);
struct ethosu_uapi_network_create net_req = {};
net_req.type = ETHOSU_UAPI_NETWORK_USER_BUFFER;
net_req.network.data_ptr = 0U;
@@ -160,8 +158,7 @@ void testNetworkInvalidDataPtr(const Device &device) {
}
void testNetworkInvalidDataSize(const Device &device) {
- const std::string expected_error =
- std::string("IOCTL cmd=") + std::to_string(ETHOSU_IOCTL_NETWORK_CREATE) + " failed: " + std::strerror(EINVAL);
+ const std::string expected_error = std::string("IOCTL cmd=NETWORK_CREATE") + " failed: " + std::strerror(EINVAL);
struct ethosu_uapi_network_create net_req = {};
net_req.type = ETHOSU_UAPI_NETWORK_USER_BUFFER;
net_req.network.data_ptr = reinterpret_cast<uintptr_t>(networkModelData);