+static int __load_drm_library(void)
+{
+ if (drm_lib_handle)
+ return 0;
+
+ drm_lib_handle = dlopen(PATH_LIBDRM_SVC_CORE, RTLD_LAZY);
+ if (!drm_lib_handle) {
+ DBG("Unable to open %s", PATH_LIBDRM_SVC_CORE);
+ return -1;
+ }
+
+ _drm_tizen_generate_license_request =
+ dlsym(drm_lib_handle, "drm_tizen_generate_license_request");
+ if (_drm_tizen_generate_license_request == NULL) {
+ ERR("_drm_tizen_generate_license_request() failed");
+ goto catch;
+ }
+
+ _drm_tizen_register_license =
+ dlsym(drm_lib_handle, "drm_tizen_register_license");
+ if (_drm_tizen_register_license == NULL) {
+ ERR("_register_license() failed");
+ goto catch;
+ }
+
+ _drm_tizen_decrypt_package =
+ dlsym(drm_lib_handle, "drm_tizen_decrypt_package");
+ if (_drm_tizen_decrypt_package == NULL) {
+ ERR("_drm_tizen_decrypt_package() failed");
+ goto catch;
+ }
+
+ return 0;
+catch:
+ if (drm_lib_handle) {
+ dlclose(drm_lib_handle);
+ drm_lib_handle = NULL;
+ }
+ return -1;
+}
+
+static void __unload_drm_library(void)
+{
+ if (drm_lib_handle) {
+ dlclose(drm_lib_handle);
+ drm_lib_handle = NULL;
+ }
+}
+