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