{"push_id":612142039,"size":10,"distinct_size":10,"ref":"refs/heads/thofmann/syncpoint","head":"377afaccd18bb6267909ae63c751524d668da7e9","before":"7338c78f9faeea0d6e247ec8e8c6661d2d68d006","commits":[{"sha":"71ba424f327a24618186fca69a3275bb603ab557","author":{"email":"689621672f4a2f732c0f624e830c700d71d1ffcb@kbsg.rwth-aachen.de","name":"Till Hofmann"},"message":"aspects: make the BlockedTimingAspect a SyncPointAspect\n\nUse syncpoints for all BlockedTiming threads. For each hook, add a start\nand an end hook syncpoint. At the beginning of each hook, the main\nthread emits the start syncpoint. At the end of each hook, the main\nthread waits for the end syncpoint, which is emitted by all threads\nregistered for the hook.\n\nThis replaces the main loop with syncpoints. However, the main thread\nstill has to manage all hooks, similar to before.\n\nIn order to use the new main loop, each blocked timing thread currently\nneeds to be changed to continuous mode. Otherwise, no changes are\nrequired.","distinct":true,"url":"https://api.github.com/repos/fawkesrobotics/fawkes/commits/71ba424f327a24618186fca69a3275bb603ab557"},{"sha":"8f5e25ef9cc5d9702782f5a42dd757bd6ff463c7","author":{"email":"689621672f4a2f732c0f624e830c700d71d1ffcb@kbsg.rwth-aachen.de","name":"Till Hofmann"},"message":"syncpoint: add syncpoint test plugin\n\nThis plugin tests the BlockedTimingAspect with syncpoints. For each\nhook, it adds a test thread which simply sleeps for a random interval\nand then prints its name. This tests whether the threads are indeed\nwoken up in the correct order.","distinct":true,"url":"https://api.github.com/repos/fawkesrobotics/fawkes/commits/8f5e25ef9cc5d9702782f5a42dd757bd6ff463c7"},{"sha":"cb1600fa6c54c6f698129485ccc8ccd28d273754","author":{"email":"689621672f4a2f732c0f624e830c700d71d1ffcb@kbsg.rwth-aachen.de","name":"Till Hofmann"},"message":"syncpoint: do not throw on multiple register calls\n\nWe want to allow a component to register for multiple syncpoints, e.g.\n'/some/sp1' and '/some/sp2'. With hierarchical syncpoints, the component\nwill also register for the syncpoint '/' when registering for the first\nsyncpoint. When registering for the second syncpoint, an exception will\nbe thrown as the component is already registered for '/'.\nCalling register for the same syncpoint multiple times doesn't do any\ndamage, the exception was only a precaution and can thus be safely\nremoved.","distinct":true,"url":"https://api.github.com/repos/fawkesrobotics/fawkes/commits/cb1600fa6c54c6f698129485ccc8ccd28d273754"},{"sha":"cc81a7938e0ab8c419bb24e5696d984cf1967398","author":{"email":"689621672f4a2f732c0f624e830c700d71d1ffcb@kbsg.rwth-aachen.de","name":"Till Hofmann"},"message":"aspects: require continuous mode in blocked timing aspect\n\nThreads with the blocked timing aspect are not woken up by the main\nthread anymore. Instead, they should run continuously and wait at the\nbeginning of the loop for the syncpoint.","distinct":true,"url":"https://api.github.com/repos/fawkesrobotics/fawkes/commits/cc81a7938e0ab8c419bb24e5696d984cf1967398"},{"sha":"5c98af8f0d0752238c6bee4c1a72910e95fdf63e","author":{"email":"689621672f4a2f732c0f624e830c700d71d1ffcb@kbsg.rwth-aachen.de","name":"Till Hofmann"},"message":"syncpoint: add equal operator for std::strings\n\nThe identity of a SyncPoint is determined by its identifier string.\nAdd an equal operator to compare a SyncPoint with a std::string. This\nallows us to use strings to search a SyncPoint in a container without\nhaving to create a SyncPoint just for comparison.","distinct":true,"url":"https://api.github.com/repos/fawkesrobotics/fawkes/commits/5c98af8f0d0752238c6bee4c1a72910e95fdf63e"},{"sha":"764ff8b644fb8f96376499de6aafb4f3213092da","author":{"email":"689621672f4a2f732c0f624e830c700d71d1ffcb@kbsg.rwth-aachen.de","name":"Till Hofmann"},"message":"syncpoint: fix calculation of call frequency","distinct":true,"url":"https://api.github.com/repos/fawkesrobotics/fawkes/commits/764ff8b644fb8f96376499de6aafb4f3213092da"},{"sha":"9bbf7db1dd9302b2c1c79180018a7f5f1251ffff","author":{"email":"689621672f4a2f732c0f624e830c700d71d1ffcb@kbsg.rwth-aachen.de","name":"Till Hofmann"},"message":"syncpoint: adapt visualization to the two types of wait calls\n\nA wait call can be either a wait_for_one or a wait_for_all call.\nVisualize both types of calls.","distinct":true,"url":"https://api.github.com/repos/fawkesrobotics/fawkes/commits/9bbf7db1dd9302b2c1c79180018a7f5f1251ffff"},{"sha":"8ac8970b0d9f916798eba0938d9f8dad7bac4c7c","author":{"email":"689621672f4a2f732c0f624e830c700d71d1ffcb@kbsg.rwth-aachen.de","name":"Till Hofmann"},"message":"syncpoint: do not throw if a non-watcher releases a syncpoint","distinct":true,"url":"https://api.github.com/repos/fawkesrobotics/fawkes/commits/8ac8970b0d9f916798eba0938d9f8dad7bac4c7c"},{"sha":"68a7b7532941e834bee0e0e329a5bc4235562be1","author":{"email":"689621672f4a2f732c0f624e830c700d71d1ffcb@kbsg.rwth-aachen.de","name":"Till Hofmann"},"message":"aspects: BlockedTimingAspect with wait-for-wakeup and syncpoints\n\nAdapt the BlockedTimingAspect such that it expects the thread to be in\nwait-for-wakeup mode while using syncpoints. Since the thread is no\nlonger woken up by the main thread, add a loop listener which wakes up\nthe thread immediately after the loop returned. This recreated the\nexpected behavior: After the thread finished its loop(), the loop\nlistener immediately wakes up the thread, which then waits for the\nsyncpoint at the beginning of the loop, before it continues with the\nnext iteration.\n\nSince a thread is never woken up by the main thread, we still need to\nstart the thread, otherwise it will never run. For now, we start the\nthread in the initializer of the BlockedTimingAspect.","distinct":true,"url":"https://api.github.com/repos/fawkesrobotics/fawkes/commits/68a7b7532941e834bee0e0e329a5bc4235562be1"},{"sha":"377afaccd18bb6267909ae63c751524d668da7e9","author":{"email":"689621672f4a2f732c0f624e830c700d71d1ffcb@kbsg.rwth-aachen.de","name":"Till Hofmann"},"message":"core: provide stubs for the ThreadLoopListener hooks\n\nA ThreadLoopListener may not always use both pre- and post-loop hooks.\nProvide stubs to allow to override only the reqired functions.","distinct":true,"url":"https://api.github.com/repos/fawkesrobotics/fawkes/commits/377afaccd18bb6267909ae63c751524d668da7e9"}]}