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
|
40b3bdaa89
|
ircd::ctx::prof: Add uint argument for rdpmc; minor cleanup.
|
2019-03-31 13:24:11 -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
|
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
|
07b746d633
|
ircd::ctx: Add scope_notify device.
|
2019-03-21 16:46:04 -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
|
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
|
54224e9679
|
ircd::ctx: Add allocator to ctx::queue template.
|
2019-02-28 11:34:45 -08:00 |
|
Jason Volk
|
43797c2b74
|
ircd::ctx::queue: Switch to std::deque backing.
|
2019-02-28 10:12:30 -08:00 |
|
Jason Volk
|
4f721f48e5
|
Eliminate friend-injection.
|
2019-02-15 18:48:59 -08:00 |
|
Jason Volk
|
b687d63169
|
ircd::ctx: Create and use log facility.
|
2019-02-07 00:17:26 -08:00 |
|
Jason Volk
|
a30c808b0e
|
ircd: Start a README.md for any directory missing one; fix conformity of existing.
|
2019-01-26 12:29:08 -08:00 |
|
Jason Volk
|
3e9b830206
|
ircd::ctx::parallel: Block interruption when calling sender().
|
2019-01-25 17:03:29 -08:00 |
|
Jason Volk
|
79dc0955b4
|
ircd::ctx::parallel: Fix counter regressions.
|
2019-01-22 14:25:05 -08:00 |
|
Jason Volk
|
defed2c008
|
ircd::ctx::parallel: Use monotonic counters only; use copy for closure argument.
|
2019-01-21 12:22:50 -08:00 |
|
Jason Volk
|
52e6c28383
|
ircd::ctx::parallel: Simplify internal interface.
|
2019-01-18 14:54:04 -08:00 |
|
Jason Volk
|
8f4fe97286
|
ircd::ctx::parallel: Various cleanup; clarify counting mechanisms.
|
2019-01-17 15:51:41 -08:00 |
|
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 |
|