diff options
author | Mikael Olsson <mikael.olsson@arm.com> | 2024-04-04 15:27:50 +0200 |
---|---|---|
committer | Mikael Olsson <mikael.olsson@arm.com> | 2024-04-04 15:27:50 +0200 |
commit | b2f4a2cd2de6647c9e6d6d4db9108a81d4757e33 (patch) | |
tree | c46b88b13549f1e041cf00eb49b010c6578d168b /driver_library/src/ethosu.cpp | |
parent | acbebc6963aeb2cb38341561b7788a52e49c6c3e (diff) | |
download | ethos-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.cpp | 33 |
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; } |