lseek simulator working

This commit is contained in:
fares
2019-11-18 15:30:51 -05:00
parent 3bc2f449e4
commit f3e2bacee7
6 changed files with 30423 additions and 30126 deletions

View File

@@ -136,13 +136,28 @@ int main (int argc, char **argv) {
printf("\n\n******** Fixing fileio START Native Vecadd running ********\n\n"); printf("\n\n******** Fixing fileio START Native Vecadd running ********\n\n");
FILE *fp;
char buff[1024];
fp = fopen("/home/fares/Desktop/Vortex/simX/reading_data.txt", "r"); FILE *f = fopen("/home/fares/Desktop/Vortex/simX/reading_data.txt", "r");
// fscanf(fp, "%s %s %s %s", buff); fseek(f, 0, SEEK_END);
fgets(buff, 41, (FILE*)fp); int fsize = ftell(f);
printf("1 : %s\n", buff ); fseek(f, 0, SEEK_SET); /* same as rewind(f); */
char *string = (char *) malloc(fsize + 1);
fread(string, 1, fsize, f);
fclose(f);
string[fsize] = 0;
printf("%s", string);
// FILE *fp;
// char buff[1024];
// fp = fopen("/home/fares/Desktop/Vortex/simX/reading_data.txt", "r");
// // fscanf(fp, "%s %s %s %s", buff);
// fgets(buff, 41, (FILE*)fp);
// printf("1 : %s\n", buff );
exit(0); exit(0);

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -95,7 +95,7 @@ void download(char ** ptr, char * drain)
void _close() void _close()
{ {
vx_print_str("Hello from _close\n"); // vx_print_str("Hello from _close\n");
} }
int _fstat(int file, struct stat * st) int _fstat(int file, struct stat * st)
@@ -152,12 +152,35 @@ int _isatty (int file)
return 1; return 1;
} }
void _lseek() int _lseek(int fd, int offset, int whence)
{ {
// vx_print_str("Hello from _lseek\n");
char * write_buffer = (char *) FILE_IO_WRITE;
char * read_buffer = (char *) FILE_IO_READ;
int cmd_id = LSEEK;
upload((char **) &write_buffer, (char *) &cmd_id , sizeof(int));
upload((char **) &write_buffer, (char *) &fd , sizeof(int));
upload((char **) &write_buffer, (char *) &offset , sizeof(int));
upload((char **) &write_buffer, (char *) &whence , sizeof(int));
trap_to_simulator();
int retval;
download((char **) &read_buffer, (char *) &retval);
return retval;
vx_print_str("Hello from _lseek\n");
} }
// void _lseek()
// {
// }
int _read (int file, char *ptr, int len) int _read (int file, char *ptr, int len)
{ {
@@ -250,7 +273,7 @@ void * _sbrk (int nbytes)
void _exit(int val) void _exit(int val)
{ {
vx_print_str("Hello from exit\n"); // vx_print_str("Hello from exit\n");
vx_tmc(0); vx_tmc(0);
} }

View File

@@ -197,7 +197,20 @@ void trap_to_simulator(Warp & c)
case (LSEEK): case (LSEEK):
{ {
cerr << "trap_to_simulator: LSEEK not supported yet\n"; // cerr << "trap_to_simulator: LSEEK not supported yet\n";
int fd;
int offset;
int whence;
download(&read_buffer, (char *) &fd , c);
download(&read_buffer, (char *) &offset , c);
download(&read_buffer, (char *) &whence , c);
int retval = lseek(fd, offset, whence);
upload(&write_buffer, (char *) &retval, sizeof(int), c);
} }
break; break;
case (READ): case (READ):