⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 vfsio.c

📁 一个操作系统,用C语言实现开发的,我在一个浙江大学的操作系统实验网站找到.大家学习以下
💻 C
字号:
// VFS IO Layer

#include <vfs.h>
#include <knllib.h>
#include <string.h>
#include <memory.h>
#include "vfsio.h"

long fsioOpen(VFSIODEF *io, const char *dev, int mode)
{
	io->handle = (_u32)vfsOpen(dev, mode);
	return io->handle?ERR_SUCCESS:ERR_INVALID;
}

void fsioClose(IOH handle)
{
	vfsClose((HFILE)handle->handle);
	handle->handle = 0;
}

// device has already been opened
long fsioOpenHandle(VFSIODEF *io, _u32 handle)
{
	io->handle = handle;
	io->sector_size = 512;
	return 0;
}

int fsioIsHandleValid(IOH handle)
{
	return handle && handle->handle;
}

int fsioRead(IOH handle, _u32 pos, void *buf, int num)
{
	long len;
	vfsSeek((HFILE)handle->handle, (_s64)((_u64)pos*handle->sector_size), SEEK_SET);
	len = vfsRead((HFILE)handle->handle, buf, handle->sector_size*num);
	if(len<0) return 0;
	if(len<handle->sector_size*num)
		memset(buf, 0, num*handle->sector_size-len);
	return num;
}

int fsioWrite(IOH handle, _u32 pos, void *buf, int num)
{
	long len;
	vfsSeek((HFILE)handle->handle, (_s64)((_u64)pos*handle->sector_size), SEEK_SET);
	len = vfsWrite((HFILE)handle->handle, buf, handle->sector_size*num);
	return len<0 ? 0 : (len/handle->sector_size);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -