⛏️ index : haiku.git

/*
 * Copyright 2003-2007, Haiku, Inc. All Rights Reserved.
 * Distributed under the terms of the MIT License.
 *
 * Authors:
 *		Tomas Kucera, kucerat@centrum.cz
 */


#include "PartitionLocker.h"


//	#pragma mark - PartitionLocker


PartitionLocker::PartitionLocker(partition_id partitionID)
	:
	fDevice(NULL),
	fPartitionID(partitionID)
{
}


PartitionLocker::~PartitionLocker()
{
}


bool
PartitionLocker::IsLocked() const
{
	return fDevice != NULL;
}


partition_id
PartitionLocker::PartitionId() const
{
	return fPartitionID;
}


//	#pragma mark - PartitionReadLocker


PartitionReadLocker::PartitionReadLocker(partition_id partitionID)
	:
	PartitionLocker(partitionID)
{
	fDevice = read_lock_disk_device(partitionID);
}


PartitionReadLocker::~PartitionReadLocker()
{
	if (IsLocked())
		read_unlock_disk_device(PartitionId());
}


//	#pragma mark - PartitionWriteLocker


PartitionWriteLocker::PartitionWriteLocker(partition_id partitionID)
	:
	PartitionLocker(partitionID)
{
	fDevice = write_lock_disk_device(partitionID);
}


PartitionWriteLocker::~PartitionWriteLocker()
{
	if (IsLocked())
		write_unlock_disk_device(PartitionId());
}