Skip to content

Send dbus signals from the main thread#322

Open
sgunes-wirepas wants to merge 1 commit into
masterfrom
dbus_threading
Open

Send dbus signals from the main thread#322
sgunes-wirepas wants to merge 1 commit into
masterfrom
dbus_threading

Conversation

@sgunes-wirepas
Copy link
Copy Markdown
Contributor

Related to #320.

Callbacks set via WPC_register_for_data and WPC_register_for_stack_status are called from c-mesh-api's dispatch thread.

Earlier, these callbacks were sending the dbus signals as well. This presented potential problems because sd_bus is not thread safe, and in this case the main thread and the dispatch thread could access the same dbus connection (m_bus).

The callbacks now only pass the data to a ring buffer (event_queue.h) which the main thread reads from. The event queue uses an eventfd to signal when a new event was added to it.

A main loop is now added as described in sd_bus_get_fd(3) manual. The loop polls the dbus and event queue file descriptors, and sends the dbus signals if necessary.

Additionally, WPC_close() is moved to be before other close functions in order to ensure dispatch thread exits before we close the event queue.

Callbacks set via WPC_register_for_data and
WPC_register_for_stack_status are called from c-mesh-api's dispatch
thread.

Earlier, these callbacks were sending the dbus signals as well. This
presented potential problems because sd_bus is not thread safe, and in
this case the main thread and the dispatch thread could access the same
dbus connection (m_bus).

The callbacks now only pass the data to a ring buffer (event_queue.h)
which the main thread reads from. The event queue uses an eventfd to
signal when a new event was added to it.

A main loop is now added as described in sd_bus_get_fd(3) manual. The
loop polls the dbus and event queue file descriptors, and sends the dbus
signals if necessary.

Additionally, WPC_close() is moved to be before other close functions in
order to ensure dispatch thread exits before we close the event queue.
@sgunes-wirepas sgunes-wirepas marked this pull request as ready for review April 30, 2026 14:58
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant