OpenBinder
Created on 2021-11-26T00:29:34-06:00
Binder shell: a TUI shell to interact with the way components are connected and their processes.
Support Kit
Basic building blocks (runtime; is pre-c++ boost days) library.
Basic value types are copy-on-write.
SValues are a variant type. There is a type code and a blob of bytes.
Also has vectors, sorted vectors, linked lists, ...
Atoms: the reference counting system.
Basic thread locking routines.
Get and dump call stacks.
Stopwatch for timing code.
OpenBinder
Propagate thread priority across calls: ex. a realtime thread calling another thread will promote that also to realtime.
Components are registered at unix-like paths in a virtual filesystem.
Context: the connection to the component service.
IBinder: a generic reference to some unknown binder object.
Interface Casting: interface_cast<..>(..) asks if the IBinder can provide the requested interface. If yes, return an object of that interface to make calls on.
Interfaces and compatibilities are defined in static manifest files which are machine readable.
Process management
Processes are started up to host a component when they are needed.
Processes remain alive as long as at least one reference exists to its objects.
Component could be explicitly created in a new process to provide isolation against crashes.
Links: a means for components to send events out of themselves.
Background
Designed for Be OS and Palm OS Cobalt.