module os [system] {
  module atomic {
    header "os/atomic.h"
    export *
  }

  module overflow {
    header "os/overflow.h"
    export *
  }

  module trace_base {
    header "os/trace_base.h"
    export *
  }

  explicit module activity {
    header "os/activity.h"
    export *
  }

  explicit module log {
    header "os/log.h"
    export *
  }

  explicit module signpost {
    header "os/signpost.h"
    export *
  }

  explicit module trace {
    header "os/trace.h"
    export *
  }

  // Deprecated, use Darwin.os.lock
  module lock {
    header "_modules/_os_lock.h"
    export *
  }

  // Deprecated, use os_object
  module object {
    header "_modules/_os_object.h"
    export *
  }

  // Deprecated, use os_workgroup.
  module workgroup {
    header "_modules/_os_workgroup.h"
    export *
  }
}

module os_object [system] {
  header "os/object.h"
  export *
}

module os_workgroup [system] {
  module workgroup {
    header "os/workgroup.h"
    header "os/workgroup_base.h"
    header "os/workgroup_interval.h"
    header "os/workgroup_object.h"
    header "os/workgroup_parallel.h"

    export *
  }
}
