r3 | A tiny x86_64 kernel written in Rust

 by   Narasimha1997 Rust Version: Current License: MIT

kandi X-RAY | r3 Summary

kandi X-RAY | r3 Summary

r3 is a Rust library. r3 has no bugs, it has no vulnerabilities, it has a Permissive License and it has low support. You can download it from GitHub.

A hobby x86_64 Operating System kernel written in Rust -- with minimal functionalities like preemptive and cooperative multi-tasking, usermode, framebuffer terminal, basic device drivers like -- ATA-PIO (for Disk I/O), PS/2 Keyboard, Serial UART, RTL8139 networking (in progress), file-system built with VFS that supports devfs and ustar, last but not the least - supports somewhat POSIXish basic system calls. The name r3 stands for Revision 3 because this is my third attempt to build a hobby Operating System kernel. The kernel barely works on QEMU as of now and some of the functionalities are not optimal or not perfectly implemented. This is an attempt to keep myself occupied, I am not competing with Linux or other rusty operating systems here on GitHub - in fact I got inspired from these operating systems and read their code-bases to understand various possible methods. (I have given credits to some of the rust OS repositories I looked at.).
Support
    Quality
      Security
        License
          Reuse

            kandi-support Support

              r3 has a low active ecosystem.
              It has 70 star(s) with 3 fork(s). There are 3 watchers for this library.
              OutlinedDot
              It had no major release in the last 6 months.
              There are 0 open issues and 2 have been closed. There are no pull requests.
              It has a neutral sentiment in the developer community.
              The latest version of r3 is current.

            kandi-Quality Quality

              r3 has no bugs reported.

            kandi-Security Security

              r3 has no vulnerabilities reported, and its dependent libraries have no vulnerabilities reported.

            kandi-License License

              r3 is licensed under the MIT License. This license is Permissive.
              Permissive licenses have the least restrictions, and you can use them in most projects.

            kandi-Reuse Reuse

              r3 releases are not available. You will need to build from source code and install.
              Installation instructions, examples and code snippets are available.

            Top functions reviewed by kandi - BETA

            kandi's functional review helps you automatically verify the functionalities of the libraries and avoid rework.
            Currently covering the most popular Java, JavaScript and Python libraries. See a Sample of r3
            Get all kandi verified functions for this library.

            r3 Key Features

            No Key Features are available at this moment for r3.

            r3 Examples and Code Snippets

            No Code Snippets are available at this moment for r3.

            Community Discussions

            No Community Discussions are available at this moment for r3.Refer to stack overflow page for discussions.

            Community Discussions, Code Snippets contain sources that include Stack Exchange Network

            Vulnerabilities

            No vulnerabilities reported

            Install r3

            Install all the presequites - QEMU, KVM, rust, cargo, xbuild and OVMF
            Build the userspace tarfs (requires GCC)
            Build and run the Kernel:

            Support

            Basic x86 Interrupts - both exceptions and hardware interrupts.Programmable I/ODescriptor tables like GDT, IDT and TSSLegacy Programmable Interrupt Controller - (PIC) used for handling interrupts initiallyLegacy Programmable Interval Timer - (PIT) used for initial CPU frequency detectionCPUID - CPU features identificationTimestamp Counter (TSC) which is used as the core system timer for events generationLinear Physical Memory Manager - Right not it only allocates, never deallocates (LoL this is the biggest drawback as of now, anyways I am planning to write a slab allocator soon)DMA Manager - Allocates DMA memory regions for drivers like RTL8139Virtual Memory Manager and Paging - Allocate and manage both 4KB pages and 2MB huge-pages.Heap Allocator built on top of VMA, this heap allocator is used by rust to manage it's dynamic structures -- uses a linked list allocator underneath.Higher half kernelACPI and ACPI x2 supportLocal APIC Interrupts supportSymmetric Multi-Processing (SMP) - still in very initial stages (in progress)Peripheral Component Interconnect - legacy mode with Configuration RegistersPS/2 Keyboard DriverUART serial interface driverATA Disk controller - using PIO mode, where data-transfers take CPU cycles. (DMA mode is in planning stage yet)Framebuffer displayRandom Numbers generatorTTY interface using PS/2 and Framebuffer togetherVFS - Virtual File System implementation (Supports only crucial functionalities as of now)Devfs - to manage devices as files (good old UNIX concept - everything is a file)USTAR - A simple TAR file-system with read-only capabilitiesSystem timer and ticks built on top of TSC and LAPIC interruptsMulti-processing - ability to run multiple-processes concurrently (not parallely as of now)Multi-threading - Still in early stages, as of now, a process can have only one threadSoftware based context switching - ability to save and restore thread statesMode switching - From kernel-mode to user-mode and vice-versaNon-blocking I/O - for keyboard as of now (will implement the same for networking and disk I/O soon)Sysv64 ABI for making System callsSystem calls interface - uses legacy/portable int 0x80 software based mechanism.Basic system calls like - read, write, open, close, exit, fstat, lstat, lseek, getpid, getppid, fork, brk, sbrk, ioctl, yield, gettid, sleep, wait, shutdown, reboot, execvp, uname, getrandom, gettime are implemented, these implementations barely work and are not perfectly POSIX.Ability to load ELF files from the file-system and execute them as a process - by following the ELF process layout.Basic networking - (Still in initial stages of development, as of now you can see a half-baked RTL8139 driver implementation)Internal kernel logging via serial port used for debugging
            Find more information at:

            Find, review, and download reusable Libraries, Code Snippets, Cloud APIs from over 650 million Knowledge Items

            Find more libraries
            CLONE
          • HTTPS

            https://github.com/Narasimha1997/r3.git

          • CLI

            gh repo clone Narasimha1997/r3

          • sshUrl

            git@github.com:Narasimha1997/r3.git

          • Stay Updated

            Subscribe to our newsletter for trending solutions and developer bootcamps

            Agree to Sign up and Terms & Conditions

            Share this Page

            share link

            Consider Popular Rust Libraries

            996.ICU

            by 996icu

            deno

            by denoland

            rust

            by rust-lang

            alacritty

            by alacritty

            tauri

            by tauri-apps

            Try Top Libraries by Narasimha1997

            fake-sms

            by Narasimha1997Go

            ratelimiter

            by Narasimha1997Go

            boson-lang

            by Narasimha1997Rust

            sig-716i

            by Narasimha1997Go

            MarvinOS

            by Narasimha1997C