Initialize Tizen 2.3
[framework/system/deviced.git] / src / core / device-plugin.c
1 /*
2  *  deviced
3  *
4  * Copyright (c) 2000 - 2013 Samsung Electronics Co., Ltd. All rights reserved.
5  *
6  * Licensed under the Apache License, Version 2.0 (the "License");
7  * you may not use this file except in compliance with the License.
8  * You may obtain a copy of the License at
9  *
10  * http://www.apache.org/licenses/LICENSE-2.0
11  *
12  * Unless required by applicable law or agreed to in writing, software
13  * distributed under the License is distributed on an "AS IS" BASIS,
14  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15  * See the License for the specific language governing permissions and
16  * limitations under the License.
17  */
18
19
20 #include <dlfcn.h>
21 #include <unistd.h>
22
23 #include "log.h"
24 #include "device-plugin.h"
25
26 static void *dlopen_handle;
27
28 int _ss_devman_plugin_init()
29 {
30         char *error;
31
32         dlopen_handle = dlopen(DEVMAN_PLUGIN_PATH, RTLD_NOW);
33         if (!dlopen_handle) {
34                 _E("dlopen() failed");
35                 return -1;
36         }
37
38         const OEM_sys_devman_plugin_interface *(*get_devman_plugin_interface) ();
39         get_devman_plugin_interface = dlsym(dlopen_handle, "OEM_sys_get_devman_plugin_interface");
40         if ((error = dlerror()) != NULL) {
41                 _E("dlsym() failed: %s", error);
42                 dlclose(dlopen_handle);
43                 return -1;
44         }
45
46         plugin_intf = get_devman_plugin_interface();
47         if (!plugin_intf) {
48                 _E("get_devman_plugin_interface() failed");
49                 dlclose(dlopen_handle);
50                 return -1;
51         }
52
53         return 0;
54 }
55
56
57 int _ss_devman_plugin_fini()
58 {
59         if (dlopen_handle) {
60                 dlclose(dlopen_handle);
61         }
62
63         return 0;
64 }
65
66