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_parent(udev_device * udev_device)30 udev_device* Udev1Loader::udev_device_get_parent(udev_device* udev_device) {
31   return lib_loader_->udev_device_get_parent(udev_device);
32 }
33 
udev_device_get_parent_with_subsystem_devtype(udev_device * udev_device,const char * subsystem,const char * devtype)34 udev_device* Udev1Loader::udev_device_get_parent_with_subsystem_devtype(
35     udev_device* udev_device,
36     const char* subsystem,
37     const char* devtype) {
38   return lib_loader_->udev_device_get_parent_with_subsystem_devtype(
39       udev_device, subsystem, devtype);
40 }
41 
udev_device_get_property_value(udev_device * udev_device,const char * key)42 const char* Udev1Loader::udev_device_get_property_value(
43     udev_device* udev_device,
44     const char* key) {
45   return lib_loader_->udev_device_get_property_value(udev_device, key);
46 }
47 
udev_device_get_subsystem(udev_device * udev_device)48 const char* Udev1Loader::udev_device_get_subsystem(udev_device* udev_device) {
49   return lib_loader_->udev_device_get_subsystem(udev_device);
50 }
51 
udev_device_get_sysattr_value(udev_device * udev_device,const char * sysattr)52 const char* Udev1Loader::udev_device_get_sysattr_value(udev_device* udev_device,
53                                                        const char* sysattr) {
54   return lib_loader_->udev_device_get_sysattr_value(udev_device, sysattr);
55 }
56 
udev_device_get_sysname(udev_device * udev_device)57 const char* Udev1Loader::udev_device_get_sysname(udev_device* udev_device) {
58   return lib_loader_->udev_device_get_sysname(udev_device);
59 }
60 
udev_device_get_syspath(udev_device * udev_device)61 const char* Udev1Loader::udev_device_get_syspath(udev_device* udev_device) {
62   return lib_loader_->udev_device_get_syspath(udev_device);
63 }
64 
udev_device_new_from_devnum(udev * udev,char type,dev_t devnum)65 udev_device* Udev1Loader::udev_device_new_from_devnum(udev* udev,
66                                                       char type,
67                                                       dev_t devnum) {
68   return lib_loader_->udev_device_new_from_devnum(udev, type, devnum);
69 }
70 
udev_device_new_from_subsystem_sysname(udev * udev,const char * subsystem,const char * sysname)71 udev_device* Udev1Loader::udev_device_new_from_subsystem_sysname(
72     udev* udev,
73     const char* subsystem,
74     const char* sysname) {
75   return lib_loader_->udev_device_new_from_subsystem_sysname(
76       udev, subsystem, sysname);
77 }
78 
udev_device_new_from_syspath(udev * udev,const char * syspath)79 udev_device* Udev1Loader::udev_device_new_from_syspath(udev* udev,
80                                                        const char* syspath) {
81   return lib_loader_->udev_device_new_from_syspath(udev, syspath);
82 }
83 
udev_device_unref(udev_device * udev_device)84 void Udev1Loader::udev_device_unref(udev_device* udev_device) {
85   lib_loader_->udev_device_unref(udev_device);
86 }
87 
udev_enumerate_add_match_subsystem(udev_enumerate * udev_enumerate,const char * subsystem)88 int Udev1Loader::udev_enumerate_add_match_subsystem(
89     udev_enumerate* udev_enumerate,
90     const char* subsystem) {
91   return lib_loader_->udev_enumerate_add_match_subsystem(udev_enumerate,
92                                                          subsystem);
93 }
94 
udev_enumerate_get_list_entry(udev_enumerate * udev_enumerate)95 udev_list_entry* Udev1Loader::udev_enumerate_get_list_entry(
96     udev_enumerate* udev_enumerate) {
97   return lib_loader_->udev_enumerate_get_list_entry(udev_enumerate);
98 }
99 
udev_enumerate_new(udev * udev)100 udev_enumerate* Udev1Loader::udev_enumerate_new(udev* udev) {
101   return lib_loader_->udev_enumerate_new(udev);
102 }
103 
udev_enumerate_scan_devices(udev_enumerate * udev_enumerate)104 int Udev1Loader::udev_enumerate_scan_devices(udev_enumerate* udev_enumerate) {
105   return lib_loader_->udev_enumerate_scan_devices(udev_enumerate);
106 }
107 
udev_enumerate_unref(udev_enumerate * udev_enumerate)108 void Udev1Loader::udev_enumerate_unref(udev_enumerate* udev_enumerate) {
109   lib_loader_->udev_enumerate_unref(udev_enumerate);
110 }
111 
udev_list_entry_get_next(udev_list_entry * list_entry)112 udev_list_entry* Udev1Loader::udev_list_entry_get_next(
113     udev_list_entry* list_entry) {
114   return lib_loader_->udev_list_entry_get_next(list_entry);
115 }
116 
udev_list_entry_get_name(udev_list_entry * list_entry)117 const char* Udev1Loader::udev_list_entry_get_name(udev_list_entry* list_entry) {
118   return lib_loader_->udev_list_entry_get_name(list_entry);
119 }
120 
udev_monitor_enable_receiving(udev_monitor * udev_monitor)121 int Udev1Loader::udev_monitor_enable_receiving(udev_monitor* udev_monitor) {
122   return lib_loader_->udev_monitor_enable_receiving(udev_monitor);
123 }
124 
udev_monitor_filter_add_match_subsystem_devtype(udev_monitor * udev_monitor,const char * subsystem,const char * devtype)125 int Udev1Loader::udev_monitor_filter_add_match_subsystem_devtype(
126     udev_monitor* udev_monitor,
127     const char* subsystem,
128     const char* devtype) {
129   return lib_loader_->udev_monitor_filter_add_match_subsystem_devtype(
130       udev_monitor, subsystem, devtype);
131 }
132 
udev_monitor_get_fd(udev_monitor * udev_monitor)133 int Udev1Loader::udev_monitor_get_fd(udev_monitor* udev_monitor) {
134   return lib_loader_->udev_monitor_get_fd(udev_monitor);
135 }
136 
udev_monitor_new_from_netlink(udev * udev,const char * name)137 udev_monitor* Udev1Loader::udev_monitor_new_from_netlink(udev* udev,
138                                                          const char* name) {
139   return lib_loader_->udev_monitor_new_from_netlink(udev, name);
140 }
141 
udev_monitor_receive_device(udev_monitor * udev_monitor)142 udev_device* Udev1Loader::udev_monitor_receive_device(
143     udev_monitor* udev_monitor) {
144   return lib_loader_->udev_monitor_receive_device(udev_monitor);
145 }
146 
udev_monitor_unref(udev_monitor * udev_monitor)147 void Udev1Loader::udev_monitor_unref(udev_monitor* udev_monitor) {
148   lib_loader_->udev_monitor_unref(udev_monitor);
149 }
150 
udev_new()151 udev* Udev1Loader::udev_new() {
152   return lib_loader_->udev_new();
153 }
154 
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))155 void Udev1Loader::udev_set_log_fn(
156       struct udev* udev,
157       void (*log_fn)(struct udev* udev, int priority,
158                      const char* file, int line,
159                      const char* fn, const char* format, va_list args)) {
160   return lib_loader_->udev_set_log_fn(udev, log_fn);
161 }
162 
udev_set_log_priority(struct udev * udev,int priority)163 void Udev1Loader::udev_set_log_priority(struct udev* udev, int priority) {
164   return lib_loader_->udev_set_log_priority(udev, priority);
165 }
166 
udev_unref(udev * udev)167 void Udev1Loader::udev_unref(udev* udev) {
168   lib_loader_->udev_unref(udev);
169 }
170 
171 }  // namespace device
172