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

Protect libcanard API calls within critical sections to prevent race conditions. #56

Merged
merged 5 commits into from
Dec 18, 2020

Commits on Dec 18, 2020

  1. Remove attribute always_inline since the compiler won't be always abl…

    …e to follow that recommendation (and in fact isn't)
    aentinger committed Dec 18, 2020
    Configuration menu
    Copy the full SHA
    d9ade18 View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    3447b2e View commit details
    Browse the repository at this point in the history
  3. LockGuard is a knock-off of the C++ way of doing things and basically…

    … implements the RAII-pattern around critical sections (automatic release of critical section lock when LockGuard object goes out of scope.
    aentinger committed Dec 18, 2020
    Configuration menu
    Copy the full SHA
    f6e09da View commit details
    Browse the repository at this point in the history
  4. Lock all public API calls of ArduinoUAVCAN against multiple asynchron…

    …ous access, therefore preventing race conditions and inconsistent data state
    aentinger committed Dec 18, 2020
    Configuration menu
    Copy the full SHA
    d0f1043 View commit details
    Browse the repository at this point in the history
  5. It's no longer necessary to provide critical section hooks to o1heap …

    …as o1heap will only be called from within libcanard which in turn will only be called from within ArduinoUAVCAN which prevents multiple asynchronous access via critical sections.
    aentinger committed Dec 18, 2020
    Configuration menu
    Copy the full SHA
    018ee25 View commit details
    Browse the repository at this point in the history