| Subject | Value |
|---|---|
| 🏷️Version | 1.1 |
| 🖥️Architecture | x86 |
| 🔢Bit | 64 |
| 📅Start Date | 09.06.2024 |
| 🔄Last Update | 14.09.2025 |
This is a x86 architecture based 64 bit Operating System.
| Feature | Sub-Features / Notes |
|---|---|
| ✅ 🚀Limine Bootloader | Getting Various Boot Information, Getting Firmware Information |
| ✅ ACPI | RSDT, FADT, MADT, MCFG, HPET |
| ✅ CPU Info & Control | CPUID, SMP |
| ✅ GDT | Multi-core support |
| ✅ TSS | Multi-core support |
| ✅ ⚡Interrupts | APIC (Multi-core), PIC, ISR, IRQ |
| ✅ 🧠Memory Management | Memory Info Parsing, 4-Level Paging, PMM, Kmalloc, VMM, KHEAP |
| ✅ ⏱️Timers | TSC, RTC, PIT, APIC, |
| ✅ Multitasking | Process, Thread, Scheduler, CPU State Handling, Multi-core Multitasking |
| ✅ Kernel Shell (kshell) | Calculator, Steam Locomotive Animation |
| ✅ 📂Filesystem | FAT32 (via FatFs, |
| ✅ System Calls | Interrupt-based (Using), MSR-based (Not Using) |
| ✅ User Mode Switching | ELF Loader, Binary Loader, minimal libc,stemcall |
| ✅ 🔌Drivers | 🎴PCI, AHCI SATA Disk, VGA Framebuffer, I/O Ports, Serial, Keyboard, Speaker, Mouse |
- ✅ 📦External Libraries :
- Limine Bootloader - 9.2.3
- x86_64-elf-gcc (GCC) 14.2.0
- GNU ld (GNU Binutils) 2.43
- GNU Make 4.3
- bison (GNU Bison) 3.8.2
- flex 2.6.4
- xorriso 1.5.6
- NASM version 2.16.01
- GNU gdb (Ubuntu 15.0.50.20240403-0ubuntu1) 15.0.50.20240403-git
- FatFs R0.15b Library
- QEMU emulator 8.2.2 (Debian 1:8.2.2+ds-0ubuntu1.9)
- WSL 2.5.10.0
- mkfs util-linux 2.39.3
- parted (GNU parted) 3.6
- sync (GNU coreutils) 9.4
- mount from util-linux 2.39.3 (libmount 2.39.3: selinux, smack, btrfs, verity, namespaces, idmapping, statx, assert, debug)
-
General System Call:
-
int syscall_keyboard_read(uint8_t *buffer, size_t size) -
int syscall_print(const char *msg) -
int syscall_exit() -
int syscall_print_rax() -
uint64_t syscall_uheap_alloc(size_t size, enum allocation_type type); -
uint64_t syscall_uheap_free(void *ptr, size_t size);
-
-
FatFs File Manage:
-
int64_t syscall_vfs_mkfs(int fs_type, char *disk); -
nt64_t syscall_vfs_init(char *fs_name); -
uint64_t syscall_mount(char *path); -
uint64_t syscall_open(const char *path, uint64_t flags); -
uint64_t syscall_close(void *file); -
uint64_t syscall_read(void *file, uint64_t offset, void *buf, uint32_t size); -
uint64_t syscall_write(void *file, uint64_t offset, void *buf, uint32_t btw); -
uint64_t syscall_lseek(void *file, uint32_t offs); -
uint64_t syscall_unlink(char *path);
-
-
FatFs Directory Manage:
uint64_t syscall_opendir(const char *path);uint64_t syscall_closedir(void * dir_ptr);uint64_t syscall_readdir(void * dir_ptr);uint64_t syscall_mkdir(void * dir_ptr);int syscall_list_dir(const char* path);int syscall_getcwd(void *buf, size_t size);int syscall_chdir(const char *path);int syscall_chdrive(const char *path);
-
Process Manage:
void *syscall_create_process(char* process_name);int syscall_delete_process(void *process);void *syscall_get_process_from_pid(size_t pid);void *syscall_get_current_process();
-
Thread Manage:
void *syscall_create_thread(void* parent, const char* thread_name, void (*function)(void*), void* arg);void *syscall_delete_thread(void *thread);
-
Time Manage:
time_t syscall_time(time_t *t);int syscall_clock_gettime(int clk_id, struct timespec *tp);int syscall_gettimeofday(struct timeval *tv, struct timezone *tz);clock_t syscall_times(struct tms *buf);uint64_t syscall_get_uptime(void);
-
VGA:
int syscall_set_pixel(int x, int y, uint32_t color);uint32_t syscall_get_pixel(int x, int y);int syscall_cls_color();int syscall_display_image( int x, int y, const uint64_t* image_data, int img_width, int img_height);int syscall_display_transparent_image( int x, int y, const uint64_t* image_data, int img_width, int img_height);
Before building set GCC , LD, OBJDUMP,
src directory is containing source code. build directory is containing generated object file, binary file and iso file. iso_root is required for building image.iso file.
To build and run by QEmu iso make -B.
To get Make help by make help
Downloaded from here.
© 2025 baponkar. All rights reserved except externel library used.
