xref: /haiku/headers/private/kernel/disk_device_manager/KFileDiskDevice.h (revision c06238cbd610f43f577afd234636cbafeacec238)
117750c77SIngo Weinhold // KFileDiskDevice.h
217750c77SIngo Weinhold 
317750c77SIngo Weinhold #ifndef _K_FILE_DISK_DEVICE_H
417750c77SIngo Weinhold #define _K_FILE_DISK_DEVICE_H
517750c77SIngo Weinhold 
617750c77SIngo Weinhold #include <OS.h>
717750c77SIngo Weinhold 
817750c77SIngo Weinhold #include "KDiskDevice.h"
917750c77SIngo Weinhold 
1017750c77SIngo Weinhold namespace BPrivate {
1117750c77SIngo Weinhold namespace DiskDevice {
1217750c77SIngo Weinhold 
1392221d24SIngo Weinhold class KPath;
1492221d24SIngo Weinhold 
1517750c77SIngo Weinhold class KFileDiskDevice : public KDiskDevice {
1617750c77SIngo Weinhold public:
1717750c77SIngo Weinhold 	KFileDiskDevice(partition_id id = -1);
1817750c77SIngo Weinhold 	virtual ~KFileDiskDevice();
1917750c77SIngo Weinhold 
2017750c77SIngo Weinhold 	status_t SetTo(const char *filePath, const char *devicePath = NULL);
2117750c77SIngo Weinhold 	void Unset();
2217750c77SIngo Weinhold 	virtual status_t InitCheck() const;
2317750c77SIngo Weinhold 		// TODO: probably superfluous
2417750c77SIngo Weinhold 
2517750c77SIngo Weinhold 	const char *FilePath() const;
2617750c77SIngo Weinhold 
2717750c77SIngo Weinhold //	virtual void Dump(bool deep = true, int32 level = 0);
2817750c77SIngo Weinhold 
29*c06238cbSIngo Weinhold protected:
30*c06238cbSIngo Weinhold 	virtual status_t GetMediaStatus(status_t *mediaStatus);
31*c06238cbSIngo Weinhold 	virtual status_t GetGeometry(device_geometry *geometry);
32*c06238cbSIngo Weinhold 
33b23394f9SIngo Weinhold private:
3492221d24SIngo Weinhold 	static status_t _GetDirectoryPath(partition_id id, KPath *path);
3592221d24SIngo Weinhold 
36b23394f9SIngo Weinhold 	static status_t _RegisterDevice(const char *file, const char *device);
37b23394f9SIngo Weinhold 	static status_t _UnregisterDevice(const char *device);
3817750c77SIngo Weinhold 
3917750c77SIngo Weinhold private:
4017750c77SIngo Weinhold 	char			*fFilePath;
4117750c77SIngo Weinhold };
4217750c77SIngo Weinhold 
4317750c77SIngo Weinhold } // namespace DiskDevice
4417750c77SIngo Weinhold } // namespace BPrivate
4517750c77SIngo Weinhold 
4617750c77SIngo Weinhold using BPrivate::DiskDevice::KFileDiskDevice;
4717750c77SIngo Weinhold 
4817750c77SIngo Weinhold #endif	// _K_FILE_DISK_DEVICE_H
49