GithubHelp home page GithubHelp logo

sel4 / refos Goto Github PK

View Code? Open in Web Editor NEW
49.0 28.0 23.0 3.54 MB

Prototype no-assurance reference OS personality built on seL4

License: Other

Makefile 1.09% TeX 3.42% C 91.91% C++ 0.59% Awk 0.09% Shell 0.06% Python 0.27% CSS 0.01% Roff 2.55% Pawn 0.01%

refos's Introduction

RefOS Repository

This is the git repository for RefOS. This repository is meant to be used as part of a Google repo setup. Instead of cloning it directly, please go to the following repository and follow the instructions there:

https://github.com/seL4/refos-manifest

RefOS is currently supported on iMX3.1 KZM, iMX6 Sabre Lite and ia32 hardware platforms and on qemu-ARM kzm and qemu-i386 ia32.

Overview

The repository is organised as follows.

  • impl/apps: RefOS system and userland applications
    • selfloader: Bootstrap application, which is responsible for starting user processes.
    • process_server: The process server, which runs as the root task and provides process and thread abstraction and initialises the entire system.
    • file_server: The cpio file server, which stores files and executables in a cpio archive and exposes them via a dataspace interface.
    • console_server: The console server, a system process which acts as the console device driver and manages serial input and output and EGA text mode output.
    • timer_server: The timer server, a userland driver process which manages the timer device and provides timer get time and sleep functionality.
    • terminal: The interactive terminal application.
    • test_os: RefOS operating system level test suite, which tests the operating system environment.
    • test_user: RefOS user-level test application, which is responsible for testing the operating system user environment.
    • snake: Example snake game.
    • tetris: Example tetris game.
    • nethack: Port of Nethack 3.4.3 roguelike game.
  • impl/libs: RefOS system and userland applications
    • libdatastruct: RefOS library that provides simple C data structures such as vectors, hash tables and allocation tables.
    • librefos: RefOS user and server shared definitions, RPC specifications and generated stubs and low level helper libraries.
    • librefossys: RefOS library that implements some POSIX system calls using low-level RefOS and thus allows the C library to work. This directory is intended to simplify RefOS userland applications and facilitate porting.
  • impl/docs: RefOS doxygen code documentation.
  • design: RefOS protocol design document.

Suggested Future Work

The following is suggested future work that interested open-source developers could implement:

  • Future Work 1: modify how the process server creates and starts processes and threads (see 'Future Work 1' in code)
  • Future Work 2: fix issue where calls to assert_fail() result in infinite recursion on x86 architecture (see 'Future Work 2' in code)
  • Future Work 3: modify how the selfloader bootstraps user processes (see 'Future Work 3' in code)
  • Future Work 4: remove explicit reference to system call table in processes that the process server creates (see 'Future Work 4' in code)
  • Future Work 5: set up muslc's errno in RefOS (see 'Future Work 5' in code)
  • Future Work 6: get ia32_screen_debug_defconfig and ia32_screen_release_defconfig default configurations running with new seL4 API
  • Future Work 7: get Nethack running with new seL4 API

License

RefOS code is released under the BSD license where possible and GPL for some external software. Please see the individual file headers and LICENSE.md for details.

Please note that RefOS is intended to be sample code and is not high assurance software. We are not reponsible for any consequences if you choose to deploy this software in production.

refos's People

Contributors

adriandanis avatar gridbugs avatar hypernewbie avatar jm-- avatar lsf37 avatar ratmice avatar timnewsham avatar

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

Watchers

 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

refos's Issues

Includes missing (uint32_t, size_t)

Hey!

Got minor compilation errors due to missing includes for uint32_t and size_t.
I added stdint.h and stddef.h, see diff below.

Host platform: x86_64 with Ubuntu 15.04
Target platform: ia32
Compiler: gcc (Ubuntu 4.9.2-10ubuntu13) 4.9.2
Configuration: ia32_debug_test_defconfig

PS: Cool work! Just played a round of tetris :)

Regards,
Sammey

--- Git diff begins here ---

diff --git a/impl/libs/librefos/include/refos/refos.h b/impl/libs/librefos/include/refos/refos.h
index 6eea0df..f09abe2 100644
--- a/impl/libs/librefos/include/refos/refos.h
+++ b/impl/libs/librefos/include/refos/refos.h
@@ -11,6 +11,7 @@
#ifndef REFOS_H
#define REFOS_H

+#include <stdint.h>
#include <sel4/sel4.h>
#include <refos/error.h>

diff --git a/impl/libs/librefos/include/refos/share.h b/impl/libs/librefos/include/refos/share.h
index 60fd8e5..86ef759 100644
--- a/impl/libs/librefos/include/refos/share.h
+++ b/impl/libs/librefos/include/refos/share.h
@@ -21,6 +21,7 @@
#ifndef REFOS_SHARE_H
#define REFOS_SHARE_H

+#include <stddef.h>
#include "refos.h"

/*! @brief Read from a shared buffer.

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.