2007-07-27 20:32:47 +04:00
|
|
|
/*
|
|
|
|
* Copyright 2003-2007, Haiku, Inc. All Rights Reserved.
|
|
|
|
* Distributed under the terms of the MIT License.
|
|
|
|
*
|
|
|
|
* Authors:
|
|
|
|
* Ingo Weinhold <bonefish@cs.tu-berlin.de>
|
|
|
|
*/
|
2003-06-10 03:04:54 +04:00
|
|
|
#ifndef _K_PARTITIONING_DISK_DEVICE_SYSTEM_H
|
|
|
|
#define _K_PARTITIONING_DISK_DEVICE_SYSTEM_H
|
|
|
|
|
|
|
|
#include "KDiskSystem.h"
|
|
|
|
|
2007-11-05 03:42:47 +03:00
|
|
|
|
2003-06-12 02:00:59 +04:00
|
|
|
struct partition_module_info;
|
|
|
|
|
2007-11-05 03:42:47 +03:00
|
|
|
|
2003-06-10 03:04:54 +04:00
|
|
|
namespace BPrivate {
|
|
|
|
namespace DiskDevice {
|
|
|
|
|
2007-11-05 03:42:47 +03:00
|
|
|
|
2007-07-27 16:12:35 +04:00
|
|
|
/**
|
|
|
|
* \brief Wrapper for the C interface of a partitioning system add-on.
|
|
|
|
*
|
|
|
|
* See \ref ddm_modules.h for better description of the interface.
|
|
|
|
*/
|
2003-06-11 02:40:09 +04:00
|
|
|
class KPartitioningSystem : public KDiskSystem {
|
|
|
|
public:
|
2007-11-05 03:42:47 +03:00
|
|
|
KPartitioningSystem(const char* name);
|
|
|
|
virtual ~KPartitioningSystem();
|
2003-06-10 03:04:54 +04:00
|
|
|
|
2007-11-05 03:42:47 +03:00
|
|
|
virtual status_t Init();
|
2003-06-12 02:00:59 +04:00
|
|
|
|
2003-06-10 03:04:54 +04:00
|
|
|
// Scanning
|
|
|
|
|
2007-11-05 03:42:47 +03:00
|
|
|
virtual float Identify(KPartition* partition, void** cookie);
|
|
|
|
virtual status_t Scan(KPartition* partition, void* cookie);
|
|
|
|
virtual void FreeIdentifyCookie(KPartition* partition,
|
|
|
|
void* cookie);
|
|
|
|
virtual void FreeCookie(KPartition* partition);
|
|
|
|
virtual void FreeContentCookie(KPartition* partition);
|
2003-06-10 03:04:54 +04:00
|
|
|
|
|
|
|
// Writing
|
|
|
|
|
2007-11-05 03:42:47 +03:00
|
|
|
virtual status_t Repair(KPartition* partition, bool checkOnly,
|
|
|
|
disk_job_id job);
|
|
|
|
virtual status_t Resize(KPartition* partition, off_t size,
|
|
|
|
disk_job_id job);
|
|
|
|
virtual status_t ResizeChild(KPartition* child, off_t size,
|
|
|
|
disk_job_id job);
|
|
|
|
virtual status_t Move(KPartition* partition, off_t offset,
|
|
|
|
disk_job_id job);
|
|
|
|
virtual status_t MoveChild(KPartition* child, off_t offset,
|
|
|
|
disk_job_id job);
|
|
|
|
virtual status_t SetName(KPartition* partition, const char* name,
|
|
|
|
disk_job_id job);
|
|
|
|
virtual status_t SetContentName(KPartition* partition,
|
|
|
|
const char* name, disk_job_id job);
|
|
|
|
virtual status_t SetType(KPartition* partition, const char* type,
|
|
|
|
disk_job_id job);
|
|
|
|
virtual status_t SetParameters(KPartition* partition,
|
|
|
|
const char* parameters, disk_job_id job);
|
|
|
|
virtual status_t SetContentParameters(KPartition* partition,
|
|
|
|
const char* parameters, disk_job_id job);
|
|
|
|
virtual status_t Initialize(KPartition* partition,
|
|
|
|
const char* name, const char* parameters,
|
|
|
|
disk_job_id job);
|
|
|
|
virtual status_t CreateChild(KPartition* partition, off_t offset,
|
|
|
|
off_t size, const char* type,
|
|
|
|
const char* name, const char* parameters,
|
|
|
|
disk_job_id job, KPartition** child = NULL,
|
|
|
|
partition_id childID = -1);
|
|
|
|
virtual status_t DeleteChild(KPartition* child, disk_job_id job);
|
2003-06-11 02:40:09 +04:00
|
|
|
|
|
|
|
protected:
|
2007-11-05 03:42:47 +03:00
|
|
|
virtual status_t LoadModule();
|
|
|
|
virtual void UnloadModule();
|
2003-06-11 02:40:09 +04:00
|
|
|
|
|
|
|
private:
|
2007-11-05 03:42:47 +03:00
|
|
|
partition_module_info* fModule;
|
2003-06-10 03:04:54 +04:00
|
|
|
};
|
|
|
|
|
2007-11-05 03:42:47 +03:00
|
|
|
|
2003-06-10 03:04:54 +04:00
|
|
|
} // namespace DiskDevice
|
|
|
|
} // namespace BPrivate
|
|
|
|
|
|
|
|
using BPrivate::DiskDevice::KPartitioningSystem;
|
|
|
|
|
|
|
|
#endif // _K_PARTITIONING_DISK_DEVICE_SYSTEM_H
|