add test and fork

This commit is contained in:
Paul Sajna
2018-03-08 12:24:10 -08:00
parent 33f1033e0e
commit 12833a5a5c
6 changed files with 38 additions and 1 deletions
+4
View File
@@ -62,6 +62,10 @@ pub fn fchdir(fildes: c_int) -> c_int {
e(unsafe { syscall!(FCHDIR, fildes) }) as c_int
}
pub fn fork() -> pid_t {
e(unsafe {syscall!(FORK) }) as pid_t
}
pub fn fsync(fildes: c_int) -> c_int {
e(unsafe { syscall!(FSYNC, fildes) }) as c_int
}
+4
View File
@@ -66,6 +66,10 @@ pub fn fchdir(fd: c_int) -> c_int {
}
}
pub fn fork() -> pid_t {
e(unsafe { syscall::clone(0) }) as pid_t
}
pub fn fsync(fd: c_int) -> c_int {
e(syscall::fsync(fd as usize)) as c_int
}
+1 -1
View File
@@ -140,7 +140,7 @@ pub extern "C" fn fdatasync(fildes: c_int) -> c_int {
#[no_mangle]
pub extern "C" fn fork() -> pid_t {
unimplemented!();
platform::fork()
}
#[no_mangle]
+3
View File
@@ -1,9 +1,11 @@
/alloc
/args
/atoi
/brk
/chdir
/create
/create.out
/ctype
/dup
/dup.out
/error
@@ -15,5 +17,6 @@
/link
/link.out
/math
/pipe
/printf
/write
+3
View File
@@ -1,9 +1,11 @@
BINS=\
alloc \
atoi \
brk \
args \
chdir \
create \
ctype \
dup \
error \
fchdir \
@@ -12,6 +14,7 @@ BINS=\
getid \
link \
math \
pipe \
printf \
write
+23
View File
@@ -0,0 +1,23 @@
//http://www2.cs.uregina.ca/~hamilton/courses/330/notes/unix/pipes/pipes.html
#include <unistd.h>
int main()
{
int pid, pip[2];
char instring[20];
pipe(pip);
pid = fork();
if (pid == 0) /* child : sends message to parent*/
{
/* send 7 characters in the string, including end-of-string */
write(pip[1], "Hi Mom!", 7);
}
else /* parent : receives message from child */
{
/* read from the pipe */
read(pip[0], instring, 7);
}
}