summaryrefslogtreecommitdiff
path: root/cgpt/CgptManager.h
diff options
context:
space:
mode:
Diffstat (limited to 'cgpt/CgptManager.h')
-rw-r--r--cgpt/CgptManager.h172
1 files changed, 0 insertions, 172 deletions
diff --git a/cgpt/CgptManager.h b/cgpt/CgptManager.h
deleted file mode 100644
index 2dbca6f2..00000000
--- a/cgpt/CgptManager.h
+++ /dev/null
@@ -1,172 +0,0 @@
-// Copyright (c) 2012 The Chromium OS Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef VBOOT_REFERENCE_CGPT_CGPTMANAGER_H_
-#define VBOOT_REFERENCE_CGPT_CGPTMANAGER_H_
-
-#include <string>
-#include "gpt.h"
-
-// This file defines a simple C++ wrapper class interface for the cgpt methods.
-
-// These are the possible error codes that can be returned by the CgptManager.
-typedef enum CgptErrorCode
-{
- kCgptSuccess = 0,
- kCgptNotInitialized = 1,
- kCgptUnknownError = 2,
- kCgptInvalidArgument = 3,
-} CgptErrorCode;
-
-
-// CgptManager exposes methods to manipulate the Guid Partition Table as needed
-// for ChromeOS scenarios.
-class CgptManager {
- public:
- // Default constructor. The Initialize method must be called before
- // any other method can be called on this class.
- CgptManager();
-
- // Destructor. Automatically closes any opened device.
- ~CgptManager();
-
- // Opens the given device_name (e.g. "/dev/sdc") and initializes
- // with the Guid Partition Table of that device. This is the first method
- // that should be called on this class. Otherwise those methods will
- // return kCgptNotInitialized.
- // Returns kCgptSuccess or an appropriate error code.
- // This device is automatically closed when this object is destructed.
- CgptErrorCode Initialize(const std::string& device_name);
-
- // Clears all the existing contents of the GPT and PMBR on the current
- // device.
- CgptErrorCode ClearAll();
-
- // Adds a new partition at the end of the existing partitions
- // with the new label, type, unique Id, offset and size.
- // Returns kCgptSuccess or an appropriate error code.
- CgptErrorCode AddPartition(const std::string& label,
- const Guid& partition_type_guid,
- const Guid& unique_id,
- uint64_t beginning_offset,
- uint64_t num_sectors);
-
- // Populates num_partitions parameter with the number of partitions
- // that are currently on this device and not empty.
- // Returns kCgptSuccess or an appropriate error code.
- CgptErrorCode GetNumNonEmptyPartitions(uint8_t* num_partitions) const;
-
- // Sets the Protective Master Boot Record on this device with the given
- // boot_partition number after populating the MBR with the contents of the
- // given boot_file_name. It also creates a legacy partition if
- // should_create_legacy_partition is true.
- // Note: Strictly speaking, the PMBR is not part of the GPT, but it is
- // included here for ease of use.
- CgptErrorCode SetPmbr(uint32_t boot_partition_number,
- const std::string& boot_file_name,
- bool should_create_legacy_partition);
-
- // Populates boot_partition with the partition number that's set to
- // boot in the PMBR.
- // Returns kCgptSuccess or an appropriate error code.
- CgptErrorCode GetPmbrBootPartitionNumber(uint32_t* boot_partition) const;
-
- // Sets the "successful" attribute of the given kernelPartition to 0 or 1
- // based on the value of is_successful being true (1) or false(0)
- // Returns kCgptSuccess or an appropriate error code.
- CgptErrorCode SetSuccessful(uint32_t partition_number, bool is_successful);
-
- // Populates is_successful to true if the successful attribute in the
- // given kernelPartition is non-zero, or to false if it's zero.
- // Returns kCgptSuccess or an appropriate error code.
- CgptErrorCode GetSuccessful(uint32_t partition_number,
- bool* is_successful) const;
-
- // Sets the "NumTriesLeft" attribute of the given kernelPartition to
- // the given num_tries_left value.
- // Returns kCgptSuccess or an appropriate error code.
- CgptErrorCode SetNumTriesLeft(uint32_t partition_number,
- int num_tries_left);
-
- // Populates the num_tries_left parameter with the value of the
- // NumTriesLeft attribute of the given kernelPartition.
- // Returns kCgptSuccess or an appropriate error code.
- CgptErrorCode GetNumTriesLeft(uint32_t partition_number,
- int* num_tries_left) const;
-
- // Sets the "Priority" attribute of the given kernelPartition to
- // the given priority value.
- // Returns kCgptSuccess or an appropriate error code.
- CgptErrorCode SetPriority(uint32_t partition_number,
- uint8_t priority);
-
- // Populates the priority parameter with the value of the Priority
- // attribute of the given kernelPartition.
- // Returns kCgptSuccess or an appropriate error code.
- CgptErrorCode GetPriority(uint32_t partition_number,
- uint8_t* priority) const;
-
- // Populates the offset parameter with the beginning offset of the
- // given partition.
- // Returns kCgptSuccess or an appropriate error code.
- CgptErrorCode GetBeginningOffset(uint32_t partition_number,
- uint64_t* offset) const;
-
- // Populates the number of sectors in the given partition.
- // Returns kCgptSuccess or an appropriate error code.
- CgptErrorCode GetNumSectors(uint32_t partition_number,
- uint64_t* num_sectors) const;
-
- // Populates the type_id parameter with the partition type id
- // (these are the standard ids for kernel, rootfs, etc.)
- // of the partition corresponding to the given partition_number.
- // Returns kCgptSuccess or an appropriate error code.
- CgptErrorCode GetPartitionTypeId(uint32_t partition_number,
- Guid* type_id) const;
-
- // Populates the unique_id parameter with the Guid that uniquely identifies
- // the given partition_number.
- // Returns kCgptSuccess or an appropriate error code.
- CgptErrorCode GetPartitionUniqueId(uint32_t partition_number,
- Guid* unique_id) const;
-
- // Populates the partition_number parameter with the partition number of
- // the partition which is uniquely identified by the given unique_id.
- // Returns kCgptSuccess or an appropriate error code.
- CgptErrorCode GetPartitionNumberByUniqueId(
- const Guid& unique_id,
- uint32_t* partition_number) const;
-
- // Sets the "Priority" attribute of given kernelPartition to the value
- // specified in higestPriority parameter. In addition, also reduces the
- // priorities of all the other kernel partitions, if necessary, to ensure
- // no other partition has a higher priority. It does preserve the relative
- // ordering among the remaining partitions and doesn't touch the partitions
- // whose priorities are zero.
- // Returns kCgptSuccess or an appropriate error code.
- CgptErrorCode SetHighestPriority(uint32_t partition_number,
- uint8_t highest_priority);
-
- // Same as SetHighestPriority above but works without having to explicitly
- // give a value for highest_priority. The internal implementation figures
- // out the best highest number that needs to be given depending on the
- // existing priorities.
- // Returns kCgptSuccess or an appropriate error code.
- CgptErrorCode SetHighestPriority(uint32_t partition_number);
-
- // Runs the sanity checks on the CGPT and MBR and
- // Returns kCgptSuccess if everything is valid or an appropriate error code
- // if there's anything invalid or if there's any error encountered during
- // the validation.
- CgptErrorCode Validate();
-
- private:
- std::string device_name_;
- bool is_initialized_;
-
- CgptManager(const CgptManager &);
- void operator=(const CgptManager &);
-};
-
-#endif // VBOOT_REFERENCE_CGPT_CGPTMANAGER_H_