Giter Club home page Giter Club logo

pok's Introduction

Code Quality Score Code Grade Build status

POK

POK kernel, a secure and safe micro-kernel for embedded systems.

More information on https://pok-kernel.github.io/

We prefer the GitHub issue tracker to be used for bug reports, questions and suggestions. Support requests and collaboration proposals can be sent to [email protected].

pok's People

Contributors

dependabot[bot] avatar etienne13 avatar juli1 avatar renovate[bot] avatar rguilloteau avatar samueltardieu avatar sduverger avatar ureir 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  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

pok's Issues

Ada headers in the arinc653 directory

It seems all these headers were pulled directly from the ARINC Spec. The ARINC header was not maintained throughout these files as they were split up.

In addition the statement "You CANNOT use this file or a part of a file for your own project." or any restriction placed on these files by the POK project would seem to be an incorrect assertion.

how to run example on ppc

After compiling the executable file of ppc, executing make run will not start normally, as shown in the figure below.
2019-01-04 17-02-57

POK kernel security vulnerability

Hi,

We discovered a serious vulnerability in the POK kernel. A patch is ready for a PR.
We already exchanged with POK former author Julien to responsively disclose the findings.
Please tell me when you are ready to deal with the PR or if you would prefer us to provide you with a PATCH privately to have time to analyze it before any public release.

Impossible to use this repository on Windows machines

Windows disallows the use of colon (:) in directory and file names, the colon being reserved for drive letters (C:\...).

The symptom is simple: in Windows, git succeeds in cloning the repository, but then fails to checkout any branch, because it can't write on file, who has a colon in its path:

$ git checkout main
error: invalid path 'testsuite/arinc653/T-API-PART-0220:0010/test.c'

The workaround for me consisted in using "Linux subsystem" virtual machine (formerly known as "Ubuntu under Windows") to checkout the branch. The subsystem will use a different character as the colon, so that Windows don't complain. But it still doesn't allow to use Windows-native git tools (for example TortoiseGit).

A simple solution is to rename the faulty path to avoid it, for example with another dash (there are already 3 in the directory name), or with an underscore if it's important to have a different separator.

(Note: I didn't have the opportunity to try this test suite, so I don't know if this colon character is important or not, but I doubt it, since there is only one file with it.)

Action Required: Fix Renovate Configuration

There is an error with this repository's Renovate configuration that needs to be fixed. As a precaution, Renovate will stop PRs until it is resolved.

Location: .github/renovate.json
Error type: The renovate configuration file contains some invalid settings
Message: Invalid configuration option: packageRules[0].groupname

Some questions in the sparc trap handle

First, thank you for offer this RTOS, appreciate it.
In entry.S file, we use
_20180830171714
_20180830171714
Macro to set up trap handler. If a interrupt occur, code run to trap_prehandler,
we can assume that, if our function call have use all reg window except one indicated by WIM, and interrupt will use this preserved reg window.I figure out this call instrution will ruin next used reg window %i7, did i miss something? Sorry for my bad english.
_20180830171714

ARM supported

Hi. do you have a plan for ARM supported? and start a project for autosar adaptive ?

Include System Call in POK

i have been trying to understand syscall.c and .h file and how you have implemented your system calls my question is if i want to add (( #include<sys/sockets.h )) which is a system call , how will i do it as pok will have its own system calls.
i want to use linux systems calls in pok kindly guide me on this ?
@joelsherrill @juli1 @Etienne13 @phipse @yoogx

Dependency Dashboard

This issue lists Renovate updates and detected dependencies. Read the Dependency Dashboard docs to learn more.

Open

These updates have all been created already. Click a checkbox below to force a retry/rebase of any.

Detected dependencies

github-actions
.github/workflows/style.yml
  • actions/checkout v4
  • actions/checkout v4
  • ubuntu 22.04
  • ubuntu 22.04
.github/workflows/tests.yml
  • actions/checkout v4
  • actions/checkout v4
  • ubuntu 22.04
  • ubuntu 22.04
pip_requirements
misc/requirements.txt
  • avocado-framework ==103.0
  • avocado-framework-plugin-result-html ==103.0
  • avocado-framework-plugin-varianter-yaml-to-mux ==103.0
  • Jinja2 ==3.1.3
  • MarkupSafe ==2.1.5
  • PyYAML ==6.0.1

  • Check this box to trigger a request for Renovate to run again on this repository

Can't run examples

Hi! I've installed POK on Ubuntu 18.04.4 and try to run the examples. Unfortunately I get an error when I try to run any example except of "semaphores":

olga@olga-H270M-DS3H:~/pok/examples/partitions-scheduling$ make all
Makefile:4: /misc/mk/examples.mk: No such file or directory
make: *** No rule to make target '/misc/mk/examples.mk'. Stop.

"semaphore" example works well and I'm not sure where is the problem. I'm also not very experienced with Ubuntu. Any help would be highly appreciated.

How can we include libararies in the c code of a single partition

suppose i want to add "stdio.h" into the single partition c code then i simply add it but the code searches for stdio.h in the libpok folder ok i gave the the file their but it gives a errors after error because stdio.h needs 3-4 other headers and those needs others..which are all not their ...
i have been dealing with this for a week now kindly tell me how to solve this issue if one cant use other libraries then it means we cannot perform any thing on a single partition which i am assuming is not the case
kindly solve this issue @yoogx @juli1 @Etienne13 @phipse @joelsherrill

sending qemu window output over the network

Sir @juli1 @yoogx @joelsherrill @Etienne13 @phipse
I have been working with pok for the last two months.Its amazingly powerful OS but i have a small issue which i cannot resolve do to the lack of help available on the internet.
I ran all the examples of the POK.But when it runs qemu displays the output.
Now what i want is that to get that output and send it over the network so that i can get that output using some ip and port.
i wanted to use sockets.h but as its a system call so i was not able to use it i have seen POK OS syscall files but i was not able to understand how you made those.
second option we are left with is that through qemu we send that output to network.
can you guide me on this ????

POK_NEEDS_DEBUG select all or nothing in terms of debug traces

POK_NEEDS_DEBUG is a macro that selects all or nothing in terms of debug traces in the OS. Users could be interested in displaying debug traces in the partitions only, or in parts of the kernel only.

I propose to change the code and keep POK_NEEDS_DEBUG as a general debug selection (all debug traces are displayed if it is defined) and to use POK_NEEDS_USER_DEBUG to display only traces from partitions.

Latter, we can also use POK_NEEDS_SCHED_DEBUG to select traces from the scheduler code, and so on.

Build is failing

Since commit 6b04870

The build is failing. See the badge on the page.

Can we investigate and fix the build. Or revert the change?

Userguide Documentation fails to compile.

Upon running "Make", I receive the following set of errors:

rm -rf include-libpok mkdir -p include-libpok include-libpok/core include-libpok/arinc653 include-libpok/middleware include-libpok/libc include-libpok/protocols for v in arch.h errno.h libm.h core/allocator.h core/thread.h core/error.h core/event.h core/semaphore.h core/syscall.h core/partition.h core/time.h middleware/blackboard.h middleware/buffer.h middleware/port.h middleware/queue.h libc/stdio.h libc/stdlib.h libc/string.h arinc653/blackboard.h arinc653/buffer.h arinc653/error.h arinc653/event.h arinc653/partition.h arinc653/process.h arinc653/queuing.h arinc653/sampling.h arinc653/semaphore.h arinc653/time.h arinc653/types.h protocols/protocols.h protocols/ceasar.h protocols/des.h protocols/ssl.h; do \ NLINES=wc -l ../../libpok/include/$v|awk '{print $1}' ; NLINES=expr $NLINES - 15; \ tail -n $NLINES ../../libpok/include/$v > include-libpok/$v ; \ done wc: ../../libpok/include/arinc653/queuing.h: No such file or directory expr: syntax error: unexpected argument ‘15’ tail: invalid number of lines: ‘../../libpok/include/arinc653/queuing.h’ cpocarina-config --prefix/share/ocarina/AADLv2/pok_properties.aadl . cp ocarina-config --prefix/share/ocarina/AADLv2/arinc653_properties.aadl . cp: cannot stat '/usr/share/ocarina/AADLv2/arinc653_properties.aadl': No such file or directory make: *** [Makefile:43: pok-user.pdf] Error 1

Problem when makes the pok-main example arinc653-queueing

When runs the command "ocarina -aadlv2 -f -i model.aadl", hit the following problem:
"model.aadl:20:06: ARINC653 (identifier) is not a package or a property set visible or existing
Cannot analyze AADL specifications"

Ocarina v2021.1-7-g563ae64 (Working Copy from r563ae649)
Build date: Oct 29 2021 14:47:37

And advise? Thanks a lot.

Wayne

Failed running the example arinc653-buffer

When I run Makefile for the examples arinc653-blackboard and arinc653-buffer, I get below messages:
/usr/local/src/pok/libpok/libpok.a(core.lo): In function pok_event_wait': /usr/local/src/pok/libpok/core/eventwait.c:32: undefined reference to pok_time_gettick'
/usr/local/src/pok/libpok/libpok.a(arinc653.lo): In function TIMED_WAIT': /usr/local/src/pok/libpok/arinc653/time.c:33: undefined reference to __udivdi3'
/usr/local/src/pok/libpok/arinc653/time.c:34: undefined reference to pok_thread_sleep' /usr/local/src/pok/libpok/libpok.a(arinc653.lo): In function GET_TIME':
/usr/local/src/pok/libpok/arinc653/time.c:49: undefined reference to `pok_time_get'
make[2]: *** [part1.elf] Error 1
make[1]: *** [partitions] Error 2
Code generation failed

I fixed the above errors by below action:

  1. Regarding to the file pok/libpok/core/timeget.c, I replaced the below line
    #if ( (! defined (POK_CONFIG_OPTIMIZE_FOR_GENERATED_CODE )) || ( defined (POK_NEEDS_FUNCTION_TIME_GET)))
    with
    #if ( (! defined (POK_CONFIG_OPTIMIZE_FOR_GENERATED_CODE )) || ( defined (POK_NEEDS_FUNCTION_TIME_GET))) || defined (POK_NEEDS_BUFFERS) || defined (POK_NEEDS_BLACKBOARDS)

  2. Regarding to the file pok/libpok/core/threadsleep.c, I replaced the below line
    #ifdef POK_NEEDS_THREADS
    with
    #if defined(POK_NEEDS_THREADS) || defined (POK_NEEDS_BUFFERS) || defined (POK_NEEDS_BLACKBOARDS)

  3. Regarding to the file pok/libpok/Makefile, I added ../kernel/libc/libc.lo as below:
    LO_DEPS= arch/arch.lo
    core/core.lo
    drivers/drivers.lo
    middleware/middleware.lo
    arinc653/arinc653.lo
    libm/libm.lo
    protocols/protocols.lo
    libc/libc.lo
    ../kernel/libc/libc.lo

I think the above action is just a temporary solution.

Now It works well when I run "make run" for the example arinc653-blackboard.
But when I run "make run" for the example arinc653-buffer, only the below messages are displayed on the QEMU screen:
Booting 'Poly ORBKernel'

root (hd0, 0)
Filesystem type is fat, partition type 0x6
kernel /pok.elf
[Multiboot-elf, <0x100000:0x1e502:0x0), shtab=0x11f280, entry=0x101f98]

Driver support

Has anyone tried to develop new networking drivers for POK?

Failed running multiple instances of qemu with pok (with qemu 3.0.0)

When I run several instances of qemu with pok, I get the following error:

qemu-system-i386: Initialization of device isa-fdc failed: Failed to get "write" lock Is another process using the image?

Notes:

  • it is reproducible using the network example (which launches 2 qemu) and qemu 3.0.0
  • the problem does not occur with qemu 2.5.0

Undefined reference to `pok_ports_names_max_len'

As a follow up on commit #10

When compiling the code generated from my tool, I get the following compilation error.

syscall.c:290: undefined reference to `pok_ports_names_max_len'

Indeed, pok_ports_names_max_len is defined as extern in syscall.c.

I guess the variable definition has to be generated by third party tools, but how to compute the expected value? If it is a constant, why wouldn't we use maccros like for most configuration parameters of POK?

Might be due to modifications in misc/mk/rules-main.mk?

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.