| 816 | } |
| 817 | |
| 818 | hipError_t PlatformState::loadModule(hipModule_t* module, const char* fname, const void* image) { |
| 819 | if (module == nullptr) { |
| 820 | return hipErrorInvalidValue; |
| 821 | } |
| 822 | |
| 823 | hip::DynCO* dynCo = new hip::DynCO(); |
| 824 | hipError_t hip_error = dynCo->loadCodeObject(fname, image); |
| 825 | if (hip_error != hipSuccess) { |
| 826 | delete dynCo; |
| 827 | return hip_error; |
| 828 | } |
| 829 | |
| 830 | *module = dynCo->getModule(); |
| 831 | assert(*module != nullptr); |
| 832 | |
| 833 | amd::ScopedLock lock(lock_); |
| 834 | if (dynCO_map_.find(*module) != dynCO_map_.end()) { |
| 835 | delete dynCo; |
| 836 | return hipErrorAlreadyMapped; |
| 837 | } |
| 838 | dynCO_map_.insert(std::make_pair(*module, dynCo)); |
| 839 | |
| 840 | return hipSuccess; |
| 841 | } |
| 842 | |
| 843 | hipError_t PlatformState::unloadModule(hipModule_t hmod) { |
| 844 | amd::ScopedLock lock(lock_); |
no test coverage detected