Code Monkey home page Code Monkey logo

xyris's Introduction

Logo

License Kernel CI Discord

Xyris

Xyris (previously known as Panix) is a small, hobbyist kernel with the goal of becoming a fully-fledged microkernel with an emphasis on usability and security. Having now undergone three rewrites from the ground up, Xyris has come a long way since its first start in 2018.

Design Philosophy

Xyris is designed to be readable first and foremost. Having been developed at Cedarville University, the primary goal of Xyris is to provide an opportunity for students (and anyone else interested) to learn the intricacies of kernel development. Function names are descriptive and structs are used when possible in order to help increase the legibility of code and provide an "easy-in" for kernel development.

How to Help

We are constantly looking for people to help contribute to Xyris. If you would like to contribute driver code or a new feature, feel free to fork the repository and submit a pull request. We would love to have you help us make Xyris better! The Getting Started wiki page describes everything necessary to start developing.

Demos

License

Xyris is available under the MIT license. This license may not apply to third party source code used by Xyris. Third party source code used is listed below.

See LICENSE for details.

Contributors


Third Party Projects

xyris's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

xyris's Issues

Move Debug Prefixes to Macros

Is your feature request related to a problem?
No.

Describe the feature request in detail
px_print_debug is going to be deprecated and the prefixes should be moved to defines a lá Linux.

Additional context
n/a

Paging Improvements

  • Separate bitmap library
  • Freeing pages
  • Stress testing
  • Detecting hardware memory limit

Move Functions to Their Proper Locations

Is your feature request related to a problem?
A lot of the standard library functions implemented are not in the correct, standard header.

Describe the feature request in detail
All functions should move to the appropriate header. For information as to what goes where, reference Wikipedia.

Additional context
n/a

Clear TTY Function Should Update Default Reset Colors

Expected behavior
When an ANSI reset is called in a string, the colors should reset to whatever was set as the default in the previous clear screen function call.

Actual behavior
The reset actually resets to white on black instead of whatever was set when clearing the TTY.

Steps to reproduce
Steps to reproduce the behavior:

  1. Call clear TTY function with custom colors as foreground and back.
  2. Update colors in a printf and then include an ANSI reset code.
  3. Observe.

Screenshots
n/a

Additional context
n/a

Add UEFI Support with BootBoot

Is your feature request related to a problem?
BIOS is outdated and UEFI will make our lives easier.

Describe the feature request in detail
BIOS sucks and UEFI will make our lives much easier for things like getting ACPI tables and native resolutions. Additionally, if we move to x86_64, UEFI will already boot the system into 64 bit mode, so we won't need to do that either.

Additional context
BootBoot only supports booting in 64 bit mode, so that might be an issue, or it might not be. Depends on how well Panix runs on x86_64 based systems since it's built for 32 bit architectures.

Create a better README description

Draft:

Panix

Panix is a small, hobbyist kernel started by Keeton Feavel and further developed with the help of Micah Switzer.
Having now undergone three rewrites from the ground up, Panix has come a long way since its first start in 2018.

Design Philosophy

Panix is designed to be readable first and foremost. Having been developed at Cedarville University, the primary goal of Panix is to provide an opportunity for students (and anyone else interested) to learn the intricacies of kernel development. Function names are descriptive and structs are used when possible in order to help increase the legibility of code and provide an "easy-in" for kernel development.

Accomplishments

Panix is the subject of an independent study and the associated final report published by Keeton Feavel at Cedarville and used by Patrick Dudenhofer to help instruct students of CS-3320 (Operating Systems). The cedarville branch is an older, modified version of the Panix kernel used as a template for assignments designed to help concepts such as CPU ports and hardware communication. Eventually, once paging is fully implemented, another assignment will be developed to help explain paging and memory management.

How to Help

We are constantly looking for people to help contribute to Panix. If you would like to contribute driver code or a new feature, feel free to fork the repository and submit a pull request. If you are a student who would like to get involved, feel free to contact any of the project contributors.

Add Multi-Architecture Makefile Support

Is your feature request related to a problem?
The makefile we are currently using is pretty limited.

Describe the feature request in detail
Support for compiling x86_64 code should be supported.

Additional context
n/a

Add Missing Documentation

Many of the headers are missing Doxygen comments for the functions. This should be resolved and any functions which are not thoroughly explained should also be documented.

Enable Stack Smashing Protection

#include <stdint.h>
#include <stdlib.h>
 
#if UINT32_MAX == UINTPTR_MAX
#define STACK_CHK_GUARD 0xe2dee396
#else
#define STACK_CHK_GUARD 0x595e9fbd94fda766
#endif
 
uintptr_t __stack_chk_guard = STACK_CHK_GUARD;
 
__attribute__((noreturn))
void __stack_chk_fail(void)
{
#if __STDC_HOSTED__
	abort();
#elif __is_myos_kernel
	panic("Stack smashing detected");
#endif
}

https://wiki.osdev.org/Stack_Smashing_Protector

Remove panix.hpp

Is your feature request related to a problem?
panix.hpp is the problem. Everything includes it for no good reason other than including types and panic (which is not always required)

Describe the feature request in detail
panix.hpp was an awful idea. I'm sorry.

Additional context
No comment.

Dump Panic Logs to Serial

Is your feature request related to a problem?
Kernel panics are not able to be easily logged due to them being printed only to the VGA.

Describe the feature request in detail
Keeping track of kernel panics could help in the future where referencing previous register values might be helpful.

Additional context
n/a

Stack / Queue Library

Is your feature request related to a problem?
A stack / queue library are needed for a variety of reasons. The primary reason right now being keeping track of ANSI escape codes passed to kprintf (and then onto putc).

Describe the feature request in detail
There need to be two separate libraries contained in the lib section of Panix. There should be a stack.cpp and queue.cpp along with their associated headers in the sysroot. Talk to @micahswitzer about unit testing the libraries.

Additional context
n/a

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.