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
Jason Volk
c77ee478e5
ircd::ctx: Add custom refcnt to allow copyable promise.
2017-12-29 15:32:08 -07:00
Jason Volk
04ad57965e
ircd::ctx: Fix promise move constructions etc.
2017-12-24 21:54:59 -07:00
Jason Volk
9f75f80c21
ircd::ctx: Consolidate release sequence in mutex/shared_mutex.
2017-12-24 21:54:59 -07:00
Jason Volk
fbf07913f7
ircd::ctx: Minor style/format fixes.
2017-12-24 20:25:40 -07:00
Jason Volk
91ee213c86
ircd::ctx: Add preliminary README.
2017-12-24 20:25:40 -07:00
Jason Volk
1ddf0f546a
ircd: Update various comments / documentation.
2017-12-12 14:59:40 -07:00
Jason Volk
ae289de529
ircd::ctx: Improve the pool counters.
2017-11-30 11:23:46 -08:00
Jason Volk
7723e45de5
ircd::ctx: Minor commentary.
2017-11-30 11:23:45 -08:00
Jason Volk
c16a6e8baa
ircd::ctx: Adjust prof defaults; minor cleanup.
2017-11-30 11:23:43 -08:00
Jason Volk
99e431c8da
ircd::ctx: Further fix and clarify the POST/DETACH leak potential.
2017-11-30 11:23:42 -08:00
Jason Volk
43e35786ce
ircd: Move subsystem 'index header' into subsystem directories.
2017-10-19 01:38:03 -07:00
Jason Volk
c157967559
irct::ctx: Add this basic pool debug.
2017-10-19 00:58:43 -07:00
Jason Volk
e3963da007
ircd: Various comments added/modified.
2017-10-11 18:18:20 -07:00
Jason Volk
19451ab914
ircd::ctx: shared_mutex; peek / view / shared_view; fixes.
2017-10-03 04:17:10 -07:00
Jason Volk
c47be3008a
ircd::ctx: Add a shared_mutex.
2017-10-03 04:17:09 -07:00
Jason Volk
b207b9e909
ircd: Rename ircd::scope to ircd::unwind.
2017-09-24 18:16:41 -07:00
Jason Volk
7f548cee1c
ircd: Make asio header; comments; add special continuation for yielding to asio.
2017-09-24 18:16:39 -07:00
Jason Volk
1acd278632
ircd::ctx: Updates; add ctx::view; add preliminary ctx::fault; various reorg.
2017-09-24 18:16:38 -07:00
Jason Volk
1f8fb24e8d
ircd: Update various comments.
2017-09-24 18:16:36 -07:00
Jason Volk
54d6793f59
Update various documentation and comments.
2017-09-24 18:16:33 -07:00
Jason Volk
6cd58b0d6a
ircd: Update various comments / minor cleanup.
2017-09-24 18:16:32 -07:00
Jason Volk
f98be1582d
ircd::ctx: Expose stack usage functions to user.
2017-09-08 03:47:50 -07:00
Jason Volk
d9a4f06bf6
ircd: Employ namespace scope extensions from c++1z/gnu++14.
...
This is not a move to c++17. If the compiler happens to have support
for c++17 namespace scope resolution, they have been kind enough to
backport it to gnu++14. This limits our support for really old c++14
compilers, but that was limited anyway. GCC 6.1 and clang 3.6 tested.
2017-09-08 03:47:46 -07:00
Jason Volk
3610dd9f9b
ircd::ctx: Minor fix.
2017-08-23 15:34:22 -06:00
Jason Volk
a880e2e43e
ircd::ctx: Add minor commentary.
2017-08-23 14:59:27 -06:00
Jason Volk
b579d7dfc3
ircd::ctx: Add strand()/notify() with threadsafe_t.
2017-04-02 20:52:30 -07:00
Jason Volk
3a31c62681
ircd: Minor cleanup.
2017-03-30 16:04:20 -07:00
Jason Volk
c604b391be
ircd::ctx: Support direct context switching without enqueueing with ios.
2017-03-30 16:04:19 -07:00
Jason Volk
5a7852a0d4
ircd: Various cleanup.
2017-03-30 16:04:19 -07:00
Jason Volk
b592b69b86
What is the Matrix? Control.
2017-03-10 17:51:18 -08:00
Jason Volk
e3f3543d65
ircd::ctx: Zero the interruption flag before the throw to user handler.
2016-11-25 19:23:47 -08:00
Jason Volk
f54c4215b4
ircd::ctx: Add queue: amalgam of a standard queue container with a dock.
2016-11-13 16:32:42 -08:00
Jason Volk
b0bc025ced
ircd::ctx: Add notify() to dock to rotate the waiters in contrast to notify_one().
2016-11-13 16:32:42 -08:00
Jason Volk
2f645941a8
ircd::ctx: Move ctx headers into directory.
2016-11-13 16:29:45 -08:00