b2a4942f56561a6ee3317d06295e98e3ded8001b
[pintos-anon] / src / filesys / file.c
1 #include "file.h"
2
3 #ifdef FILESYS_STUB
4 off_t
5 file_read (struct file *file, void *buffer, off_t size) 
6 {
7   int32_t retval = -1;
8   filesys_stub_send ("s'read' i i", (int32_t) file, (int32_t) size);
9   filesys_stub_receive ("s'read' i", &retval);
10   if (retval > 0) 
11     {
12       if (!filesys_stub_receive ("B", buffer, (size_t) retval))
13         retval = -1;
14     }
15   return retval;
16 }
17
18 off_t
19 file_write (struct file *file, const void *buffer, off_t size) 
20 {
21   int32_t retval = -1;
22   filesys_stub_send ("s'write' i B", (int32_t) file, buffer, (size_t) size);
23   filesys_stub_receive ("s'write' i", &retval);
24   return retval;
25 }
26
27 off_t
28 file_length (struct file *file) 
29 {
30   int32_t length = -1;
31   filesys_stub_send ("s'length' i", (int32_t) file);
32   filesys_stub_receive ("s'length' i", &length);
33   return length;
34 }
35
36 void
37 file_seek (struct file *file, off_t pos) 
38 {
39   filesys_stub_send ("s'seek' i i", (int32_t) file, (int32_t) pos);
40   filesys_stub_receive ("s'seek'");
41 }
42
43 off_t
44 file_tell (struct file *file) 
45 {
46   int32_t pos = -1;
47   filesys_stub_send ("s'tell' i", (int32_t) file);
48   filesys_stub_receive ("s'tell'", &pos);
49   return pos;
50 }
51 #endif /* FILESYS_STUB */