Android-cuttlefish cvd tool
vendor_boot_image_builder.h
Go to the documentation of this file.
1//
2// Copyright (C) 2026 The Android Open Source Project
3//
4// Licensed under the Apache License, Version 2.0 (the "License");
5// you may not use this file except in compliance with the License.
6// You may obtain a copy of the License at
7//
8// http://www.apache.org/licenses/LICENSE-2.0
9//
10// Unless required by applicable law or agreed to in writing, software
11// distributed under the License is distributed on an "AS IS" BASIS,
12// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13// See the License for the specific language governing permissions and
14// limitations under the License.
15
16#pragma once
17
18#include <memory>
19#include <string>
20
22#include "cuttlefish/io/io.h"
24
25namespace cuttlefish {
26
28 public:
29 // https://cs.android.com/android/platform/superproject/main/+/main:system/tools/mkbootimg/mkbootimg.py;l=517;drc=053c389f03f3c14f86b808608ccb5669ff8b887a
30 static constexpr uint32_t kDefaultPageSize = 2048;
31 static constexpr uint32_t kDefaultBaseAddress = 0x10000000;
32 static constexpr uint32_t kDefaultKernelOffset = 0x8000;
33 static constexpr uint32_t kDefaultRamdiskOffset = 0x1000000;
34 static constexpr uint32_t kDefaultTagsOffset = 0x100;
35 static constexpr uint64_t kDefaultDtbOffset = 0x01f00000;
36
39
42
45
46 VendorBootImageBuilder& VendorRamdisk(std::unique_ptr<ReaderSeeker>) &;
47 VendorBootImageBuilder VendorRamdisk(std::unique_ptr<ReaderSeeker>) &&;
48
49 VendorBootImageBuilder& KernelCommandLine(std::string_view) &;
50 VendorBootImageBuilder KernelCommandLine(std::string_view) &&;
51
54
55 VendorBootImageBuilder& Name(std::string_view) &;
56 VendorBootImageBuilder Name(std::string_view) &&;
57
58 VendorBootImageBuilder& Dtb(std::unique_ptr<ReaderSeeker>) &;
59 VendorBootImageBuilder Dtb(std::unique_ptr<ReaderSeeker>) &&;
60
63
64 VendorBootImageBuilder& Bootconfig(std::unique_ptr<ReaderSeeker>) &;
65 VendorBootImageBuilder Bootconfig(std::unique_ptr<ReaderSeeker>) &&;
66
68
69 private:
70 // https://cs.android.com/android/platform/superproject/main/+/main:system/tools/mkbootimg/mkbootimg.py;l=536;drc=053c389f03f3c14f86b808608ccb5669ff8b887a
74 std::unique_ptr<ReaderSeeker> vendor_ramdisk_;
77 std::string name_;
78 std::unique_ptr<ReaderSeeker> dtb_;
80 std::unique_ptr<ReaderSeeker> bootconfig_;
81};
82
83} // namespace cuttlefish
Definition: vendor_boot_image_builder.h:27
uint32_t ramdisk_addr_
Definition: vendor_boot_image_builder.h:73
VendorBootImageBuilder & KernelAddr(uint32_t) &
Definition: vendor_boot_image_builder.cc:52
Result< ConcatReaderSeeker > BuildV4()
Definition: vendor_boot_image_builder.cc:136
std::string kernel_command_line_
Definition: vendor_boot_image_builder.h:75
static constexpr uint64_t kDefaultDtbOffset
Definition: vendor_boot_image_builder.h:35
std::string name_
Definition: vendor_boot_image_builder.h:77
uint32_t tags_addr_
Definition: vendor_boot_image_builder.h:76
static constexpr uint32_t kDefaultBaseAddress
Definition: vendor_boot_image_builder.h:31
VendorBootImageBuilder & Dtb(std::unique_ptr< ReaderSeeker >) &
Definition: vendor_boot_image_builder.cc:108
VendorBootImageBuilder & TagsAddr(uint32_t) &
Definition: vendor_boot_image_builder.cc:92
uint32_t page_size_
Definition: vendor_boot_image_builder.h:71
VendorBootImageBuilder & Name(std::string_view) &
Definition: vendor_boot_image_builder.cc:100
std::unique_ptr< ReaderSeeker > vendor_ramdisk_
Definition: vendor_boot_image_builder.h:74
VendorBootImageBuilder & DtbAddr(uint64_t) &
Definition: vendor_boot_image_builder.cc:118
static constexpr uint32_t kDefaultRamdiskOffset
Definition: vendor_boot_image_builder.h:33
std::unique_ptr< ReaderSeeker > dtb_
Definition: vendor_boot_image_builder.h:78
uint32_t kernel_addr_
Definition: vendor_boot_image_builder.h:72
VendorBootImageBuilder & KernelCommandLine(std::string_view) &
Definition: vendor_boot_image_builder.cc:82
VendorBootImageBuilder & RamdiskAddr(uint32_t) &
Definition: vendor_boot_image_builder.cc:62
static constexpr uint32_t kDefaultKernelOffset
Definition: vendor_boot_image_builder.h:32
VendorBootImageBuilder & VendorRamdisk(std::unique_ptr< ReaderSeeker >) &
Definition: vendor_boot_image_builder.cc:72
static constexpr uint32_t kDefaultTagsOffset
Definition: vendor_boot_image_builder.h:34
VendorBootImageBuilder & Bootconfig(std::unique_ptr< ReaderSeeker >) &
Definition: vendor_boot_image_builder.cc:126
VendorBootImageBuilder & PageSize(uint32_t) &
Definition: vendor_boot_image_builder.cc:44
static constexpr uint32_t kDefaultPageSize
Definition: vendor_boot_image_builder.h:30
uint64_t dtb_addr_
Definition: vendor_boot_image_builder.h:79
std::unique_ptr< ReaderSeeker > bootconfig_
Definition: vendor_boot_image_builder.h:80
Definition: alloc_driver.h:20
tl::expected< T, StackTraceError > Result
Definition: result_type.h:30