summaryrefslogtreecommitdiff
path: root/ramdisk.c
diff options
context:
space:
mode:
authorRobert Morris <[email protected]>2019-06-11 09:57:14 -0400
committerRobert Morris <[email protected]>2019-06-11 09:57:14 -0400
commit5753553213df8f9de851adb68377db43faecb91f (patch)
tree3b629ff54897fca414146677532cb459a2ed11ba /ramdisk.c
parent91ba81110acd3163f7de3580b677eece0c57f5e7 (diff)
downloadxv6-labs-5753553213df8f9de851adb68377db43faecb91f.tar.gz
xv6-labs-5753553213df8f9de851adb68377db43faecb91f.tar.bz2
xv6-labs-5753553213df8f9de851adb68377db43faecb91f.zip
separate source into kernel/ user/ mkfs/
Diffstat (limited to 'ramdisk.c')
-rw-r--r--ramdisk.c45
1 files changed, 0 insertions, 45 deletions
diff --git a/ramdisk.c b/ramdisk.c
deleted file mode 100644
index 9901294..0000000
--- a/ramdisk.c
+++ /dev/null
@@ -1,45 +0,0 @@
-//
-// ramdisk that uses the disk image loaded by qemu -rdinit fs.img
-//
-
-#include "types.h"
-#include "riscv.h"
-#include "defs.h"
-#include "param.h"
-#include "memlayout.h"
-#include "spinlock.h"
-#include "sleeplock.h"
-#include "fs.h"
-#include "buf.h"
-
-void
-ramdiskinit(void)
-{
-}
-
-// If B_DIRTY is set, write buf to disk, clear B_DIRTY, set B_VALID.
-// Else if B_VALID is not set, read buf from disk, set B_VALID.
-void
-ramdiskrw(struct buf *b)
-{
- if(!holdingsleep(&b->lock))
- panic("ramdiskrw: buf not locked");
- if((b->flags & (B_VALID|B_DIRTY)) == B_VALID)
- panic("ramdiskrw: nothing to do");
-
- if(b->blockno >= FSSIZE)
- panic("ramdiskrw: blockno too big");
-
- uint64 diskaddr = b->blockno * BSIZE;
- char *addr = (char *)RAMDISK + diskaddr;
-
- if(b->flags & B_DIRTY){
- // write
- memmove(addr, b->data, BSIZE);
- b->flags &= ~B_DIRTY;
- } else {
- // read
- memmove(b->data, addr, BSIZE);
- b->flags |= B_VALID;
- }
-}