hayodea
32179eee5e
Qutexes: Implement them and supporting classes
...
Implements: LockSet, SerializedAsynchronousContinuation,
LockerAndInvoker, LockerAndInvokerBase, Qutex.
Very big leap in functionality here. See qutexes.md for
an explanation of what we've done.
2025-09-20 18:20:52 -04:00
hayodea
f05c465d61
Docs:Qutexes Update design but it's not reflective of impl
2025-09-20 18:14:17 -04:00
hayodea
79c50ff191
Docs: Qutex.md: update
2025-09-19 21:36:59 -04:00
hayodea
d10217f3f5
Docs: update qutex algo plan
2025-09-19 18:52:27 -04:00
hayodea
4b0e832e27
Asnc: LockSet is now a member of serializedAsyncCont; not base class
...
We needed to pass in a ref to the parent SerializedAsyncContin, so
we had to make it a member var instead of a base class.
2025-09-19 01:32:52 -04:00
hayodea
dd9ce63cb8
Locking:Qutex: Skeleton for Qutex class
2025-09-19 01:19:09 -04:00
hayodea
b9322c5e89
Docs: Qutex updated notes -- still WIP
2025-09-19 01:18:32 -04:00
hayodea
2dfa615eb7
Rename: lockSpec.h=>lockSet.h
2025-09-18 23:05:44 -04:00
hayodea
596bc1fbd2
SpinLock: Add acquire/release() and spinPause()
...
We're very careful to ensure that we add a cpu_relax hint.
2025-09-18 23:01:49 -04:00
hayodea
ec50526804
Rename: LockSpec=>LockSet
2025-09-18 22:21:06 -04:00
hayodea
eb3366cfd2
Async: Move callOriginalCb out of AsyncCont base, into NonPostedAC
...
The reasoning here is to prevent silent invocations of
callOriginalCb from a base class pointer/ref.
2025-09-18 22:10:17 -04:00
hayodea
b49e281010
Docs: New qutexes design
2025-09-18 20:29:37 -04:00
hayodea
9a23dbbe95
Whitespace
2025-09-17 18:18:09 -04:00
hayodea
5a3c0699f7
Locking: Add LockerAndInvoker to provide spinQing behaviour
...
We haven't implemented or tested this yet but it looks promising.
Also, it's surprisingly clean!
2025-09-17 16:39:11 -04:00
hayodea
816a047920
Async: new hierachy; manages reply posting and unlocking
...
Async: Use new [Non]PostedAsyncCont and callOriginalCb
This new hierarchy of classes gives us a central mechanism for
managing both reply-posting and lockSpec unlocking.
* callOriginalCb: Now uses a modern C++ variadic template design
enabling it to handle both direct calling and std::bind()
re-binding of an arbitrary number of arguments from the caller.
This enables us to mostly eliminate the repeated, bespoke
definitions of callOriginalCb littered throughout the codebase.
We've also propagated these changes throughout the codebase in
this patch.
2025-09-17 16:38:48 -04:00
hayodea
33c006b178
Locking: Add LockSpec class which manages sets of spinlocks
...
This class allows us to list a series of spinlocks that are all
acquired and released together. It has simple, primitive detection
for deadlocks and will throw if it detects one.
2025-09-17 16:29:58 -04:00
hayodea
0733bb9a68
Locking: add SpinLock class
...
Nothing much to add: add a spinlock which has a tryAcquire method.
This will be used as a primitive for building our spinQing locking
system.
2025-09-17 16:28:07 -04:00
hayodea
eeaa4ed2df
CMake: Add preliminary CPack support
...
We'll tune it later.
2025-09-16 22:19:48 -04:00
hayodea
0788bbd799
Cmake,DAPS: Add support for DAPS preprocessing
...
We add a new extension, .dapss for preprocessable DAPS spec files.
We now run the C preprocessor on the .dapss files to produce
.daps files.
2025-09-16 21:30:50 -04:00
hayodea
a6eccede4a
DAPSpecs: Formatting
2025-09-16 20:44:46 -04:00
hayodea
437f7ea10f
Postfix these files with .dapss
2025-09-16 20:08:38 -04:00
hayodea
58f7df49ae
Move DAP specs into /devices
2025-09-16 20:04:05 -04:00
hayodea
03da91f5e5
Move DAP specs into /bodies/devices
2025-09-16 19:57:19 -04:00
hayodea
02c071394b
Update todos
2025-09-16 19:54:32 -04:00
hayodea
c52c447a78
Formatting
2025-09-16 18:46:30 -04:00
hayodea
ddd6f6d6c6
CompThr: Comment on posted CBs
2025-09-16 18:45:55 -04:00
hayodea
f5c359a6a9
Update todos
2025-09-16 18:40:40 -04:00
hayodea
af33b7f097
SenseApiMgr: Make at/detachSenseDev & at/detachAllSenseDevs posted
...
They are posted to Marionette.
* We also fixed callOriginCb invocations;
* Also made posted CBs use std::bind instead of greedily
early-invoking the CB on the servicing thread's stack.
2025-09-16 18:38:06 -04:00
hayodea
92e55641a0
LivoxGen1: Replace throw with cb+early ret
2025-09-16 18:36:50 -04:00
hayodea
9e00cd1530
Formatting, indentation
2025-09-16 18:36:11 -04:00
hayodea
8fd8826f8d
Mind:threadMgmt ops: move 0-iter callback to top
2025-09-16 18:24:16 -04:00
hayodea
5d30941aab
AsyncLoop: Add copy constr + assignment op
...
Make nTotal non-const.
2025-09-16 18:20:08 -04:00
hayodea
429bd2a349
Exc: Replace with cb+ret
2025-09-16 15:10:28 -04:00
hayodea
5c79a89cd4
Body: Don't forget to finalizeAllLibs
2025-09-16 15:09:56 -04:00
hayodea
a931f9f01a
CompThr: Name segments to indicate that they're posted
2025-09-15 15:15:40 -04:00
hayodea
7f3bfec835
Mind:init/finiReq: now posted to mrntt; callbacks std:bind
...
We now have mind::initialize/finalizeReq post their requests
to Mrntt instead of executing on the caller's thread context.
We also fixed the way that we invoke callbacks by properly wrapping
it in a std::bind.
2025-09-15 15:01:26 -04:00
hayodea
19b39d391f
DevMgr: Move helper function to top
2025-09-15 14:33:42 -04:00
hayodea
674d74cfb9
DevMgr:newDevSpecInd: fix posting and async pattern conformance
2025-09-15 14:32:26 -04:00
hayodea
b768739b96
CompThr: Delete shutdownInd & exceptionInd
...
We no longer need them because we now have
mrntt::mrntt.finalizeReq(), which does a more holistic job of
shutting down Marionette (and thus, ultimately, Salmanoff).
2025-09-15 13:43:11 -04:00
hayodea
77acbdd8de
Indentation
2025-09-15 13:10:30 -04:00
hayodea
7b699d5d36
LivoxGen1: Check for 3 '.'s in smo-ip
2025-09-15 13:05:58 -04:00
hayodea
db8f047322
SApiMgr:attDevReq: use body||world thread for i/e-devs
...
We now pass in the correct ComponentThread based on the type of
device that's being attached.
2025-09-15 12:47:37 -04:00
hayodea
472184bbbc
Fix build errors with mind::globalMind and Qualia headers
2025-09-15 12:47:09 -04:00
hayodea
dd3d5fea66
Todo: update completed tasks
2025-09-15 12:45:52 -04:00
hayodea
6573a1b14d
CMake: delete subdir CMakeLists; use one CMakeList for smocore
2025-09-15 12:44:57 -04:00
hayodea
0759461c69
Mrntt:main: call mrntt:finalizeReq on exception
...
We'll wrap this in some exception-specific wrapper later.
2025-09-15 11:42:38 -04:00
hayodea
62cada2547
Bodies:dev: rename d0 to win0
2025-09-15 08:36:14 -04:00
hayodea
e755383e72
Body: postfix _posted to posted sequence methods
2025-09-15 08:33:49 -04:00
hayodea
d1e4c1a2ea
Body:finalize: Will run if even one initReq step was executed
...
If even one step in Body.initializeReq was executed at all, then
whether or not it succeeded, we consider the body component to have
been initialized, at least with respect to whether finalizeReq
ought to run.
2025-09-15 08:30:17 -04:00
hayodea
29b192b2ee
Formatting, spam-reduction
2025-09-15 08:25:49 -04:00