aboutsummaryrefslogtreecommitdiff
path: root/driver_library/src/ethosu.cpp
diff options
context:
space:
mode:
authorMikael Olsson <mikael.olsson@arm.com>2024-04-04 15:27:50 +0200
committerMikael Olsson <mikael.olsson@arm.com>2024-04-04 15:27:50 +0200
commitb2f4a2cd2de6647c9e6d6d4db9108a81d4757e33 (patch)
treec46b88b13549f1e041cf00eb49b010c6578d168b /driver_library/src/ethosu.cpp
parentacbebc6963aeb2cb38341561b7788a52e49c6c3e (diff)
downloadethos-u-linux-driver-stack-b2f4a2cd2de6647c9e6d6d4db9108a81d4757e33.tar.gz
Add IOCTL command names to driver library logging
Currently the driver library will log IOCTL commands as hexadecimal values, which makes it hard to know what command is being logged unless you know the command values. To make this easier, the driver library will now translate the command values into their respective names when logging. Change-Id: I7ef2f411b0261ea7819c1a7a6825422859031a25 Signed-off-by: Mikael Olsson <mikael.olsson@arm.com>
Diffstat (limited to 'driver_library/src/ethosu.cpp')
-rw-r--r--driver_library/src/ethosu.cpp33
1 files changed, 30 insertions, 3 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;
}