OpenBinder

Created on 2021-11-26T00:29:34-06:00

Return to the Index

This card pertains to a resource available on the internet.

This card can also be read via Gemini.

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.