TODO#

Stack#

  • didactic

    • goal: towards message queues, from “sensor-read”, spinlock version. main thread waiting at highest priority (main is always highest jjj link doxygen/zephyr)

      • transfer do-much*spinlock -> message queue sensor-produce done

      • possibly rename and reimplement artifacts on a branch

        • sensor-unlocked. following shortcomings; lets attack one after another

          • main thread consumes. power saving when he waits (jjj time). he has to wakeup though at a certain interval to be as much realtime as the battery can give.

          • in waking up, he retrieves all elements from the list that he sees. unlocked!

        • sensor-spinlock

          • wrap spinlock, test

        • sensor-mq, for the battery.

        • From the beginning

          • in each chapter: summarizing, what’s next step, which problem are we attacking

          • overview of what we’ll be doing -> aider, when done with rework

          • define time (monotonic in ns), and wait functions. arithmetic overloads.

          • messagequeue/code/sensor-produce.cpp: ohne sensor_data (ist zu lang fuer die didaktik), nur mit std::pair und von da an auto, geht das? oder besser raus in ein eigenes .h

          • consistent why-shell prompts in rst

      • what if the sensors are defined to fire only once in a week, but if they do you need to react immediately

        ⟶ jjj link scheduling

        ⟶ jjj message queues

More Todo#

Various#

  • Some memory model

  • Shell doc

  • Mutex -> errorcheck (check if zephyr defines it as recursive and prioinherit)

  • spinlock -> errorcheck (same as muex)

  • Time (async?)

  • Poll

    • Timers

  • poll signal

    • multiple raises overwrite previous ones

  • Move FD to Internal

  • add concept (trivially-copyable T) to MessageQueue

  • Reformulate Tasks? Processes? Threads? in terms of this

  • Enable/disable safeguards against blocking in interrupts

    • class FD to handle this

    • start unchecked

      • inside the isr, prompt the user

      • see how everything stalls

      • user input -> continue

    • enable check

Realtime#

  • hmmm show priority inversion?

Interrupt Communication#

  • message queue/pipe usage -> blocking in isr forbidden

  • possibly only signal someone who’s sleeping?

  • one msqg for (thread, interrupt)? or msgq1=(thread1, (interrupt1, interrupt2)), msgq2=(thread2, (interrupt3))