diff options
Diffstat (limited to 'src/examples')
| -rw-r--r-- | src/examples/Makefile | 10 | ||||
| -rw-r--r-- | src/examples/args.c | 12 | ||||
| -rw-r--r-- | src/examples/create.c | 29 | ||||
| -rw-r--r-- | src/examples/read.c | 22 | ||||
| -rw-r--r-- | src/examples/wait.c | 13 |
5 files changed, 86 insertions, 0 deletions
diff --git a/src/examples/Makefile b/src/examples/Makefile index 8bd6ed2..6c7c09d 100644 --- a/src/examples/Makefile +++ b/src/examples/Makefile @@ -8,6 +8,16 @@ PROGS = cat cmp cp echo halt hex-dump ls mcat mcp mkdir pwd rm shell \ sumargv lab2test lab1test lab1test2 pfs pfs_reader pfs_writer dummy longrun \ child parent create-bad printf lab3test1 lab3test2 lab4test1 +PROGS += create read lab3test1 lab4test1 lab3test2 args wait + +create_SRC = create.c +read_SRC = read.c +lab3test1_SRC = lab3test1.c +lab4test1_SRC = lab4test1.c +lab3test2_SRC = lab3test2.c +args_SRC = args.c +wait_SRC = wait.c + # Added test programs printf_SRC = printf.c sumargv_SRC = sumargv.c diff --git a/src/examples/args.c b/src/examples/args.c new file mode 100644 index 0000000..643fb01 --- /dev/null +++ b/src/examples/args.c @@ -0,0 +1,12 @@ +#include <stdio.h> + +int +main (int argc, char **argv) +{ + printf ("hello\n"); + printf ("argc %p: %d\n", &argc, argc); + printf ("argv %p: %p\n", &argv, argv); + for (int i = 0; i < argc; i++) { + printf ("%d: %s\n", i, argv[i]); + } +} diff --git a/src/examples/create.c b/src/examples/create.c new file mode 100644 index 0000000..65be47d --- /dev/null +++ b/src/examples/create.c @@ -0,0 +1,29 @@ +#include <stdio.h> +#include <syscall.h> + +int +main (int argc, char *argv[]) +{ + if (create ("test", 1)) { + printf ("created file\n"); + } else { + printf ("couldn't create file\n"); + } + int fd = open ("test"); // open 2 + printf ("opened file with fd %d\n", fd); + int fd2 = open ("test"); // open 3 + printf ("opened file with fd %d\n", fd2); + close(fd); // close 2 + int fd3 = open ("test"); // open 2 + printf ("opened file with fd %d\n", fd3); + close(fd2); // close 3 + int fd4 = open ("test"); // open 3 + printf ("opened file with fd %d\n", fd4); + close(fd4); // close 3, valid + close(fd3); // close 2, valid + close(fd); // close closed 2, invalid + int fd5 = open ("test"); // open 2 + printf ("opened file with fd %d\n", fd5); + + halt (); +} diff --git a/src/examples/read.c b/src/examples/read.c new file mode 100644 index 0000000..4b50bd8 --- /dev/null +++ b/src/examples/read.c @@ -0,0 +1,22 @@ +#include <stdio.h> +#include <syscall.h> + +int +main (int argc, char *argv[]) +{ + char read_buf[16] = {}; + + int fd = open ("readme"); + if (fd == -1) { + halt (); + } + printf("opened file with fd %d\n", fd); + + int n = read (fd, read_buf, 16); + printf("read %d bytes:\n", n); + printf("###############\n"); + printf("%s\n", read_buf); + + halt(); + return 0; +} diff --git a/src/examples/wait.c b/src/examples/wait.c new file mode 100644 index 0000000..ab0ea90 --- /dev/null +++ b/src/examples/wait.c @@ -0,0 +1,13 @@ +#include <stdio.h> +#include <syscall.h> + +int +main (int argc, char **argv) +{ + printf ("hello\n"); + if (argc != 1) { + int child = exec("wait"); + printf("%d: %d\n", child, wait(child)); + } + exit(1); +} |
