int main(void) { int fid; int len = 32; char buffer1[32] = "Hello this is first message"; char buffer2[32] = "Hello second message is up"; char buffer3[32] = "Third message coming your way"; char buffer4[32] = "Last but not least, message four"; fid = syscall_open("[pipe]test"); // printf("Fid from read is %d\n", fid); // write one time syscall_seek(fid,0); syscall_write(fid,buffer1,len); // write again syscall_seek(fid,0); syscall_write(fid,buffer2,len); // write again syscall_seek(fid,0); syscall_write(fid,buffer3,len); //try to remove the pipe syscall_delete("[pipe]test"); // write again syscall_seek(fid,0); syscall_write(fid,buffer4,len); return 0; }
void do_syscall(TrapFrame *tf) { int id = tf->eax; switch(id) { case SYS_fork: syscall_fork(tf); break; case SYS_exec: syscall_exec(tf); break; case SYS_exit: syscall_exit(tf); break; case SYS_getpid: syscall_getpid(tf); break; case SYS_waitpid: syscall_waitpid(tf); break; case SYS_puts1: printk((char*)(tf->ebx)); printk(" %d\n", current->pid); break; case SYS_puts: syscall_puts(tf); break; case SYS_read_line: syscall_read_line(tf); break; case SYS_sleep: syscall_sleep(tf); break; case SYS_open: syscall_open(tf); break; case SYS_read: syscall_read(tf); break; case SYS_write: syscall_write(tf); break; case SYS_create: syscall_create(tf); break; case SYS_close: syscall_close(tf); break; case SYS_delete: syscall_delete(tf); break; case SYS_lseek: syscall_lseek(tf); break; case SYS_dup: syscall_dup(tf); break; case SYS_dup2: syscall_dup2(tf); break; case SYS_mkdir: syscall_mkdir(tf); break; case SYS_rmdir: syscall_rmdir(tf); break; case SYS_lsdir: syscall_lsdir(tf); break; case SYS_chdir: syscall_chdir(tf); break; //default: panic("Unknown system call type"); } }
int main(void) { int pipeid; char string[4]; pipeid = syscall_open("[pipe]new"); syscall_read(pipeid, string, 4); syscall_write(1, string, 4); printf("\n"); syscall_delete("[pipe]new"); return 0; }
int cmd_rm(int argc, char** argv) { if (argc < 2) { printf("Usage: rm <files>...\n"); return 1; } int i, ret = 0; for (i = 1; i < argc; i++) { int res = syscall_delete(argv[i]); if (res != 0) { printf("Failed to remove %s, reason %d.\n", argv[i+1], res); ret = 1; } } return ret; }
int main(void) { char file[] = "[arkimedes]hej"; int handle = syscall_open((char const*) &file); char buffer[128]; char buffer2[128]; syscall_read(handle, &buffer, 4); syscall_write(handle, &buffer, 4); syscall_seek(handle, 0); syscall_read(handle, &buffer2, 11); syscall_write(FILEHANDLE_STDOUT, &buffer2, 11); syscall_close(handle); syscall_delete((char const*) &file); char file2[] = "[arkimedes]rasputin"; syscall_create((char const*) &file2, 11); char buffer3[] = "\ngorbatjov\n"; handle = syscall_open((char const*) &file2); syscall_write(handle, &buffer3, 11); int ret_code = syscall_seek(handle, 12); printf("\n%d\n", ret_code); syscall_seek(handle, 0); syscall_read(handle, &buffer3, 11); syscall_write(FILEHANDLE_STDOUT, &buffer3, 11); syscall_close(handle); char file3[] = "[arkimedes]putin"; syscall_create((char const*) &file3, 11); handle = syscall_open((char const*) &file3); char buffer4[] = "\ngorbad\n"; syscall_write(handle, &buffer4, 11); return 0; }
int main() { char buff[20]; syscall_delete(file1); if (syscall_create(file1, 100) < 0) fail("Couldn't create file :(\n"); int fd = syscall_open(file1); if (fd < 0) fail("Couldn't open file :(\n"); printf("Wrote %d bytes\n", syscall_write(fd, "Teststring!\n", 11)); if (syscall_seek(fd, 0) < 0) fail("Couldn't seek :(\n"); printf("Read %d bytes\n", syscall_read(fd, buff, 20)); printf(buff); syscall_halt(); return 0; }