254 Commits

Author SHA1 Message Date
hayodea 54dcc92c2b Printing: print fewer newlines 2026-06-11 11:17:06 -04:00
hayodea d118181766 ApiMgrs: fix segfault from use-after-free 2026-06-10 22:44:53 -04:00
hayodea 82b99e680c ComparatorLibs: Add stringify to hierarchy for easy printing 2026-06-10 22:43:39 -04:00
hayodea 8836ab470b Wire comparator CLI, marionette threading model, and final load order.
Initialize SmoThreadingModelDesc from marionette before body startup, load
comparator libs before stimbuff via -c/--comparator-lib, and drop the hardcoded
libcomparatorCore.so load path.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-10 21:17:52 -04:00
hayodea 560e5364a0 Extract SmoCallbacks and SmoThreadingModelDesc into smoHooks.h.
Move shared hook and threading-model types out of senseApiDesc.h so both
stimbuff and comparator libraries can include them without pulling in API descs.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-10 21:16:55 -04:00
hayodea ab930a2df3 Add ComparatorApiManager with SmoCallbacks hooks and startup load.
Register comparator types via a dedicated manager and expose lookup/create
hooks through SmoCallbacks so stimbuff libs can resolve comparators at load time.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-10 21:16:05 -04:00
hayodea 7eda755c15 Add LoadableLibraryManager and refactor StimBuffApiManager to use it.
Centralize dlopen/search in LoadableLibraryManager so typed library managers
can share one loaded-shlib registry without duplicating load/unload logic.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-10 21:14:55 -04:00
hayodea 22a4cf283e These should always run on caller's thread. 2026-06-10 04:13:25 -04:00
hayodea 87a8de9a2b StimProd,DevReattacher: use CDaemon nonviral nursery coro
We ported these two daemons over to the new nursery mechanism and
they work nicely.
2026-06-09 19:47:44 -04:00
hayodea 91fc655b25 Nursery: Initial integration
StimulusProducer: syncAwaitAllSettlements should pump caller io_context
2026-06-09 16:03:25 -04:00
hayodea b2644f17c6 Exceptions: All of smocore likely now uses exceptions 2026-06-07 19:37:50 -04:00
hayodea f97641f8b5 Exceptions: Straight line convention refactor 2026-06-06 19:24:19 -04:00
hayodea d1c74a027c Use DynamicViralPostingInvoker in at/detachStimBuffDeviceCReq 2026-05-31 07:13:53 -04:00
hayodea c2eea37a7b PostingPromise: reorder post-to target to be 1st arg 2026-05-30 21:46:19 -04:00
hayodea ac39a8b876 Spinscale: add dynamic coro post-to targeting; test on dev reattacher 2026-05-30 20:46:41 -04:00
hayodea acf62e61da Remove boostAsioLinkageFix 2026-05-30 12:12:59 -04:00
hayodea 4266af545a Boost.ASIO: upgrade io_service=>io_context, finally 2026-05-30 12:01:00 -04:00
hayodea f100764bd8 Async: Drop-in SyncCancelerForAsyncWork without execUncancelableSegment*
We're doing this to prep for the coro port
2026-05-30 10:52:15 -04:00
hayodea fc5ebb72b9 LivoxGen1: Port to coros
No longer uses CPS. We also found and documented a potential bug in
the way we deal with disablePcloudData during detachDeviceReq.
2026-05-28 15:17:50 -04:00
hayodea 7643cf7fed StimBuffApiMgr: set isBeingDestroyed just before calling finalize 2026-05-25 10:40:29 -04:00
hayodea 4186ff141e StimBuffApiMgr: initializeStimBuffApiLib default arg acquires lock 2026-05-25 09:24:49 -04:00
hayodea 3e19d39853 SenseApiDesc,xcbWindow: port to sscl coro framework
SenseApiDesc's exported API now uses coro pointers instead of
CPS fn pointers.
* Do not build this version of SMO with the Livox drivers enabled,
  because SMO has been changed at the smocore level to use coros
  when calling into stimbuffAPI libs. But the Livox drivers
  haven't yet been ported from CPS to coros.

xcbWindow has been ported to expose coros to SMO in its
senseApiDesc exported iface.
2026-05-25 08:58:36 -04:00
hayodea b5fa20a2b8 Mrntt:lifetime: if no devs attach, fail initializeCReq 2026-05-25 08:50:25 -04:00
hayodea cde2737876 Libspinscale: Initial top-level SMO port to coroutine framework
We haven't ported everything. Just the top-level methods. We'll
dig in to the leaf stuff later. Surprisingly, this all went without
any real difficulties.

Runs like a charm on first try.
2026-05-24 23:26:18 -04:00
hayodea c539e6e924 Add awaiters for DeviceManager continuations 2026-05-24 23:26:18 -04:00
hayodea 632a227985 DAPS: Add intrin specs to nontrin specs
We no longer do intrin specs as a separate stimbuff; rather now we
do them as a specifier segment within the pipeline spec of a normal
nontrin spec.
2026-04-18 12:02:27 -04:00
hayodea 06996d166e Opts: Solve OptionsParser::Exception diamond inheritance problem 2026-04-02 01:28:37 -04:00
hayodea c90f974bcb DevMgr: LockSet is no longer a template 2026-03-05 23:45:53 -04:00
hayodea aec3cbedf2 Split: Expose name via CompThr's derivatives' ctors
This completes the functional work of splitting libspinscale off
from SMO. Spinscale shouldn't have any real dependencies on SMO
from here on out.
2026-02-22 18:54:56 -04:00
hayodea 1c397dfeb5 Split: Split libspinscale off from SMO.
Now we can probably begin using libspinscale in Couresilient
without worrying about excessive technical debt later on.
2026-02-22 17:46:27 -04:00
hayodea 8011fe12bc mindThread: remove parent ref; might remove class entirely 2026-02-19 19:20:21 -04:00
hayodea ab399cafeb Improve CONFIG_WORLD_USE_BODY_THREAD handling
We no longer need to do ugly ifdefs in the constructor for
Mind::Mind because we preprocess the handling for BODY and WORLD
in SmoThreadIds.
2026-02-18 02:05:44 -04:00
hayodea 687bab53b5 Change type: PuppetComponent::thread to PuppetThread 2026-02-18 02:05:18 -04:00
hayodea 9159e9f7b4 Update: rename mrntt=>pptr 2026-02-18 01:14:26 -04:00
hayodea 686bd6d38b Dbg:TraceCallables: set cmdline flag for libspinscale 2026-02-17 11:10:24 -04:00
hayodea e4adfa0e61 Main: move CRT cmdline obj into libspinscale 2026-02-17 10:41:47 -04:00
hayodea 5a4f498663 Libspinscale: Add separate CMake project config 2025-12-28 03:44:01 -04:00
hayodea 34d76df7d9 Spinscale: create new namespace sscl 2025-12-27 16:21:22 -04:00
hayodea 0c4f427c0a Spinscale: PuppetComponent takes PuppetApplication& 2025-12-27 14:15:17 -04:00
hayodea f862db922e spinscale: Move thread init/jolt/exit logic into PuppetApplication 2025-12-27 14:01:15 -04:00
hayodea cd77f4b02d Component: Rename MindComponent=>PuppetComponent 2025-12-27 13:29:49 -04:00
hayodea 2222491c21 Use ref in ComponentThread::joltThreadReq 2025-12-26 13:46:28 -04:00
hayodea 45959f9d1c Libspinscale: begin splitting it off 2025-12-26 01:18:39 -04:00
hayodea 2dc6b729e0 Update for Autogoalation 2025-12-25 19:21:47 -04:00
hayodea 2a8d320f7a DevReattacher: Spinlock-protect stop() call
Replace the current delay timeout mechanism with a spinlock.
Both mechanisms try to eliminate the possibility of an in-flight
async op accessing state that has been destroyed by stop().

But the spinlock is less arbitrary.
2025-11-27 22:52:09 -04:00
hayodea 2c891bd2f3 Mrntt: Re-add exceptionInd
This now ensures that finalizeReq is indeed called from mrntt,
since exception-experiencing threads will post an exceptionInd
to mrntt, which will then call finalizeReq.
2025-11-23 03:27:18 -04:00
hayodea ee6405048a OClCollMeshEngn: use the central ComputeMgr APIs
We no longer create our own context and get our own OpenCL device
in OClCollMeshEngn::setup. We now request a device from the central
ComputeManager.
2025-11-20 00:55:19 -04:00
hayodea 2c7e090ef1 Move ClBuffer/ComputeDevice methods into libattachmentSupport 2025-11-20 00:53:28 -04:00
hayodea 27b43c6686 Add ComputeManager; add SmoHooks for getting ClDevices, buffers
We added a new centralized OpenCL Compute manager. This can later
be extended to support CUDA, SyCL, etc. SMO can be configured at
build time to choose which API it will use for compute.

Moreover, the ComputeMgr allows us to register buffers which are
available to all cl_contexts.
2025-11-19 22:34:25 -04:00
hayodea b598ca8594 libs: Add smohook for getting cmdline opts 2025-11-07 14:59:28 -04:00