0
0
Fork 0
mirror of https://github.com/matrix-construct/construct synced 2024-06-02 18:18:56 +02:00
Commit graph

309 commits

Author SHA1 Message Date
Jason Volk 765ec46b91 ircd::ctx::promise: Inline trivial accessors; explicit bool operator. 2019-08-13 20:53:02 -07:00
Jason Volk 42b65fa271 ircd::ctx: Add noexcept specifications; tweak inlines. 2019-08-13 20:26:08 -07:00
Jason Volk 009d417273 ircd: Indicate noexcept on advised interfaces. 2019-08-05 16:19:20 -07:00
Jason Volk ea1cd3f73d ircd::ctx: Make spawn() a ctx member function; add comments/doc. 2019-07-24 13:21:48 -07:00
Jason Volk 7dcd3fdcd8 ircd: Improve log format consistency. 2019-07-23 17:31:16 -07:00
Jason Volk bde9e16e5c ircd::ctx: Inline cur_slice_cycles().
modules/media/magick: Use this_ctx::cycles_here().

ircd::ctx: Improve prof::cycles API related.
2019-07-23 16:40:29 -07:00
Jason Volk 6c9dbdbef5 ircd::ctx: Add queued(ctx) state to interface. 2019-07-21 18:07:26 -07:00
Jason Volk e36a3035a4 ircd::ctx: Use a pseudo ios::descriptor to include contexts in ircd::ios. 2019-07-21 17:55:58 -07:00
Jason Volk 471c08a41e ircd::ctx: Split exception_handler w/ cxxabi header requirement. 2019-07-21 15:29:16 -07:00
Jason Volk d19e960c58 ircd: Split ctx::ole to definition file. 2019-07-11 15:51:09 -07:00
Jason Volk be0fad506e ircd::ctx: Move macro condition to internal header. 2019-07-11 15:51:09 -07:00
Jason Volk ab25346534 ircd::ctx: Tweak exception_handler. 2019-07-09 02:33:27 -07:00
Jason Volk 7af8e5774c ircd::ios: Add no-op synchronous defer overload; use w/ this_ctx::yield(). 2019-07-05 17:37:04 -07:00
Jason Volk 708b34092f ircd::ctx: Handle exception before unwind of class members; comments. 2019-06-23 16:46:41 -07:00
Jason Volk cf3b1218c4 ircd: Misc fixes for clang. 2019-06-23 16:22:06 -06:00
Jason Volk 801f0d57b7 ircd: Fix attributes for clang. 2019-06-23 07:37:23 -06:00
Jason Volk 534afe8859 ircd: No need to move x-values. 2019-06-22 17:36:42 -06:00
Jason Volk 3ccb7c1faa ircd: Belay narrowing conversions. 2019-06-22 17:36:37 -06:00
Jason Volk b06670266d ircd::ctx: Add assertion on slice_enter TSC. 2019-06-05 12:57:19 -07:00
Jason Volk 8474b891eb ircd::ctx: Rename function; add overload for total value. 2019-05-26 02:49:24 -07:00
Jason Volk e88f18d65c ircd::ctx: Internalize prof::mark() for unconditional event counting. 2019-05-26 02:49:24 -07:00
Jason Volk ddc17f424d ircd::ctx: Use defer rather than post here. 2019-05-02 21:43:27 -07:00
Jason Volk 30b59f4736 ircd::prof: Reorg; deinline various; add comments. 2019-04-25 21:10:45 -07:00
Jason Volk eaec5cb65e ircd::ctx: Make this a critical error. 2019-04-24 16:28:42 -07:00
Jason Volk 4db52804cb ircd::ctx: Use iteration closure rather than exposing ctx::list. 2019-04-19 20:50:22 -07:00
Jason Volk 4038973297 ircd::util: Use allocator::node for instance_list instances. 2019-04-16 20:48:00 -07:00
Jason Volk 0e0d95b266 ircd::ctx: Fix comment error. 2019-04-15 14:44:58 -07:00
Jason Volk 8c68a24e1f ircd::ctx::prof: Add cycle counter to ticker array. 2019-04-12 15:58:06 -07:00
Jason Volk d8bf5b9fff ircd::ctx: Add a syscall_usage_warning to suite. 2019-04-10 20:18:50 -07:00
Jason Volk 3a68b65fe8 ircd::ctx: Optimize with no_stack_unwind attribute since it's done by us. 2019-04-05 18:12:23 -07:00
Jason Volk 63c850b123 ircd: Rename perf:: to prof::. 2019-04-03 15:51:42 -07:00
Jason Volk 403bf52867 ircd::perf: Start a perf profiling subsystem; move ctx::prof counter utils. 2019-03-31 18:16:18 -07:00
Jason Volk 672bb6f10c ircd::ctx: Fix detach-mode deallocation points. 2019-03-30 13:08:04 -07:00
Jason Volk 55241c5309 ircd::ctx: Expand the reference cycle counting interface. 2019-03-27 13:04:12 -07:00
Jason Volk 28063823dd ircd::ctx: Inline rdtsc(). 2019-03-27 13:04:12 -07:00
Jason Volk d2546120ee ircd: Add descriptor participation for all asynchronous operations. 2019-03-27 13:04:12 -07:00
Jason Volk 3bc716e0f5 ircd::ctx: Assert ctx doesn't finish with uncaught exceptions. 2019-03-27 13:04:12 -07:00
Jason Volk 6fbd29b1ed ircd::ctx: Add context::WAIT_JOIN feature flag. 2019-03-27 13:04:12 -07:00
Jason Volk 77648137e9 Revert "ircd: Remove use of all unwind::exceptional and unwind::nominal devices."
This reverts commit 4f243826c2.
2019-03-22 21:06:28 -07:00
Jason Volk 712409218e ircd::ctx: Manipulate uncaught exception count on context switch. 2019-03-22 21:06:28 -07:00
Jason Volk 5be75970e0 ircd::ctx: Ensure no rethrow from destructor. 2019-03-17 15:35:19 -07:00
Jason Volk cff17eaa40 ircd: Add exception tools which elide copying. 2019-03-16 16:28:28 -07:00
Jason Volk 4f243826c2 ircd: Remove use of all unwind::exceptional and unwind::nominal devices. 2019-03-12 18:41:05 -07:00
Jason Volk 47bcfaecb4 ircd: Upgrade various templates with argument deduction. 2019-03-02 14:20:52 -08:00
Jason Volk 87ace85840 ircd::ctx::promise: Add missing valid() checks on operations. 2019-02-28 17:12:04 -08:00
Jason Volk af6ac4a2ac ircd: Replace various unwind count patterns with scope_count. 2019-02-28 17:12:03 -08:00
Jason Volk 95dbc571f8 ircd::ctx: Support slice_usage_warning outside of context system too. 2019-02-12 12:04:01 -08:00
Jason Volk b687d63169 ircd::ctx: Create and use log facility. 2019-02-07 00:17:26 -08:00
Jason Volk d639eceba2 ircd: Move runlevel related into ircd::run:: namespace. 2019-01-18 09:08:56 -08:00
Jason Volk 1a53b0e6e4 ircd::ctx: Improve exception handling at base frame. 2019-01-13 16:37:31 -08:00
Jason Volk cbf456a388 ircd: Rename and refactor ircd::assertion interface into ircd::panic. 2019-01-13 16:37:31 -08:00
Jason Volk 4871928bfa ircd::ctx: Partial de-inline of dock methods. 2019-01-13 13:57:34 -08:00
Jason Volk 16ebbbfa8a ircd::ctx: Move and adjust default stack size. 2018-12-28 14:07:40 -08:00
Jason Volk a66d5082d7 ircd::ctx: Prevent spawning initial pool contexts when no ios available. 2018-12-28 13:24:33 -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 5ae69dde95 ircd::ctx: Check for termination to condition pool work loop. 2018-12-27 17:20:43 -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 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 70ebf4b066 ircd::ctx: Use thread_local for these. 2018-12-23 17:26:41 -08:00
Jason Volk 599831f680 ircd::ctx: Condition the prof checks on NDEBUG. 2018-12-22 21:27:19 -08:00
Jason Volk 894a947e24 ircd::ctx: Add specific define to activate prof::mark() for build. 2018-12-22 21:17:12 -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 a590ad1a03 ircd::ctx: Another attempt at using continuation dtor as an interruption point. 2018-12-22 13:36:48 -08:00
Jason Volk 0ed9382db0 ircd::ctx: Reorder the interruption point conditional branches. 2018-12-22 13:19:02 -08:00
Jason Volk b5f4aeb67d ircd::ctx: Assert ctx dtor isn't called while running. 2018-12-22 13:04:02 -08:00
Jason Volk 48b50acab2 ircd::ctx: Cleanup and recondition stack-protect related. 2018-12-22 13:04:02 -08:00
Jason Volk 08c940d0df ircd::ctx: Use better interruption check; remove func condition. 2018-12-21 18:22:44 -08:00
Jason Volk 5e196ce0ac ircd::ctx: Emit stack_protect in some places. 2018-12-21 17:18:41 -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 67e6d363db ircd::ctx: Add interruption point before yield to asio. 2018-12-20 14:21:48 -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 ddfafd45e2 ircd::ctx: Exempt SLICE_EXEMPT contexts from slice_usage_warning. 2018-12-18 18:10:06 -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 2c713cc9a5 ircd::ctx: Tweak interruption point to asio; add comments. 2018-12-17 12:16:04 -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 98cb7693f3 ircd::ctx: Set context to NOINTERRUPT rather than clearing TERMINATED like an INTERRUPTED. 2018-12-15 18:18:00 -08:00
Jason Volk 7471bf54f4 ircd::ctx: Improve/conform some watchdog log messages. 2018-12-15 18:18:00 -08:00
Jason Volk a3613b1f4c ircd::ctx: Don't persist conf items for slice/stack assertions. 2018-12-13 16:25:42 -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 3df645fcfb ircd::ctx: Improve some prof log messages. 2018-12-13 15:19:26 -08:00
Jason Volk 41602087f4 ircd::ctx: Simplify flags type; fix flags test. 2018-12-07 12:45:05 -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 418bbc0441 ircd::ctx: Minor simplify type elaborations. 2018-12-07 11:01:16 -08:00
Jason Volk 3af70e75c3 ircd::ctx: Minor cleanup / struct packing / type. 2018-12-07 10:13:29 -08:00
Jason Volk caa92a98c3 ircd::ctx: Don't execute an interrupt handler for uninterruptible ctx. 2018-12-06 19:07:36 -08:00
Jason Volk bacfa6de95 ircd::ctx: Assert interruption points aren't useless calls. 2018-12-06 19:04:31 -08:00
Jason Volk c74debac01 ircd::ctx: Cleanup / fixes for critical assertion related. 2018-11-29 16:12:33 -08:00
Jason Volk 46690f433c ircd::ctx: Condition rdtsc linkage based on x86intrin availability. 2018-11-14 18:45:10 -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 bbe676a392 ircd::ctx: Split this_ctx devices into files; minor interface tweaks. 2018-11-11 14:13:37 -08:00
Jason Volk 7c815116a6 ircd::ctx: Fix comment typo. 2018-11-06 19:48:06 -08:00
Jason Volk a91cdeec0c ircd::ctx: Reorg / abstract / deinline promise related. 2018-10-30 12:18:16 -07:00
Jason Volk e6dd4beaaa ircd::ctx: Harder default interruption on context dtor. 2018-10-23 10:16:15 -07:00
Jason Volk 3ffb91d0fd ircd::ctx: Deinline to_asio continuation ctor. 2018-10-21 01:09:07 -07:00
Jason Volk 02f64c7f34 ircd: Add ios unit to provide a more central control point for asio. 2018-10-17 05:12:10 -07:00
Jason Volk 0e7a55d3b3 ircd::ctx::pool: Use queue push() instead of emplace(). 2018-09-18 21:56:36 -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 7d94b1c17b ircd: Relax noexcept in std::function template declarations. 2018-09-13 05:12:25 -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 a4e4424ede ircd: Improve main control flow for termination condition during init. 2018-08-28 15:04:23 -07:00
Jason Volk 2a11c33c9f ircd::ctx: More list assertions. 2018-08-27 01:45:31 -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 6cdb1bba63 ircd::ctx: Add pool::set convenience. 2018-08-22 14:37:40 -07:00
Jason Volk 7fb2a825a1 ircd::ctx: Minor cleanup. 2018-08-21 08:10:37 -07:00
Jason Volk 57ea362daa ircd::ctx: Fix stale comment. 2018-08-21 04:57:36 -07:00
Jason Volk 85d4a4f5ed ircd::ctx: Further tweak interruption masking semantics. 2018-08-19 20:11:41 -07:00
Jason Volk ff66bc441c ircd::ctx: Stack uninterruptible's gracefully; assume context. 2018-08-19 20:11:41 -07:00
Jason Volk 10434c96c5 ircd::ctx: Consistent use of interruption. 2018-08-19 18:29:46 -07:00
Jason Volk 38c5679b5a ircd::ctx: Use terminate() rather than interrupt() during ~context(). 2018-08-19 18:18:15 -07:00
Jason Volk 1492770f6b ircd::ctx: Various minor fixes. 2018-08-19 18:09:04 -07:00
Jason Volk ccf5b79e6a ircd::ctx: Allow this_ctx::interruption toggle to no-op if no ctx. 2018-08-19 17:43:25 -07:00
Jason Volk b796668a77 ircd::ctx: Minor movement/cleanup. 2018-08-19 16:21:33 -07:00
Jason Volk f4a4674daa ircd::ctx::pool: Add a terminate(); cleanup del(). 2018-08-19 15:55:35 -07:00
Jason Volk 141f4e1c0a ircd::ctx: Move this branch condition. 2018-08-17 21:31:54 -07:00
Jason Volk fe69a41255 ircd::ctx::pool: Fix dtor; use terminate() rather than interrupt(). 2018-08-17 12:51:49 -07:00
Jason Volk c8902654a0 ircd::ctx: Detach context in dtor on main/async stacks. 2018-05-28 07:04:06 -07:00
Jason Volk 5b52ac3103 ircd::ctx: Remove argument from continuation ctor. 2018-05-25 23:50:20 -07:00
Jason Volk 3746c25f20 ircd::ctx::ole: Add crude pooling. 2018-05-25 20:21:36 -07:00
Jason Volk 956c67beca ircd::ctx: Use dock for better adjoindre semantics. 2018-05-22 18:06:18 -07:00
Jason Volk f68f3bbb9c ircd::ctx: Organize stack and profile related into specific structures. 2018-05-22 18:03:18 -07:00
Jason Volk 0e169fe4a4 ircd::ctx: Stop interrupt propagation at pool function base. 2018-05-22 05:49:38 -07:00
Jason Volk d901257745 ircd::ctx: Use NOINTERRUPT flag for termination suppression as well. 2018-05-22 00:24:48 -07:00
Jason Volk f17f9685ec ircd::ctx::ole: Use interrupt suppression scope while offloaded. 2018-05-22 00:22:57 -07:00
Jason Volk 7e8ec1ca63 ircd::ctx: Support interrupt suppression; suite. 2018-05-22 00:22:56 -07:00
Jason Volk 5000397f12 ircd::ctx: Fix erroneous comment. 2018-05-07 12:37:44 -07:00
Jason Volk e15ac0d1d3 ircd::ctx: Add state for counting context switches. 2018-05-07 12:36:33 -07:00
Jason Volk 003ecf6357 ircd: Remove / update various ctx::interrupted catch blocks for ctx::terminated. 2018-05-06 02:06:08 -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 ec0153c4da ircd::ctx: Split into internal header. 2018-05-05 21:24:17 -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 09c282fd8e ircd::ctx: Add stack_usage_assertion; move stack_usage_here() into this_ctx::. 2018-04-27 19:09:26 -07:00
Jason Volk 2a7cb42c98 ircd::ctx: Minor ctx object semantic elaboration. 2018-04-20 00:44:45 -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