Initialize Tizen 2.3
[framework/system/deviced.git] / src / core / devices.c
1 /*
2  * deviced
3  *
4  * Copyright (c) 2012 - 2013 Samsung Electronics Co., Ltd.
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 <stdio.h>
21
22 #include "log.h"
23 #include "list.h"
24 #include "common.h"
25 #include "devices.h"
26
27 static dd_list *dev_head;
28
29 void add_device(const struct device_ops *dev)
30 {
31         if (dev->priority == DEVICE_PRIORITY_HIGH)
32                 DD_LIST_PREPEND(dev_head, dev);
33         else
34                 DD_LIST_APPEND(dev_head, dev);
35 }
36
37 void remove_device(const struct device_ops *dev)
38 {
39         DD_LIST_REMOVE(dev_head, dev);
40 }
41
42 const struct device_ops *find_device(const char *name)
43 {
44         dd_list *elem;
45         const struct device_ops *dev;
46
47         DD_LIST_FOREACH(dev_head, elem, dev) {
48                 if (!strcmp(dev->name, name))
49                         return dev;
50         }
51         return NULL;
52 }
53
54 void devices_init(void *data)
55 {
56         dd_list *elem;
57         const struct device_ops *dev;
58
59         DD_LIST_FOREACH(dev_head, elem, dev) {
60                 _D("[%s] initialize", dev->name);
61                 if (dev->init)
62                         dev->init(data);
63         }
64 }
65
66 void devices_exit(void *data)
67 {
68         dd_list *elem;
69         const struct device_ops *dev;
70
71         DD_LIST_FOREACH(dev_head, elem, dev) {
72                 _D("[%s] deinitialize", dev->name);
73                 if (dev->exit)
74                         dev->exit(data);
75         }
76 }