gitextract_39nrcw17/ ├── .gitignore ├── Chapter-1/ │ └── README.md ├── Chapter-2/ │ └── README.md ├── Chapter-3/ │ └── README.md ├── Chapter-4/ │ └── README.md ├── Chapter-5/ │ └── README.md ├── Chapter-6/ │ └── README.md ├── Chapter-7/ │ └── README.md ├── Chapter-8/ │ └── README.md ├── LICENSE ├── README.md ├── SUMMARY.md ├── chapter9/ │ └── README.md └── src/ ├── Makefile ├── Vagrantfile ├── kernel/ │ ├── Makefile │ ├── arch/ │ │ └── x86/ │ │ ├── Makefile │ │ ├── alloc.cc │ │ ├── architecture.cc │ │ ├── architecture.h │ │ ├── archprocess.h │ │ ├── config.make │ │ ├── io.cc │ │ ├── io.h │ │ ├── linker.ld │ │ ├── start.asm │ │ ├── switch.asm │ │ ├── vmm.cc │ │ ├── vmm.h │ │ ├── x86.cc │ │ ├── x86.h │ │ └── x86int.asm │ ├── config.h │ ├── core/ │ │ ├── Makefile │ │ ├── api/ │ │ │ ├── dev/ │ │ │ │ ├── clock.h │ │ │ │ ├── fb.h │ │ │ │ ├── ioctl.h │ │ │ │ ├── ipc.h │ │ │ │ ├── keyboard.h │ │ │ │ ├── proc.h │ │ │ │ └── tty.h │ │ │ └── kernel/ │ │ │ ├── syscall.h │ │ │ └── syscall_table.h │ │ ├── api.h │ │ ├── api_posix.cc │ │ ├── boot.h │ │ ├── class.cc │ │ ├── device.cc │ │ ├── device.h │ │ ├── elf_loader.cc │ │ ├── elf_loader.h │ │ ├── env.cc │ │ ├── env.h │ │ ├── file.cc │ │ ├── file.h │ │ ├── filesystem.cc │ │ ├── filesystem.h │ │ ├── kernel.cc │ │ ├── kernel.h │ │ ├── keyboard.h │ │ ├── modulelink.cc │ │ ├── modulelink.h │ │ ├── os.h │ │ ├── process.cc │ │ ├── process.h │ │ ├── signal.h │ │ ├── socket.cc │ │ ├── socket.h │ │ ├── syscalls.cc │ │ ├── syscalls.h │ │ ├── system.cc │ │ ├── system.h │ │ ├── user.cc │ │ └── user.h │ ├── modules/ │ │ ├── Makefile │ │ ├── bochsvbe.cc │ │ ├── bochsvbe.h │ │ ├── clock_x86.cc │ │ ├── clock_x86.h │ │ ├── dospartition.cc │ │ ├── dospartition.h │ │ ├── ext2.cc │ │ ├── ext2.h │ │ ├── ide.cc │ │ ├── ide.h │ │ ├── keys.cc │ │ ├── keys.h │ │ ├── module.cc │ │ ├── module.h │ │ ├── modules.conf │ │ ├── null.cc │ │ ├── null.h │ │ ├── stdtty.cc │ │ ├── stdtty.h │ │ ├── x86serial.cc │ │ └── x86serial.h │ └── runtime/ │ ├── Makefile │ ├── alloc.h │ ├── buffer.cc │ ├── buffer.h │ ├── cxx.cc │ ├── itoa.cc │ ├── libc.h │ ├── list.h │ ├── memory.cc │ ├── string.cc │ ├── string.h │ └── types.h ├── sdk/ │ ├── Makefile │ ├── bootdisk/ │ │ ├── bin/ │ │ │ └── .gitkeep │ │ └── boot/ │ │ └── grub/ │ │ ├── grub.conf │ │ ├── menu.lst │ │ ├── stage1 │ │ ├── stage2 │ │ └── stage2_eltorito │ ├── build.mak │ ├── diskimage.sh │ ├── include/ │ │ ├── _ansi.h │ │ ├── alloca.h │ │ ├── arpa/ │ │ │ └── inet.h │ │ ├── assert.h │ │ ├── ctype.h │ │ ├── dirent.h │ │ ├── endian.h │ │ ├── errno.h │ │ ├── fcntl.h │ │ ├── float.h │ │ ├── getopt.h │ │ ├── inttypes.h │ │ ├── limits.h │ │ ├── linker.ld │ │ ├── locale.h │ │ ├── math.h │ │ ├── netinet/ │ │ │ └── in.h │ │ ├── os.h │ │ ├── pwd.h │ │ ├── setjmp.h │ │ ├── signal.h │ │ ├── stdarg.h │ │ ├── stddef.h │ │ ├── stdint.h │ │ ├── stdio.h │ │ ├── stdlib.h │ │ ├── string.h │ │ ├── strings.h │ │ ├── sys/ │ │ │ ├── cdefs.h │ │ │ ├── ioctl.h │ │ │ ├── mman.h │ │ │ ├── mount.h │ │ │ ├── param.h │ │ │ ├── resource.h │ │ │ ├── select.h │ │ │ ├── socket.h │ │ │ ├── stat.h │ │ │ ├── time.h │ │ │ ├── types.h │ │ │ └── wait.h │ │ ├── termios.h │ │ ├── time.h │ │ ├── unistd.h │ │ └── utime.h │ ├── lib/ │ │ └── .gitkeep │ ├── qemu.sh │ └── src/ │ └── libc/ │ ├── Makefile │ ├── arch/ │ │ └── i386/ │ │ ├── getpagesize.c │ │ ├── longjmp.S │ │ ├── math/ │ │ │ ├── e_atan2.S │ │ │ ├── e_exp.S │ │ │ ├── e_fmod.S │ │ │ ├── e_hypot.S │ │ │ ├── e_log.S │ │ │ ├── e_log10.S │ │ │ ├── e_pow.S │ │ │ ├── s_ceil.S │ │ │ ├── s_cos.S │ │ │ ├── s_fabs.S │ │ │ ├── s_finite.S │ │ │ ├── s_floor.S │ │ │ ├── s_frexp.S │ │ │ ├── s_scalbn.S │ │ │ └── s_sin.S │ │ └── setjmp.S │ └── src/ │ ├── closedir.c │ ├── ctype/ │ │ ├── isalnum.c │ │ ├── isalpha.c │ │ ├── isascii.c │ │ ├── isblank.c │ │ ├── iscntrl.c │ │ ├── isdigit.c │ │ ├── isgraph.c │ │ ├── islower.c │ │ ├── isprint.c │ │ ├── ispunct.c │ │ ├── isspace.c │ │ ├── isupper.c │ │ ├── isxdigit.c │ │ ├── toascii.c │ │ ├── tolower.c │ │ └── toupper.c │ ├── fcntl/ │ │ ├── creat.c │ │ ├── fcntl.c │ │ └── open.c │ ├── getopt/ │ │ ├── getopt.c │ │ ├── getopt_int.h │ │ ├── getopt_long.c │ │ └── getopt_long_only.c │ ├── locale/ │ │ ├── localeconv.c │ │ └── setlocale.c │ ├── math/ │ │ ├── s_ldexp.c │ │ └── s_modf.c │ ├── network/ │ │ ├── inet_aton.c │ │ └── inet_ntoa.c │ ├── opendir.c │ ├── os/ │ │ ├── debug.c │ │ ├── ipc.c │ │ ├── module.c │ │ ├── os.c │ │ ├── region.c │ │ ├── semaphore.c │ │ ├── syscall.c │ │ ├── sysinfo.c │ │ └── thread.c │ ├── pwd/ │ │ ├── endpwent.c │ │ ├── getpwent.c │ │ ├── getpwnam.c │ │ ├── getpwuid.c │ │ └── setpwent.c │ ├── readdir.c │ ├── rewinddir.c │ ├── signal/ │ │ ├── kill.c │ │ ├── killpg.c │ │ ├── raise.c │ │ ├── sigaction.c │ │ ├── sigaddset.c │ │ ├── sigdelset.c │ │ ├── sigemptyset.c │ │ ├── sigfillset.c │ │ ├── sigismember.c │ │ ├── signal.c │ │ └── sigprocmask.c │ ├── sscanf.c │ ├── start.c │ ├── stdio/ │ │ ├── clearerr.c │ │ ├── fclose.c │ │ ├── fdopen.c │ │ ├── feof.c │ │ ├── ferror.c │ │ ├── fflush.c │ │ ├── fgetc.c │ │ ├── fgets.c │ │ ├── fileno.c │ │ ├── fopen.c │ │ ├── fpurge.c │ │ ├── fputc.c │ │ ├── fputs.c │ │ ├── fread.c │ │ ├── freopen.c │ │ ├── fseek.c │ │ ├── ftell.c │ │ ├── fwrite.c │ │ ├── getc.c │ │ ├── perror.c │ │ ├── putc.c │ │ ├── putchar.c │ │ ├── puts.c │ │ ├── remove.c │ │ ├── rename.c │ │ ├── rewind.c │ │ ├── setvbuf.c │ │ ├── stdio_internal.c │ │ ├── stdio_internal.h │ │ ├── streams.c │ │ ├── support_bufio.c │ │ ├── support_pf.c │ │ ├── support_supcon.c │ │ └── ungetc.c │ ├── stdlib/ │ │ ├── abort.c │ │ ├── abs.c │ │ ├── atof.c │ │ ├── atoi.c │ │ ├── atol.c │ │ ├── atoll.c │ │ ├── bsearch.c │ │ ├── getenv.c │ │ ├── labs.c │ │ ├── llabs.c │ │ ├── malloc.c │ │ ├── mkstemp.c │ │ ├── mktemp.c │ │ ├── qsort.c │ │ ├── rand.c │ │ ├── random.c │ │ ├── srand.c │ │ ├── srandom.c │ │ ├── strtod.c │ │ ├── strtol.c │ │ ├── strtoll.c │ │ ├── strtoul.c │ │ └── strtoull.c │ ├── string/ │ │ ├── memchr.c │ │ ├── memcmp.c │ │ ├── memcpy.c │ │ ├── memmove.c │ │ ├── memset.c │ │ ├── strcasecmp.c │ │ ├── strcat.c │ │ ├── strchr.c │ │ ├── strcmp.c │ │ ├── strcpy.c │ │ ├── strcspn.c │ │ ├── strdup.c │ │ ├── strerror.c │ │ ├── strlen.c │ │ ├── strncasecmp.c │ │ ├── strncat.c │ │ ├── strncmp.c │ │ ├── strncpy.c │ │ ├── strndup.c │ │ ├── strnlen.c │ │ ├── strpbrk.c │ │ ├── strrchr.c │ │ ├── strsignal.c │ │ ├── strspn.c │ │ ├── strstr.c │ │ ├── strtok.c │ │ └── strtok_r.c │ ├── sys/ │ │ ├── chmod.c │ │ ├── connect.c │ │ ├── fstat.c │ │ ├── ioctl.c │ │ ├── lstat.c │ │ ├── mkdir.c │ │ ├── mount.c │ │ ├── select.c │ │ ├── socket.c │ │ ├── stat.c │ │ ├── stime.c │ │ ├── umask.c │ │ ├── umount.c │ │ ├── utime.c │ │ ├── utimes.c │ │ ├── wait.c │ │ ├── wait3.c │ │ ├── wait4.c │ │ └── waitpid.c │ ├── termios/ │ │ ├── tcflow.c │ │ ├── tcflush.c │ │ ├── tcgetattr.c │ │ ├── tcgetpgrp.c │ │ ├── tcsetattr.c │ │ └── tcsetpgrp.c │ ├── time/ │ │ ├── asctime.c │ │ ├── asctime_r.c │ │ ├── ctime.c │ │ ├── ctime_r.c │ │ ├── gettimeofday.c │ │ ├── gmtime.c │ │ ├── gmtime_r.c │ │ ├── localtime.c │ │ ├── localtime_r.c │ │ ├── mktime.c │ │ ├── nanosleep.c │ │ ├── strftime.c │ │ ├── time.c │ │ ├── time_int.c │ │ ├── time_int.h │ │ └── tzset.c │ ├── trio/ │ │ ├── trio.c │ │ ├── trio.h │ │ ├── triodef.h │ │ ├── trionan.c │ │ ├── trionan.h │ │ ├── triop.h │ │ ├── triostr.c │ │ └── triostr.h │ ├── udivmoddi4.c │ └── unistd/ │ ├── access.c │ ├── alarm.c │ ├── chdir.c │ ├── chown.c │ ├── close.c │ ├── dup.c │ ├── dup2.c │ ├── execlp.c │ ├── execv.c │ ├── execve.c │ ├── execvp.c │ ├── exit.c │ ├── fchdir.c │ ├── fork.c │ ├── fpathconf.c │ ├── ftruncate.c │ ├── getcwd.c │ ├── getdents.c │ ├── getdtablesize.c │ ├── getegid.c │ ├── geteuid.c │ ├── getgid.c │ ├── gethostname.c │ ├── getpgid.c │ ├── getpgrp.c │ ├── getpid.c │ ├── getppid.c │ ├── gettid.c │ ├── getuid.c │ ├── isatty.c │ ├── link.c │ ├── lseek.c │ ├── mmap.c │ ├── pipe.c │ ├── pread.c │ ├── pwrite.c │ ├── read.c │ ├── readlink.c │ ├── rmdir.c │ ├── sbrk.c │ ├── setgid.c │ ├── setpgid.c │ ├── setpgrp.c │ ├── setregid.c │ ├── setreuid.c │ ├── setuid.c │ ├── sleep.c │ ├── symlink.c │ ├── ttyname.c │ ├── unlink.c │ └── write.c └── userland/ ├── Makefile └── helloworld/ ├── Makefile └── main.c