Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

(WIP) threads: multicore support for RP2040 #241

Closed
wants to merge 11 commits into from

Conversation

elenaf9
Copy link
Collaborator

@elenaf9 elenaf9 commented Apr 9, 2024

First PoC that adds multicore support for the Raspberry RP2040.

It introduces a small abstraction layer for SMP (symmetric multiprocessing) support and mostly relies on embassy to implement it for the RP2040.
A first example threads-multicore runs, but a lot of this is quite hacky.

Concretely, what definitely needs to be fixed is:

  • riot-rs-runqueue support for more than one currently running thread (right now I am doing a very hacky workaround that just works for this example) (edit: runqueue: allocate threads to >= 1 cores #248),
  • locking of critical sections and shared resources
  • ... (probably a lot more once I dig more into the details)

I'll do separate Issues/ PRs for the subtasks as listed in the tracking issue #243.
Just thought it would be nice to already open this PR show how easy a first implementation is thanks to embassy 🙂.

@elenaf9 elenaf9 mentioned this pull request Apr 10, 2024
12 tasks
Support multiple cores in the runqueue.
The current allocation for each core is stored in a new array.
Thus, any call to `get_next_for_core` is minimal effort.
The allocation is updated after each change in the runqueue.
Clean code & improve readability.
Optimize case where `N_CORES` == 1.
Only schedule a context switch if thread allocation (to a core) changed.

TODO:
Schedule the context switch on the core that is affected. In most cases,
this is the currently running cores, but not always (e.g. when on
another core a low priority thread is running that should be preempted).
@elenaf9
Copy link
Collaborator Author

elenaf9 commented Sep 5, 2024

Closing in favor of #397.

@elenaf9 elenaf9 closed this Sep 5, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants