#ifndef __OS_FS_H
#define __OS_FS_H

#ifdef __cplusplus
extern "C"
{
#endif

#include <sys/types.h>

/*!
 *	\ingroup	kernelu
 *	\defgroup	fs	File System
 *	@{
 */

#define ATTR_READ_ONLY      0x01
#define ATTR_HIDDEN         0x02
#define ATTR_SYSTEM         0x04
#define ATTR_VOLUME_ID      0x08
#define ATTR_DIRECTORY      0x10
#define ATTR_ARCHIVE        0x20
#define ATTR_DEVICE         0x1000
#define ATTR_LINK			0x2000

#ifndef KERNEL

struct request_t;

bool	fsFullPath(const wchar_t* src, wchar_t* dst);
bool	fsRequest(addr_t fd, struct request_t* req, size_t size);
addr_t	fsOpen(const wchar_t* path);
bool	fsClose(addr_t fd);
bool	fsRead(addr_t fd, void* buffer, size_t* length);
bool	fsWrite(addr_t fd, const void* buffer, size_t* length);
bool	fsIoCtl(addr_t fd, dword code, void* params, size_t length);
bool	fsSeek(addr_t fd, qword pos);
qword	fsGetPosition(addr_t fd);
qword	fsGetLength(addr_t fd);

#endif

//@}

#ifdef __cplusplus
}
#endif

#endif