blob: b8dd3f172fd8e3c079a91f222da9dab44ce3f837 [file] [log] [blame]
David Anderson41175592020-03-20 19:38:28 -07001// Copyright (C) 2020 The Android Open Source Project
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7// http://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14
15#include <memory>
16#include <set>
17#include <string>
18
19#include "devices.h"
20#include "uevent_listener.h"
21
22namespace android {
23namespace init {
24
25class BlockDevInitializer final {
26 public:
27 BlockDevInitializer();
28
29 bool InitDeviceMapper();
David Anderson67cd9f02020-07-08 13:46:50 -070030 bool InitDmUser();
David Anderson41175592020-03-20 19:38:28 -070031 bool InitDevices(std::set<std::string> devices);
32 bool InitDmDevice(const std::string& device);
33
34 private:
35 ListenerAction HandleUevent(const Uevent& uevent, std::set<std::string>* devices);
36
David Anderson67cd9f02020-07-08 13:46:50 -070037 bool InitMiscDevice(const std::string& name);
38
David Anderson41175592020-03-20 19:38:28 -070039 std::unique_ptr<DeviceHandler> device_handler_;
40 UeventListener uevent_listener_;
41};
42
43} // namespace init
44} // namespace android