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

runqueue: allocate threads to >= 1 cores #248

Closed
wants to merge 12 commits into from

Commits on Apr 10, 2024

  1. runqueue: allocate threads to >= 1 cores

    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.
    elenaf9 committed Apr 10, 2024
    Configuration menu
    Copy the full SHA
    a659268 View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    6518b0a View commit details
    Browse the repository at this point in the history

Commits on Apr 11, 2024

  1. fixup! runqueue: allocate threads to >= 1 cores

    Export `CoreId`.
    elenaf9 committed Apr 11, 2024
    Configuration menu
    Copy the full SHA
    c139e68 View commit details
    Browse the repository at this point in the history

Commits on Apr 12, 2024

  1. fixup! runqueue: allocate threads to >= 1 cores

    Clean code & improve readability.
    elenaf9 committed Apr 12, 2024
    Configuration menu
    Copy the full SHA
    4f29f10 View commit details
    Browse the repository at this point in the history
  2. fixup! runqueue: allocate threads to >= 1 cores

    Optimize case where `N_CORES` == 1.
    elenaf9 committed Apr 12, 2024
    Configuration menu
    Copy the full SHA
    b26e03b View commit details
    Browse the repository at this point in the history
  3. fixup! runqueue: allocate threads to >= 1 cores

    Make hax (hopefully) happy.
    elenaf9 committed Apr 12, 2024
    Configuration menu
    Copy the full SHA
    111910f View commit details
    Browse the repository at this point in the history
  4. Configuration menu
    Copy the full SHA
    0e07cb0 View commit details
    Browse the repository at this point in the history
  5. runqueue: fix RunQueue::advance for multicore

    In the multicore scenario, a yielding thread isn't necessarily the head
    of the runqueue.
    This commit adds a method `advance_from` to yield from any thread in the
    queue. The thread is then moved to the tail of the runqueue.
    elenaf9 committed Apr 12, 2024
    Configuration menu
    Copy the full SHA
    65e4460 View commit details
    Browse the repository at this point in the history

Commits on Apr 16, 2024

  1. fixup! runqueue: fix RunQueue::advance for multicore

    Remove unused method `advance_head` (duplication of
    `Runqueue::advance`).
    elenaf9 committed Apr 16, 2024
    Configuration menu
    Copy the full SHA
    f85db4d View commit details
    Browse the repository at this point in the history

Commits on Apr 17, 2024

  1. fixup! runqueue: allocate threads to >= 1 cores

    Handle case N_CORES == 1 separately.
    elenaf9 committed Apr 17, 2024
    Configuration menu
    Copy the full SHA
    dcf08c1 View commit details
    Browse the repository at this point in the history
  2. Merge branch 'main' of https://github.com/future-proof-iot/RIOT-rs in…

    …to runqueue/multiple-cores
    elenaf9 committed Apr 17, 2024
    Configuration menu
    Copy the full SHA
    5e8622e View commit details
    Browse the repository at this point in the history

Commits on Apr 19, 2024

  1. runqueue: introduce GlobalRunqueue trait

    Add new `GlobalRunqueue` trait to differentiate and optimize for
    different number of cores on the type level.
    
    It uses the `min_specialization` rust feature to have a generic
    implementation for _n_ number of cores and fine-grained specialization
    of methods for concrete _n_.
    elenaf9 committed Apr 19, 2024
    Configuration menu
    Copy the full SHA
    441611e View commit details
    Browse the repository at this point in the history