Import backup from 2004-07-12
This commit is contained in:
1 parent
872d562d6a
commit
dfb71cc759
17 files changed
+717
-30
No files matched your search
@@ -0,0 +1,53 @@
|
||||
|
||||
#include "block/rd.h"
|
||||
#include "kernel.h"
|
||||
|
||||
ramdisk_t ramdisks[256];
|
||||
char rd_refs[256]; //number of references to each ramdisk
|
||||
|
||||
void rd_init()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
int rd_register(byte *ramdisk, u32_t size)
|
||||
{
|
||||
int i;
|
||||
for (i = 0; i < 256; i++)
|
||||
{
|
||||
if (!rd_refs[i])
|
||||
{
|
||||
rd_refs[i]++;
|
||||
ramdisks[i].start = ramdisk;
|
||||
ramdisks[i].size = size;
|
||||
return i;
|
||||
}
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
int rd_remove(minor_t minor)
|
||||
{
|
||||
if (rd_refs[minor] <= 0)
|
||||
return -1;
|
||||
rd_refs[minor]--;
|
||||
if (!rd_refs[minor])
|
||||
free(ramdisks[minor].start);
|
||||
}
|
||||
|
||||
int rd_read_block(minor_t minor, u32_t blockNum, u32_t count, byte *buffer)
|
||||
{
|
||||
if (rd_refs[minor] <= 0)
|
||||
return -1;
|
||||
byte *copyFrom = ramdisks[minor] + (blockNum << 9);
|
||||
if (copyFrom > ramdisks[minor].start + ramdisks[minor].size)
|
||||
return -1;
|
||||
|
||||
}
|
||||
|
||||
int rd_write_block(minor_t minor, u32_t blockNum, u32_t count, byte *buffer)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,21 @@
|
||||
|
||||
|
||||
#ifndef __HOS_RD_H__
|
||||
#define __HOS_RD_H__ __HOS_RD_H__
|
||||
|
||||
#include "kernel.h"
|
||||
#include "devices.h"
|
||||
|
||||
typedef struct {
|
||||
byte *start;
|
||||
u32_t size;
|
||||
} ramdisk_t;
|
||||
|
||||
void rd_init();
|
||||
int rd_register(byte *ramdisk, u32_t size);
|
||||
int rd_remove(minor_t minor);
|
||||
int rd_read_block(minor_t minor, u32_t blockNum, u32_t count, byte *buffer);
|
||||
int rd_write_block(minor_t minor, u32_t blockNum, u32_t count, byte *buffer);
|
||||
|
||||
#endif
|
||||
|
||||
Reference in new issue
Block a user