52 lines
1.1 KiB
C
52 lines
1.1 KiB
C
/*
|
|
Copyright (C) 2016-2019 The University of Notre Dame
|
|
This software is distributed under the GNU General Public License.
|
|
See the file LICENSE for details.
|
|
*/
|
|
|
|
/*
|
|
A trivial user level program to try out basic system calls.
|
|
*/
|
|
|
|
#include "library/syscalls.h"
|
|
#include "library/string.h"
|
|
#include "library/user-io.h"
|
|
|
|
int main(int argc, char *argv[])
|
|
{
|
|
uint32_t j = 0;
|
|
syscall_chdir("/");
|
|
printf("got root\n");
|
|
int fd = syscall_open_file("kevin", 2, 0);
|
|
printf("got fd %d\n", fd);
|
|
printf("writing to file...\n");
|
|
for(;;) {
|
|
j++;
|
|
char buffer[100] = "Hello, world! I can write to ";
|
|
char num[5];
|
|
char newline[2] = "\n";
|
|
int n;
|
|
uint_to_string(j, num);
|
|
strcat(buffer, num);
|
|
strcat(buffer, newline);
|
|
n = syscall_object_write(fd, buffer, strlen(buffer));
|
|
if(n < 0)
|
|
break;
|
|
printf("wrote %d chars: %s\n", n, buffer);
|
|
}
|
|
syscall_object_close(fd);
|
|
fd = syscall_open_file("kevin", 1, 0);
|
|
char buffer[1000];
|
|
int n;
|
|
printf("reading file...\n");
|
|
while((n = syscall_object_read(fd, buffer, 999)) > 0) {
|
|
buffer[n] = 0;
|
|
printf("%s");
|
|
flush();
|
|
}
|
|
syscall_object_close(fd);
|
|
syscall_process_exit(0);
|
|
|
|
return 0;
|
|
}
|