0
0
Fork 0
mirror of https://github.com/matrix-construct/construct synced 2024-06-28 23:08:20 +02:00
Commit graph

284 commits

Author SHA1 Message Date
Jason Volk 4871928bfa ircd::ctx: Partial de-inline of dock methods. 2019-01-13 13:57:34 -08:00
Jason Volk 84265c3a13 ircd::ctx::parallel: Ensure the counters are not affected by exceptions. 2019-01-01 21:15:10 -08:00
Jason Volk 7f4bb1a7db ircd::ctx::parallel: Handle case for empty pool by executing receiver immediately. 2019-01-01 21:15:10 -08:00
Jason Volk 254e6c287d ircd::ctx: Synchronize workers before rethrowing the eptr. 2019-01-01 17:05:15 -08:00
Jason Volk 16ebbbfa8a ircd::ctx: Move and adjust default stack size. 2018-12-28 14:07:40 -08:00
Jason Volk 4a47b39298 ircd::ctx: Create and use an options structure for ctx::pool. 2018-12-28 12:57:32 -08:00
Jason Volk c9c280c864 ircd::ctx: Simplify queue interface; remove access to dock. 2018-12-28 12:42:08 -08:00
Jason Volk 364302c212 ircd::ctx: Add soft and hard limit logic for submitting to pool. 2018-12-27 17:20:42 -08:00
Jason Volk 73459e75ff ircd::ctx: Update assumptions for yielding during pool submit. 2018-12-27 16:30:04 -08:00
Jason Volk 4c5891e354 ircd::ctx: Block the caller after submit when parallel saturated. 2018-12-26 17:35:49 -08:00
Jason Volk b0d5e5d4c8 ircd::ctx: Improve ctx::parallel template. 2018-12-26 17:19:03 -08:00
Jason Volk 3d79c94bb2 ircd::ctx: Add ctx::parallel device. 2018-12-24 18:36:56 -08:00
Jason Volk 9f70ce1b28 ircd::ctx: Add pool::min() convenience. 2018-12-24 16:20:03 -08:00
Jason Volk 387e8b8eed ircd::ctx: Improve pool loop; improve log msg; add interruption point. 2018-12-24 12:06:05 -08:00
Jason Volk b8fd399bf4 ircd::ctx: Remove this export down to ircd::. 2018-12-23 15:23:53 -08:00
Jason Volk 29e7fa3515 ircd::ctx: Use closure for continuation. 2018-12-22 21:03:14 -08:00
Jason Volk 37ba013413 ircd::ctx: Simplify continuation; eliminate to_asio derived type. 2018-12-22 20:11:00 -08:00
Jason Volk 365cf865d0 ircd::ctx: Various improvements/reorg of continuation/to_asio. 2018-12-22 17:24:48 -08:00
Jason Volk d5ffc6b0de ircd::ctx: Improve prof related; add full ticker of counters. 2018-12-22 15:17:18 -08:00
Jason Volk 39d4f2fb83 ircd::ctx: Expose the profile state struct in the prof:: interface. 2018-12-22 13:47:13 -08:00
Jason Volk a590ad1a03 ircd::ctx: Another attempt at using continuation dtor as an interruption point. 2018-12-22 13:36:48 -08:00
Jason Volk f9ee616a9a ircd::ctx::prof: Use a profile instance as a totals counter. 2018-12-21 11:55:43 -08:00
Jason Volk 9d7a53ae49 ircd::ctx: Move resume-interruption point to this_ctx::wait() suite. 2018-12-20 13:27:21 -08:00
Jason Volk a7b2f76c11 ircd::ctx: Add slice_usage_warning device. 2018-12-17 16:20:53 -08:00
Jason Volk 4686139f8e ircd::ctx: Rework the prof stack to make a public test interface. 2018-12-17 15:24:41 -08:00
Jason Volk ba10948e9d ircd::ctx: Move principal interruption point into continuation. 2018-12-16 18:37:51 -08:00
Jason Volk 2a23d9e6dd ircd::ctx: Add more interface access to pool/queue; various cleanup. 2018-12-16 16:27:11 -08:00
Jason Volk 72859c650b ircd::ctx: Convert various name character strings to string_view. 2018-12-16 16:27:11 -08:00
Jason Volk ad46a3e49a ircd::ctx: Relax object permissions. 2018-12-15 23:05:48 -08:00
Jason Volk 399198deac ircd::ctx: Add flags for slice and stack usage watchdog exemption. 2018-12-13 16:21:54 -08:00
Jason Volk 4a2ad1c186 ircd::ctx: Reorg continuation for core wakeup conditions. 2018-12-07 12:31:30 -08:00
Jason Volk 9eabd745f5 ircd::ctx: Minor cleanup. 2018-12-07 12:03:25 -08:00
Jason Volk 3af70e75c3 ircd::ctx: Minor cleanup / struct packing / type. 2018-12-07 10:13:29 -08:00
Jason Volk 4e01d2c0a4 ircd::ctx: Remove local typedef to use outer ircd:: typedef. 2018-12-07 10:13:14 -08:00
Jason Volk ce237e0b10 ircd::ctx: Export this_ctx:: to ircd. 2018-12-06 19:16:47 -08:00
Jason Volk 0c4e39b023 ircd::ctx: Relax assertion. 2018-12-05 15:15:36 -08:00
Jason Volk c74debac01 ircd::ctx: Cleanup / fixes for critical assertion related. 2018-11-29 16:12:33 -08:00
Jason Volk c891b82ebd ircd::ctx: Relayout members for package. 2018-11-15 18:46:40 -08:00
Jason Volk 48a15e026b ircd::ctx::prof: Convert the settings into conf items. 2018-11-14 18:45:10 -08:00
Jason Volk 9222de0b34 ircd::ctx: Add access to rdtsc through ctx::prof; minor comments. 2018-11-14 16:55:46 -08:00
Jason Volk fea02ba300 ircd::ctx::latch: Minor rename; add explicit move semantic. 2018-11-13 19:05:16 -08:00
Jason Volk 67e6c63580 ircd::ctx: Add additional shared_mutex timed functionality. 2018-11-13 19:05:16 -08:00
Jason Volk fe45b08f8a ircd::ctx: Refactor mutexes to reuse ctx::dock for queueing. 2018-11-13 19:05:16 -08:00
Jason Volk 8cbb354c64 ircd::ctx: Fix move assignment semantics. 2018-11-13 19:05:16 -08:00
Jason Volk bbe676a392 ircd::ctx: Split this_ctx devices into files; minor interface tweaks. 2018-11-11 14:13:37 -08:00
Jason Volk a91cdeec0c ircd::ctx: Reorg / abstract / deinline promise related. 2018-10-30 12:18:16 -07:00
Jason Volk 3ffb91d0fd ircd::ctx: Deinline to_asio continuation ctor. 2018-10-21 01:09:07 -07:00
Jason Volk 10d59dec9a ircd::ctx::dock: Make notify() an unconditional notify rather than direct jump. 2018-10-21 01:00:41 -07:00
Jason Volk 66a936233a ircd::ctx::queue: Add waiter counter. 2018-10-21 00:44:07 -07:00
Jason Volk f369af944b ircd::ctx: Remove unused peek. 2018-10-06 22:16:37 -07:00
Jason Volk d13ed5854b ircd::ctx::queue: Remove exception assertion on pops. 2018-09-19 01:44:13 -07:00
Jason Volk 592ad284f9 ircd::ctx::queue: Simplify pops; universal push. 2018-09-18 23:53:44 -07:00
Jason Volk d2fbc30d4e ircd::ctx: Use better notify member here. 2018-09-18 21:41:21 -07:00
Jason Volk be7a20d39a ircd::ctx: Move any renotifying to the ctx::dock itself. 2018-09-18 21:35:27 -07:00
Jason Volk 3b960d2576 ircd: Add misc assertions. 2018-09-18 21:24:19 -07:00
Jason Volk 5698637dd6 ircd::ctx::pool: Use ctx::queue for pool's queue. 2018-09-18 16:45:04 -07:00
Jason Volk a66c312c92 ircd::ctx::queue: Renotify the dock on context interruption, then propagate. 2018-09-18 16:43:50 -07:00
Jason Volk 7d94b1c17b ircd: Relax noexcept in std::function template declarations. 2018-09-13 05:12:25 -07:00
Jason Volk 5e06c4795b ircd: Replace any std::uncaught_exception() -> std::uncaught_exceptions(). 2018-09-13 05:02:24 -07:00
Jason Volk 5f9c12bddc ircd::ctx: Break down when() templates; fix mutability. 2018-08-30 21:20:43 -07:00
Jason Volk 4b2ff18f6c ircd::ctx: Add ADL'ed state() convenience for promise template. 2018-08-30 19:53:16 -07:00
Jason Volk 0f2dd85a47 ircd::ctx: Disable interrupt for the view producer sequence. 2018-08-28 18:58:09 -07:00
Jason Volk 76e48b3ef3 ircd::ctx: Test for valid then() before calling from here. 2018-08-28 18:58:09 -07:00
Jason Volk edbc0984c5 ircd::ctx: Linkage for default and move semantics of ctx::context. 2018-08-26 20:46:59 -07:00
Jason Volk 0eaa2fe211 ircd::ctx: Add motivation section to README. 2018-08-26 20:46:59 -07:00
Jason Volk 04175d62b2 ircd::ctx: Object semantics on unlock_guard<>. 2018-08-26 20:46:59 -07:00
Jason Volk 600a73d566 ircd::ctx: Add an upgrade_lock<> template. 2018-08-26 20:46:59 -07:00
Jason Volk 3a8f3c58de ircd::ctx: Add some indicators on shared_mutex. 2018-08-26 18:01:12 -07:00
Jason Volk 26d062e3f7 ircd::ctx: Fix erroneous have-include guard here. 2018-08-26 17:19:53 -07:00
Jason Volk 6cdb1bba63 ircd::ctx: Add pool::set convenience. 2018-08-22 14:37:40 -07:00
Jason Volk ff66bc441c ircd::ctx: Stack uninterruptible's gracefully; assume context. 2018-08-19 20:11:41 -07:00
Jason Volk f4a4674daa ircd::ctx::pool: Add a terminate(); cleanup del(). 2018-08-19 15:55:35 -07:00
Jason Volk 32c0d08928 ircd::ctx: Minor cleanup. 2018-08-19 15:53:10 -07:00
Jason Volk 0a822212e1 ircd::ctx: Add latch (concurrency TS). 2018-08-18 19:29:00 -07:00
Jason Volk a33b4b05de ircd::ctx: Proper condition variable exclusion semantics. 2018-08-17 13:30:04 -07:00
Jason Volk 83cbfea75d ircd::ctx: Minor cleanup. 2018-08-15 08:21:03 -07:00
Jason Volk 668d12bf72 ircd::ctx: Fix future_state test grate. 2018-07-06 16:33:53 -07:00
Jason Volk da5d767431 ircd::ctx: Fix pointer punning in promise / shared_state. 2018-07-06 00:26:34 -07:00
Jason Volk b8aba99ed4 ircd::ctx: Assert release sequence is happening on ctx. 2018-06-01 12:36:46 -07:00
Jason Volk f61d0a30ec ircd::ctx: Add condition_variable for interface compat. 2018-06-01 12:36:46 -07:00
Jason Volk 2404e1adad ircd::ctx: Add mutex::locked() to query if locked. 2018-06-01 07:48:23 -07:00
Jason Volk 5b52ac3103 ircd::ctx: Remove argument from continuation ctor. 2018-05-25 23:50:20 -07:00
Jason Volk 7e8ec1ca63 ircd::ctx: Support interrupt suppression; suite. 2018-05-22 00:22:56 -07:00
Jason Volk e205755d5e ircd::ctx: Add ctx::critical_indicator. 2018-05-07 12:38:24 -07:00
Jason Volk e15ac0d1d3 ircd::ctx: Add state for counting context switches. 2018-05-07 12:36:33 -07:00
Jason Volk 48055cb276 ircd::ctx: Add special termination interruption to yanagiba the stack. 2018-05-06 02:06:08 -07:00
Jason Volk 1059688d02 ircd::ctx: Add state for stack usage profiling; clarify some interfaces. 2018-05-05 23:14:11 -07:00
Jason Volk f55304e0a1 ircd::ctx: Add slice total counter; move check_stack after timing sample. 2018-05-05 22:42:25 -07:00
Jason Volk ea42490b4e ircd::ctx: Consolidate slice timing to tsc; add public interfacing. 2018-05-05 22:24:25 -07:00
Jason Volk 4cd0570d56 ircd::ctx: Resolve proper future::state() in when() templates. 2018-05-05 02:00:11 -07:00
Jason Volk bcece15c54 ircd::ctx: Add README blerb on context switching. 2018-05-04 20:43:05 -07:00
Jason Volk 0f161f98e8 ircd::ctx::list: Fix misleading reference. 2018-04-28 03:26:07 -07:00
Jason Volk dc5ac7c2ac ircd::ctx: #ifdef away linkages for ctx assertions in NDEBUG builds. 2018-04-27 19:16:56 -07:00
Jason Volk 3fcb8a1236 ircd::ctx: Simplify promise notify continuation for now. 2018-04-27 19:09:26 -07:00
Jason Volk 09c282fd8e ircd::ctx: Add stack_usage_assertion; move stack_usage_here() into this_ctx::. 2018-04-27 19:09:26 -07:00
Jason Volk 1dcfff91a5 ircd::ctx: Expose stack_max() to public interface. 2018-04-19 21:42:54 -07:00
Jason Volk 35a1c62b1f ircd::ctx: Add ctx::running()/waiting() for interface completeness. 2018-04-19 21:42:54 -07:00
Jason Volk 3b32d2170e ircd::ctx: Give ctx::ctx the instance_list. 2018-04-19 21:42:54 -07:00
Jason Volk 281a9e1cfd ircd::ctx: Place ctx::list node pointers into structure in ctx. 2018-04-19 21:42:54 -07:00
Jason Volk 793c24ce9e ircd::ctx: Simplify list iteration API. 2018-04-19 14:47:56 -07:00
Jason Volk c3062e80f1 ircd::ctx: Fix bitrot in when_all() template. 2018-04-10 20:09:17 -07:00
Jason Volk 8d91c90574 ircd::ctx: yield the promise-notifying ctx until any then() has posted. 2018-04-07 05:00:55 -07:00
Jason Volk b0c687ea0e ircd::ctx: Assertions for calling then(). 2018-04-07 05:00:54 -07:00
Jason Volk 8d0681e7b1 ircd::ctx: Eliminate the std future_status and simplify our real-use interfaces. 2018-04-05 22:16:32 -07:00
Jason Volk 4760d36847 ircd::ctx: Move unlock_guard from util:: to ctx::. 2018-03-28 22:17:09 -07:00
Jason Volk 543a1988b9 ircd::ctx: Candidate fixes for view sequencing. 2018-03-27 21:44:01 -07:00
Jason Volk 8f9caa33c3 ircd::ctx: Conclude the best name for function after deliberation. 2018-03-27 00:52:02 -07:00
Jason Volk 5b91cbdca1 ircd::ctx: Add share counter observer to shared_mutex. 2018-03-26 23:29:58 -07:00
Jason Volk 807f3c4545 ircd::ctx: view::wait_until() needs to throw on timeout. 2018-03-26 23:29:58 -07:00
Jason Volk 26b33a1845 ircd::ctx: Remove the cv_status enum. 2018-03-26 23:29:58 -07:00
Jason Volk c6b9c06302 ircd::ctx: Avoid any possible ambiguities with location of *current. 2018-03-26 23:29:57 -07:00
Jason Volk a2eb756548 ircd::ctx: Split this_ctx:: from ctx.h; minor reorg. 2018-03-25 02:04:42 -07:00
Jason Volk 441a692dfc ircd::ctx: Device to allow context switching in exception handler. 2018-03-24 18:00:04 -07:00
Jason Volk 4ac88356d9 ircd::ctx: Ignore strict aliasing for hacks we never dereference. 2018-03-23 23:11:03 -07:00
Jason Volk db8810e397 ircd::ctx: Integrate custom interruption action. 2018-03-23 22:17:10 -07:00
Jason Volk 12e5a3ccea ircd::ctx: Update stale comment. 2018-03-22 22:27:12 -07:00
Jason Volk 3810b8d57f ircd: Various exception assertions; minor cleanup. 2018-03-15 22:25:16 -07:00
Jason Volk fbcc64fbbd ircd::ctx: Atomize the dock notification and the then callback during promise notify(). 2018-03-15 13:16:28 -07:00
Jason Volk fbb9cf0196 ircd::ctx: Cleanup/improve the shared_state states. 2018-03-15 11:59:25 -07:00
Jason Volk da5bca588d ircd::ctx: Have future inherit from the shared_state rather than class member. 2018-03-14 13:16:06 -07:00
Jason Volk 465e0f526c ircd::ctx: Move when_any()/when_all() into file. 2018-03-14 11:25:53 -07:00
Jason Volk 3242c1929b ircd::ctx: Cleanup future when suite related. 2018-03-11 14:51:14 -07:00
Jason Volk d906025c28 ircd::ctx: Replace missed old copyright. 2018-03-11 13:54:51 -07:00
Jason Volk ee48df71a8 ircd::ctx: Add future<void> already-ready constructor. 2018-03-11 13:40:24 -07:00
Jason Volk a2be4d3ee5 ircd::ctx: Add when_any() / when_all(). 2018-03-10 23:04:59 -08:00
Jason Volk 07c1356dae ircd::ctx: Improve promise / future behaviors; cleanup. 2018-03-10 23:04:59 -08:00
Jason Volk 30700b2ad8 ircd::ctx: Support future continuation. 2018-03-10 23:04:59 -08:00
Jason Volk 00ba8ebdb4 ircd::ctx: Factor shared_ptr out of promise/future. 2018-03-10 23:04:58 -08:00
Jason Volk 4fa33bdc60 Revert "ircd::ctx: Add nodejs-style future::then() rather than libstd experimental TS."
This reverts commit 37569559cf.
2018-03-09 19:41:16 -08:00
Jason Volk 37569559cf ircd::ctx: Add nodejs-style future::then() rather than libstd experimental TS. 2018-03-07 09:13:55 -08:00
Jason Volk 6d0c74a064 ircd::ctx: Remove the promise/state reset(): should expect assignment instead. 2018-03-07 09:07:13 -08:00
Jason Volk bc184b4d52 ircd::ctx: Have futures throw timeout exceptions by default; add nothrows. 2018-03-07 08:17:50 -08:00
Jason Volk 2ef5f4c72c ircd::ctx: Rename notify to expose. 2018-03-06 03:50:39 -08:00
Jason Volk 29f08d3615 ircd::ctx: Add functions to peek at the queue size of the mutexes. 2018-03-06 01:09:37 -08:00
Jason Volk f7223b0688 ircd::ctx: Consolidate view and shared_view with more template. 2018-03-05 05:49:26 -08:00
Jason Volk d673ce16d4 ircd::ctx: Relax noinline attribute on prof::stack_usage_here() wrapper. 2018-02-20 15:40:40 -08:00
Jason Volk be624ca7f6 Update Copyrastafaris. 2018-02-05 21:24:34 -08:00
Jason Volk 43923a1cf1 ircd::ctx: Minor formatting. 2018-01-22 00:54:52 -08:00
Jason Volk 78b77f9da8 ircd::ctx: Eliminate the shared_ptr in pool::async; minor cleanup. 2018-01-18 06:05:56 -08:00
Jason Volk 6fc8de8587 ircd::ctx: Enforce semantics in mutex / shared_mutex; assertion related. 2018-01-17 03:33:08 -08:00
Jason Volk b93b294d7b ircd::ctx: Validate all state access in ctx::promise. 2018-01-17 03:33:08 -08:00
Jason Volk 59e921d453 ircd::ctx: Enforce semantics on ctx::list. 2018-01-17 03:33:08 -08:00
Jason Volk 8366c735b4 ircd::ctx: Add this non-standard finished() observer for now. 2018-01-16 22:54:08 -08:00
Jason Volk e4b1485db0 ircd::ctx: Specify missing semantics for promise. 2018-01-15 18:00:54 -08:00
Jason Volk 7b62568ff0 ircd::ctx: Replace std::deque's in ctx::mutex and ctx::shared_mutex. 2018-01-13 23:45:36 -08:00
Jason Volk dcd36f8200 ircd::ctx: Replace the std::deque with a ctx::list for ctx::dock's queue. 2018-01-13 23:45:36 -08:00
Jason Volk df0e59a5e0 ircd::ctx: Add custom intrinsic list structure for contexts. 2018-01-13 23:45:36 -08:00
Jason Volk 29b135de0a ircd::ctx: Export critical_assertion down to ircd::. 2018-01-11 18:37:08 -08:00
Jason Volk 4fa7ad9286 ircd::ctx: Add use_future_t; minor cleanup. 2018-01-08 12:40:09 -08:00
Jason Volk 0cafcd7b84 ircd::ctx: Update async() with moveable promise. 2018-01-08 12:39:05 -08:00