Haiku's (Kernel) Condition Variables API: Design & Implementation

Blog post by waddlesplash on Mon, 2023-04-24 13:00

A few months after my contract with Haiku, Inc. began, I rewrote the implementation of the Haiku kernel’s condition variables (as opposed to our userspace condition variables, which are from POSIX.) As this new implementation has run in Haiku for over a year and shipped in the latest release with no sign of any remaining issues, I figured it is high time for a deep-dive on the API, its implementation history, and the design of the new implementation I wrote.

I expect this article will be of broader interest than just to Haiku’s community, because Haiku’s condition variables API has some notable (and powerful) features not found in those of other operating systems, and its implementation is thus likewise unique (at least, as far as I have been able to figure out.)

Haiku Activity & Contract Report, March 2023

Blog post by waddlesplash on Thu, 2023-04-06 16:00

As is the usual way of things, the monthly Activity Report is hereby combined with my Contract Report.

This report covers hrev56804 through hrev56887.

Haiku Activity & Contract Report, February 2023

Blog post by waddlesplash on Sat, 2023-03-11 23:30

As is the usual way of things, the monthly Activity Report is hereby combined with my Contract Report.

This report covers hrev56748 through hrev56803.

Haiku Activity & Contract Report, January 2023

Blog post by waddlesplash on Tue, 2023-02-14 23:30

As is the usual way of things, the monthly Activity Report is hereby combined with my Contract Report. Apologies for the delay in getting this one out; I had originally planned to publish it before the end of last week.

This report covers hrev56682 through hrev56747.

Haiku Activity & Contract Report, December 2022

Blog post by waddlesplash on Thu, 2023-01-12 23:30

As is the usual way of things, the monthly Activity Report is hereby combined with my Contract Report.

This report covers hrev56627 through hrev56681.

Haiku Activity & Contract Report, November 2022

Blog post by waddlesplash on Mon, 2022-12-12 22:30

As is the usual way of things, the monthly Activity Report is hereby combined with my Contract Report.

This report covers hrev56565 through hrev56626.

Haiku Activity & Contract Report, October 2022

Blog post by waddlesplash on Mon, 2022-11-14 23:40

As is the usual way of things, the monthly Activity Report is hereby combined with my Contract Report.

This report covers hrev56505 to hrev56564.

Haiku Activity & Contract Report, September 2022

Blog post by waddlesplash on Mon, 2022-10-10 23:50

As is the usual way of things, the monthly Activity Report is hereby combined with my Contract Report.

This report covers hrev56400 to hrev56504.

Haiku Activity & Contract Report, August 2022

Blog post by waddlesplash on Fri, 2022-09-09 22:00

As is the usual way of things, the monthly Activity Report is hereby combined with my Contract Report.

This report covers hrev56321 to hrev56399.

David Karoly, who has been doing a lot of work in and around the ARM ports, was granted commit access last month. Welcome to the team, David!

Haiku Activity & Contract Report, July 2022

Blog post by waddlesplash on Tue, 2022-08-09 23:00

As is now the usual way of things, the monthly Activity Report is hereby combined with my Contract Report.

This report covers hrev56236 to hrev56320.