1/* 2 * Copyright 2003-2007, Haiku, Inc. All Rights Reserved. 3 * Distributed under the terms of the MIT License. 4 * 5 * Authors: 6 * Tomas Kucera, kucerat@centrum.cz 7 */ 8 9/*! 10 \file PartitionLocker.h 11 \ingroup intel_module 12 \brief Structures for easy locking and automatic unlocking partitions. 13 */ 14 15#ifndef _PARTITION_LOCKER_H 16#define _PARTITION_LOCKER_H 17 18#include <disk_device_manager.h> 19 20 21class PartitionLocker { 22public: 23 PartitionLocker(partition_id partitionID); 24 ~PartitionLocker(); 25 26 bool IsLocked() const; 27 partition_id PartitionId() const; 28 29protected: 30 const disk_device_data* fDevice; 31 32private: 33 partition_id fPartitionID; 34}; 35 36 37/*! 38 \brief Structure which locks given partition for reading. 39 40 When this structure is going to be destroyed, it automatically unlocks 41 that partition. 42*/ 43class PartitionReadLocker : public PartitionLocker { 44public: 45 PartitionReadLocker(partition_id partitionID); 46 ~PartitionReadLocker(); 47}; 48 49 50/*! 51 \brief Structure which locks given partition for writing. 52 53 When this structure is going to be destroyed, it automatically unlocks 54 that partition. 55*/ 56class PartitionWriteLocker : public PartitionLocker { 57public: 58 PartitionWriteLocker(partition_id partitionID); 59 ~PartitionWriteLocker(); 60}; 61 62 63#endif // _PARTITION_LOCKER_H 64