projects
/
pintos-anon
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fix gcc inline assembler operand constraints for syscall -- as pushl modifies %esp...
[pintos-anon]
/
src
/
lib
/
user
/
syscall.c
diff --git
a/src/lib/user/syscall.c
b/src/lib/user/syscall.c
index 2485530fc08f053bfd15935480b3474cc0528bf6..c8385bc3364b1eabc57e68bae885fe458537b42a 100644
(file)
--- a/
src/lib/user/syscall.c
+++ b/
src/lib/user/syscall.c
@@
-38,8
+38,8
@@
"pushl %[number]; int $0x30; addl $12, %%esp" \
: "=a" (retval) \
: [number] "i" (NUMBER), \
"pushl %[number]; int $0x30; addl $12, %%esp" \
: "=a" (retval) \
: [number] "i" (NUMBER), \
- [arg0] "
g
" (ARG0), \
- [arg1] "
g
" (ARG1) \
+ [arg0] "
r
" (ARG0), \
+ [arg1] "
r
" (ARG1) \
: "memory"); \
retval; \
})
: "memory"); \
retval; \
})
@@
-54,9
+54,9
@@
"pushl %[number]; int $0x30; addl $16, %%esp" \
: "=a" (retval) \
: [number] "i" (NUMBER), \
"pushl %[number]; int $0x30; addl $16, %%esp" \
: "=a" (retval) \
: [number] "i" (NUMBER), \
- [arg0] "
g
" (ARG0), \
- [arg1] "
g
" (ARG1), \
- [arg2] "
g
" (ARG2) \
+ [arg0] "
r
" (ARG0), \
+ [arg1] "
r
" (ARG1), \
+ [arg2] "
r
" (ARG2) \
: "memory"); \
retval; \
})
: "memory"); \
retval; \
})
@@
-165,9
+165,20
@@
mkdir (const char *dir)
return syscall1 (SYS_MKDIR, dir);
}
return syscall1 (SYS_MKDIR, dir);
}
-void
-lsdir (void)
+bool
+readdir (int fd, char name[READDIR_MAX_LEN + 1])
{
{
-
syscall0 (SYS_LSDIR
);
+
return syscall2 (SYS_READDIR, fd, name
);
}
}
+bool
+isdir (int fd)
+{
+ return syscall1 (SYS_ISDIR, fd);
+}
+
+int
+inumber (int fd)
+{
+ return syscall1 (SYS_INUMBER, fd);
+}