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

This page summarizes the projects mentioned and recommended in the original post on news.ycombinator.com

InfluxDB - Power Real-Time Data Analytics at Scale
Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.
www.influxdata.com
featured
SaaSHub - Software Alternatives and Reviews
SaaSHub helps you find the best software and product alternatives
www.saashub.com
featured
  • haiku

    The Haiku operating system. (Pull requests will be ignored; patches may be sent to https://review.haiku-os.org).

  • Haiku uses the System V ABI (mostly.) So, we're doing the same things Linux and the BSDs are here, simply by using GCC or Clang without any special tuning here.

    > I reckon that before trying to claim you've innovated here it might be a good sense check to compare baseline.

    The baseline is "what are other operating systems' kernel- and userland-level condition variables APIs?" And none of the ones I looked at had anything like what Haiku has here, they all have something which is the more classical "lock-switched condvars" just like POSIX has.

    The API itself does not depend on what memory ordering semantics are any more than a "mutex_lock()" API does. The implementation will be somewhat contingent on it, of course, but those are two separate matters.

    > What exactly are the Haiku atomic operations, in terms of the C++ 11 Memory Model?

    The atomic_() functions are (on most architectures, x86 included) implemented using GCC/Clang's __atomic_* functions, with various __ATOMIC_* orderings chosen as appropriate. You can see them defined in the system header here: https://github.com/haiku/haiku/blob/master/headers/os/suppor...

    > because you're innovating before 2011, you're inventing the model

    No, not really? GCC has had atomic builtins since at least 4.1.0 in 2006. The documentation (https://gcc.gnu.org/onlinedocs/gcc-4.1.0/gcc/Atomic-Builtins...) says: "In most cases, these builtins are considered a full barrier. That is, no memory operand will be moved across the operation, either forward or backward." -- which is basically equivalent to today's __ATOMIC_SEQ_CST.

    > so Haiku is off in the jungle on its own and everybody else has a map now, figure out where you are on that map first.

    We already did that years ago. The atomic_() functions linked above in SupportDefs.h have been implemented using the C++11-standard GCC builtins since 2014, and the older __sync_ builtins for years before that.

    Anyway, the algorithm described in this article, even if Haiku's atomic functions were not 1:1 with C++11-standard definitions (which they are, as noted above), is clearly portable to other OS kernels. So I am not sure what basis your comment has, regardless.

  • InfluxDB

    Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.

    InfluxDB logo
NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts

  • Problems while building haiku from source

    1 project | /r/haikuOS | 30 Jan 2023
  • HaikuOS Device Driver References

    1 project | /r/haikuOS | 20 Dec 2022
  • Haiku Beta4 Release Near?

    1 project | news.ycombinator.com | 14 Nov 2022
  • How to programmatically find out if computer is on

    6 projects | news.ycombinator.com | 20 Nov 2021
  • Haiku R1/beta4 has been released

    4 projects | news.ycombinator.com | 23 Dec 2022