1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #include "device/udev_linux/udev1_loader.h"
6 
7 #include "library_loaders/libudev1.h"
8 
9 namespace device {
10 
11 Udev1Loader::Udev1Loader() = default;
12 
13 Udev1Loader::~Udev1Loader() = default;
14 
Init()15 bool Udev1Loader::Init() {
16   if (lib_loader_)
17     return lib_loader_->loaded();
18   lib_loader_.reset(new LibUdev1Loader);
19   return lib_loader_->Load("libudev.so.1");
20 }
21 
udev_device_get_action(udev_device * udev_device)22 const char* Udev1Loader::udev_device_get_action(udev_device* udev_device) {
23   return lib_loader_->udev_device_get_action(udev_device);
24 }
25 
udev_device_get_devnode(udev_device * udev_device)26 const char* Udev1Loader::udev_device_get_devnode(udev_device* udev_device) {
27   return lib_loader_->udev_device_get_devnode(udev_device);
28 }
29 
udev_device_get_devtype(udev_device * udev_device)30 const char* Udev1Loader::udev_device_get_devtype(udev_device* udev_device) {
31   return lib_loader_->udev_device_get_devtype(udev_device);
32 }
33 
udev_device_get_parent(udev_device * udev_device)34 udev_device* Udev1Loader::udev_device_get_parent(udev_device* udev_device) {
35   return lib_loader_->udev_device_get_parent(udev_device);
36 }
37 
udev_device_get_parent_with_subsystem_devtype(udev_device * udev_device,const char * subsystem,const char * devtype)38 udev_device* Udev1Loader::udev_device_get_parent_with_subsystem_devtype(
39     udev_device* udev_device,
40     const char* subsystem,
41     const char* devtype) {
42   return lib_loader_->udev_device_get_parent_with_subsystem_devtype(
43       udev_device, subsystem, devtype);
44 }
45 
udev_device_get_property_value(udev_device * udev_device,const char * key)46 const char* Udev1Loader::udev_device_get_property_value(
47     udev_device* udev_device,
48     const char* key) {
49   return lib_loader_->udev_device_get_property_value(udev_device, key);
50 }
51 
udev_device_get_subsystem(udev_device * udev_device)52 const char* Udev1Loader::udev_device_get_subsystem(udev_device* udev_device) {
53   return lib_loader_->udev_device_get_subsystem(udev_device);
54 }
55 
udev_device_get_sysattr_value(udev_device * udev_device,const char * sysattr)56 const char* Udev1Loader::udev_device_get_sysattr_value(udev_device* udev_device,
57                                                        const char* sysattr) {
58   return lib_loader_->udev_device_get_sysattr_value(udev_device, sysattr);
59 }
60 
udev_device_get_sysname(udev_device * udev_device)61 const char* Udev1Loader::udev_device_get_sysname(udev_device* udev_device) {
62   return lib_loader_->udev_device_get_sysname(udev_device);
63 }
64 
udev_device_get_syspath(udev_device * udev_device)65 const char* Udev1Loader::udev_device_get_syspath(udev_device* udev_device) {
66   return lib_loader_->udev_device_get_syspath(udev_device);
67 }
68 
udev_device_new_from_devnum(udev * udev,char type,dev_t devnum)69 udev_device* Udev1Loader::udev_device_new_from_devnum(udev* udev,
70                                                       char type,
71                                                       dev_t devnum) {
72   return lib_loader_->udev_device_new_from_devnum(udev, type, devnum);
73 }
74 
udev_device_new_from_subsystem_sysname(udev * udev,const char * subsystem,const char * sysname)75 udev_device* Udev1Loader::udev_device_new_from_subsystem_sysname(
76     udev* udev,
77     const char* subsystem,
78     const char* sysname) {
79   return lib_loader_->udev_device_new_from_subsystem_sysname(
80       udev, subsystem, sysname);
81 }
82 
udev_device_new_from_syspath(udev * udev,const char * syspath)83 udev_device* Udev1Loader::udev_device_new_from_syspath(udev* udev,
84                                                        const char* syspath) {
85   return lib_loader_->udev_device_new_from_syspath(udev, syspath);
86 }
87 
udev_device_unref(udev_device * udev_device)88 void Udev1Loader::udev_device_unref(udev_device* udev_device) {
89   lib_loader_->udev_device_unref(udev_device);
90 }
91 
udev_enumerate_add_match_subsystem(udev_enumerate * udev_enumerate,const char * subsystem)92 int Udev1Loader::udev_enumerate_add_match_subsystem(
93     udev_enumerate* udev_enumerate,
94     const char* subsystem) {
95   return lib_loader_->udev_enumerate_add_match_subsystem(udev_enumerate,
96                                                          subsystem);
97 }
98 
udev_enumerate_get_list_entry(udev_enumerate * udev_enumerate)99 udev_list_entry* Udev1Loader::udev_enumerate_get_list_entry(
100     udev_enumerate* udev_enumerate) {
101   return lib_loader_->udev_enumerate_get_list_entry(udev_enumerate);
102 }
103 
udev_enumerate_new(udev * udev)104 udev_enumerate* Udev1Loader::udev_enumerate_new(udev* udev) {
105   return lib_loader_->udev_enumerate_new(udev);
106 }
107 
udev_enumerate_scan_devices(udev_enumerate * udev_enumerate)108 int Udev1Loader::udev_enumerate_scan_devices(udev_enumerate* udev_enumerate) {
109   return lib_loader_->udev_enumerate_scan_devices(udev_enumerate);
110 }
111 
udev_enumerate_unref(udev_enumerate * udev_enumerate)112 void Udev1Loader::udev_enumerate_unref(udev_enumerate* udev_enumerate) {
113   lib_loader_->udev_enumerate_unref(udev_enumerate);
114 }
115 
udev_list_entry_get_next(udev_list_entry * list_entry)116 udev_list_entry* Udev1Loader::udev_list_entry_get_next(
117     udev_list_entry* list_entry) {
118   return lib_loader_->udev_list_entry_get_next(list_entry);
119 }
120 
udev_list_entry_get_name(udev_list_entry * list_entry)121 const char* Udev1Loader::udev_list_entry_get_name(udev_list_entry* list_entry) {
122   return lib_loader_->udev_list_entry_get_name(list_entry);
123 }
124 
udev_monitor_enable_receiving(udev_monitor * udev_monitor)125 int Udev1Loader::udev_monitor_enable_receiving(udev_monitor* udev_monitor) {
126   return lib_loader_->udev_monitor_enable_receiving(udev_monitor);
127 }
128 
udev_monitor_filter_add_match_subsystem_devtype(udev_monitor * udev_monitor,const char * subsystem,const char * devtype)129 int Udev1Loader::udev_monitor_filter_add_match_subsystem_devtype(
130     udev_monitor* udev_monitor,
131     const char* subsystem,
132     const char* devtype) {
133   return lib_loader_->udev_monitor_filter_add_match_subsystem_devtype(
134       udev_monitor, subsystem, devtype);
135 }
136 
udev_monitor_get_fd(udev_monitor * udev_monitor)137 int Udev1Loader::udev_monitor_get_fd(udev_monitor* udev_monitor) {
138   return lib_loader_->udev_monitor_get_fd(udev_monitor);
139 }
140 
udev_monitor_new_from_netlink(udev * udev,const char * name)141 udev_monitor* Udev1Loader::udev_monitor_new_from_netlink(udev* udev,
142                                                          const char* name) {
143   return lib_loader_->udev_monitor_new_from_netlink(udev, name);
144 }
145 
udev_monitor_receive_device(udev_monitor * udev_monitor)146 udev_device* Udev1Loader::udev_monitor_receive_device(
147     udev_monitor* udev_monitor) {
148   return lib_loader_->udev_monitor_receive_device(udev_monitor);
149 }
150 
udev_monitor_unref(udev_monitor * udev_monitor)151 void Udev1Loader::udev_monitor_unref(udev_monitor* udev_monitor) {
152   lib_loader_->udev_monitor_unref(udev_monitor);
153 }
154 
udev_new()155 udev* Udev1Loader::udev_new() {
156   return lib_loader_->udev_new();
157 }
158 
udev_set_log_fn(struct udev * udev,void (* log_fn)(struct udev * udev,int priority,const char * file,int line,const char * fn,const char * format,va_list args))159 void Udev1Loader::udev_set_log_fn(
160       struct udev* udev,
161       void (*log_fn)(struct udev* udev, int priority,
162                      const char* file, int line,
163                      const char* fn, const char* format, va_list args)) {
164   return lib_loader_->udev_set_log_fn(udev, log_fn);
165 }
166 
udev_set_log_priority(struct udev * udev,int priority)167 void Udev1Loader::udev_set_log_priority(struct udev* udev, int priority) {
168   return lib_loader_->udev_set_log_priority(udev, priority);
169 }
170 
udev_unref(udev * udev)171 void Udev1Loader::udev_unref(udev* udev) {
172   lib_loader_->udev_unref(udev);
173 }
174 
175 }  // namespace device
176