sig
  val names : string list
  val max_inter_cycle_timeout :
    ([< `Read | `Set_and_create ], Raw_scheduler.t,
     Import.Max_inter_cycle_timeout.t)
    Fieldslib.Field.t_with_perm
  val core_scheduler :
    ([< `Read | `Set_and_create ], Raw_scheduler.t, Import.Core_scheduler.t)
    Fieldslib.Field.t_with_perm
  val busy_poll_thread_is_running :
    ([< `Read | `Set_and_create ], Raw_scheduler.t, bool)
    Fieldslib.Field.t_with_perm
  val busy_pollers :
    ([< `Read | `Set_and_create ], Raw_scheduler.t, Busy_pollers.t)
    Fieldslib.Field.t_with_perm
  val handle_thread_pool_stuck :
    ([< `Read | `Set_and_create ], Raw_scheduler.t,
     Core.Std.Time.Span.t -> unit)
    Fieldslib.Field.t_with_perm
  val thread_pool :
    ([< `Read | `Set_and_create ], Raw_scheduler.t, Thread_pool.t)
    Fieldslib.Field.t_with_perm
  val signal_manager :
    ([< `Read | `Set_and_create ], Raw_scheduler.t, Raw_signal_manager.t)
    Fieldslib.Field.t_with_perm
  val interruptor :
    ([< `Read | `Set_and_create ], Raw_scheduler.t, Interruptor.t)
    Fieldslib.Field.t_with_perm
  val scheduler_thread_id :
    ([< `Read | `Set_and_create ], Raw_scheduler.t, int)
    Fieldslib.Field.t_with_perm
  val timerfd :
    ([< `Read | `Set_and_create ], Raw_scheduler.t,
     Core.Std.Linux_ext.Timerfd.t option)
    Fieldslib.Field.t_with_perm
  val fd_by_descr :
    ([< `Read | `Set_and_create ], Raw_scheduler.t, Fd_by_descr.t)
    Fieldslib.Field.t_with_perm
  val file_descr_watcher :
    ([< `Read | `Set_and_create ], Raw_scheduler.t,
     Raw_scheduler.File_descr_watcher.t)
    Fieldslib.Field.t_with_perm
  val fds_whose_watching_has_changed :
    ([< `Read | `Set_and_create ], Raw_scheduler.t, Raw_scheduler.Fd.t list)
    Fieldslib.Field.t_with_perm
  val have_called_go :
    ([< `Read | `Set_and_create ], Raw_scheduler.t, bool)
    Fieldslib.Field.t_with_perm
  val is_running :
    ([< `Read | `Set_and_create ], Raw_scheduler.t, bool)
    Fieldslib.Field.t_with_perm
  val mutex :
    ([< `Read | `Set_and_create ], Raw_scheduler.t, Core.Std.Nano_mutex.t)
    Fieldslib.Field.t_with_perm
  val make_creator :
    mutex:(([< `Read | `Set_and_create ], Raw_scheduler.t,
            Core.Std.Nano_mutex.t)
           Fieldslib.Field.t_with_perm ->
           '-> ('-> Core.Std.Nano_mutex.t) * 'c) ->
    is_running:(([< `Read | `Set_and_create ], Raw_scheduler.t, bool)
                Fieldslib.Field.t_with_perm -> '-> ('-> bool) * 'd) ->
    have_called_go:(([< `Read | `Set_and_create ], Raw_scheduler.t, bool)
                    Fieldslib.Field.t_with_perm -> '-> ('-> bool) * 'e) ->
    fds_whose_watching_has_changed:(([< `Read | `Set_and_create ],
                                     Raw_scheduler.t,
                                     Raw_scheduler.Fd.t list)
                                    Fieldslib.Field.t_with_perm ->
                                    '->
                                    ('-> Raw_scheduler.Fd.t list) * 'f) ->
    file_descr_watcher:(([< `Read | `Set_and_create ], Raw_scheduler.t,
                         Raw_scheduler.File_descr_watcher.t)
                        Fieldslib.Field.t_with_perm ->
                        '-> ('-> Raw_scheduler.File_descr_watcher.t) * 'g) ->
    fd_by_descr:(([< `Read | `Set_and_create ], Raw_scheduler.t,
                  Fd_by_descr.t)
                 Fieldslib.Field.t_with_perm ->
                 '-> ('-> Fd_by_descr.t) * 'h) ->
    timerfd:(([< `Read | `Set_and_create ], Raw_scheduler.t,
              Core.Std.Linux_ext.Timerfd.t option)
             Fieldslib.Field.t_with_perm ->
             '-> ('-> Core.Std.Linux_ext.Timerfd.t option) * 'i) ->
    scheduler_thread_id:(([< `Read | `Set_and_create ], Raw_scheduler.t, int)
                         Fieldslib.Field.t_with_perm ->
                         '-> ('-> int) * 'j) ->
    interruptor:(([< `Read | `Set_and_create ], Raw_scheduler.t,
                  Interruptor.t)
                 Fieldslib.Field.t_with_perm ->
                 '-> ('-> Interruptor.t) * 'k) ->
    signal_manager:(([< `Read | `Set_and_create ], Raw_scheduler.t,
                     Raw_signal_manager.t)
                    Fieldslib.Field.t_with_perm ->
                    '-> ('-> Raw_signal_manager.t) * 'l) ->
    thread_pool:(([< `Read | `Set_and_create ], Raw_scheduler.t,
                  Thread_pool.t)
                 Fieldslib.Field.t_with_perm ->
                 '-> ('-> Thread_pool.t) * 'm) ->
    handle_thread_pool_stuck:(([< `Read | `Set_and_create ], Raw_scheduler.t,
                               Core.Std.Time.Span.t -> unit)
                              Fieldslib.Field.t_with_perm ->
                              '-> ('-> Core.Std.Time.Span.t -> unit) * 'n) ->
    busy_pollers:(([< `Read | `Set_and_create ], Raw_scheduler.t,
                   Busy_pollers.t)
                  Fieldslib.Field.t_with_perm ->
                  '-> ('-> Busy_pollers.t) * 'o) ->
    busy_poll_thread_is_running:(([< `Read | `Set_and_create ],
                                  Raw_scheduler.t, bool)
                                 Fieldslib.Field.t_with_perm ->
                                 '-> ('-> bool) * 'p) ->
    core_scheduler:(([< `Read | `Set_and_create ], Raw_scheduler.t,
                     Import.Core_scheduler.t)
                    Fieldslib.Field.t_with_perm ->
                    '-> ('-> Import.Core_scheduler.t) * 'q) ->
    max_inter_cycle_timeout:(([< `Read | `Set_and_create ], Raw_scheduler.t,
                              Import.Max_inter_cycle_timeout.t)
                             Fieldslib.Field.t_with_perm ->
                             '->
                             ('-> Import.Max_inter_cycle_timeout.t) * 'r) ->
    '-> ('-> Raw_scheduler.t) * 'r
  val create :
    mutex:Core.Std.Nano_mutex.t ->
    is_running:bool ->
    have_called_go:bool ->
    fds_whose_watching_has_changed:Raw_scheduler.Fd.t list ->
    file_descr_watcher:Raw_scheduler.File_descr_watcher.t ->
    fd_by_descr:Fd_by_descr.t ->
    timerfd:Core.Std.Linux_ext.Timerfd.t option ->
    scheduler_thread_id:int ->
    interruptor:Interruptor.t ->
    signal_manager:Raw_signal_manager.t ->
    thread_pool:Thread_pool.t ->
    handle_thread_pool_stuck:(Core.Std.Time.Span.t -> unit) ->
    busy_pollers:Busy_pollers.t ->
    busy_poll_thread_is_running:bool ->
    core_scheduler:Import.Core_scheduler.t ->
    max_inter_cycle_timeout:Import.Max_inter_cycle_timeout.t ->
    Raw_scheduler.t
  val map :
    mutex:(([< `Read | `Set_and_create ], Raw_scheduler.t,
            Core.Std.Nano_mutex.t)
           Fieldslib.Field.t_with_perm -> Core.Std.Nano_mutex.t) ->
    is_running:(([< `Read | `Set_and_create ], Raw_scheduler.t, bool)
                Fieldslib.Field.t_with_perm -> bool) ->
    have_called_go:(([< `Read | `Set_and_create ], Raw_scheduler.t, bool)
                    Fieldslib.Field.t_with_perm -> bool) ->
    fds_whose_watching_has_changed:(([< `Read | `Set_and_create ],
                                     Raw_scheduler.t,
                                     Raw_scheduler.Fd.t list)
                                    Fieldslib.Field.t_with_perm ->
                                    Raw_scheduler.Fd.t list) ->
    file_descr_watcher:(([< `Read | `Set_and_create ], Raw_scheduler.t,
                         Raw_scheduler.File_descr_watcher.t)
                        Fieldslib.Field.t_with_perm ->
                        Raw_scheduler.File_descr_watcher.t) ->
    fd_by_descr:(([< `Read | `Set_and_create ], Raw_scheduler.t,
                  Fd_by_descr.t)
                 Fieldslib.Field.t_with_perm -> Fd_by_descr.t) ->
    timerfd:(([< `Read | `Set_and_create ], Raw_scheduler.t,
              Core.Std.Linux_ext.Timerfd.t option)
             Fieldslib.Field.t_with_perm ->
             Core.Std.Linux_ext.Timerfd.t option) ->
    scheduler_thread_id:(([< `Read | `Set_and_create ], Raw_scheduler.t, int)
                         Fieldslib.Field.t_with_perm -> int) ->
    interruptor:(([< `Read | `Set_and_create ], Raw_scheduler.t,
                  Interruptor.t)
                 Fieldslib.Field.t_with_perm -> Interruptor.t) ->
    signal_manager:(([< `Read | `Set_and_create ], Raw_scheduler.t,
                     Raw_signal_manager.t)
                    Fieldslib.Field.t_with_perm -> Raw_signal_manager.t) ->
    thread_pool:(([< `Read | `Set_and_create ], Raw_scheduler.t,
                  Thread_pool.t)
                 Fieldslib.Field.t_with_perm -> Thread_pool.t) ->
    handle_thread_pool_stuck:(([< `Read | `Set_and_create ], Raw_scheduler.t,
                               Core.Std.Time.Span.t -> unit)
                              Fieldslib.Field.t_with_perm ->
                              Core.Std.Time.Span.t -> unit) ->
    busy_pollers:(([< `Read | `Set_and_create ], Raw_scheduler.t,
                   Busy_pollers.t)
                  Fieldslib.Field.t_with_perm -> Busy_pollers.t) ->
    busy_poll_thread_is_running:(([< `Read | `Set_and_create ],
                                  Raw_scheduler.t, bool)
                                 Fieldslib.Field.t_with_perm -> bool) ->
    core_scheduler:(([< `Read | `Set_and_create ], Raw_scheduler.t,
                     Import.Core_scheduler.t)
                    Fieldslib.Field.t_with_perm -> Import.Core_scheduler.t) ->
    max_inter_cycle_timeout:(([< `Read | `Set_and_create ], Raw_scheduler.t,
                              Import.Max_inter_cycle_timeout.t)
                             Fieldslib.Field.t_with_perm ->
                             Import.Max_inter_cycle_timeout.t) ->
    Raw_scheduler.t
  val iter :
    mutex:(([< `Read | `Set_and_create ], Raw_scheduler.t,
            Core.Std.Nano_mutex.t)
           Fieldslib.Field.t_with_perm -> 'a) ->
    is_running:(([< `Read | `Set_and_create ], Raw_scheduler.t, bool)
                Fieldslib.Field.t_with_perm -> 'b) ->
    have_called_go:(([< `Read | `Set_and_create ], Raw_scheduler.t, bool)
                    Fieldslib.Field.t_with_perm -> 'c) ->
    fds_whose_watching_has_changed:(([< `Read | `Set_and_create ],
                                     Raw_scheduler.t,
                                     Raw_scheduler.Fd.t list)
                                    Fieldslib.Field.t_with_perm -> 'd) ->
    file_descr_watcher:(([< `Read | `Set_and_create ], Raw_scheduler.t,
                         Raw_scheduler.File_descr_watcher.t)
                        Fieldslib.Field.t_with_perm -> 'e) ->
    fd_by_descr:(([< `Read | `Set_and_create ], Raw_scheduler.t,
                  Fd_by_descr.t)
                 Fieldslib.Field.t_with_perm -> 'f) ->
    timerfd:(([< `Read | `Set_and_create ], Raw_scheduler.t,
              Core.Std.Linux_ext.Timerfd.t option)
             Fieldslib.Field.t_with_perm -> 'g) ->
    scheduler_thread_id:(([< `Read | `Set_and_create ], Raw_scheduler.t, int)
                         Fieldslib.Field.t_with_perm -> 'h) ->
    interruptor:(([< `Read | `Set_and_create ], Raw_scheduler.t,
                  Interruptor.t)
                 Fieldslib.Field.t_with_perm -> 'i) ->
    signal_manager:(([< `Read | `Set_and_create ], Raw_scheduler.t,
                     Raw_signal_manager.t)
                    Fieldslib.Field.t_with_perm -> 'j) ->
    thread_pool:(([< `Read | `Set_and_create ], Raw_scheduler.t,
                  Thread_pool.t)
                 Fieldslib.Field.t_with_perm -> 'k) ->
    handle_thread_pool_stuck:(([< `Read | `Set_and_create ], Raw_scheduler.t,
                               Core.Std.Time.Span.t -> unit)
                              Fieldslib.Field.t_with_perm -> 'l) ->
    busy_pollers:(([< `Read | `Set_and_create ], Raw_scheduler.t,
                   Busy_pollers.t)
                  Fieldslib.Field.t_with_perm -> 'm) ->
    busy_poll_thread_is_running:(([< `Read | `Set_and_create ],
                                  Raw_scheduler.t, bool)
                                 Fieldslib.Field.t_with_perm -> 'n) ->
    core_scheduler:(([< `Read | `Set_and_create ], Raw_scheduler.t,
                     Import.Core_scheduler.t)
                    Fieldslib.Field.t_with_perm -> 'o) ->
    max_inter_cycle_timeout:(([< `Read | `Set_and_create ], Raw_scheduler.t,
                              Import.Max_inter_cycle_timeout.t)
                             Fieldslib.Field.t_with_perm -> 'p) ->
    'p
  val fold :
    init:'->
    mutex:('->
           ([< `Read | `Set_and_create ], Raw_scheduler.t,
            Core.Std.Nano_mutex.t)
           Fieldslib.Field.t_with_perm -> 'b) ->
    is_running:('->
                ([< `Read | `Set_and_create ], Raw_scheduler.t, bool)
                Fieldslib.Field.t_with_perm -> 'c) ->
    have_called_go:('->
                    ([< `Read | `Set_and_create ], Raw_scheduler.t, bool)
                    Fieldslib.Field.t_with_perm -> 'd) ->
    fds_whose_watching_has_changed:('->
                                    ([< `Read | `Set_and_create ],
                                     Raw_scheduler.t,
                                     Raw_scheduler.Fd.t list)
                                    Fieldslib.Field.t_with_perm -> 'e) ->
    file_descr_watcher:('->
                        ([< `Read | `Set_and_create ], Raw_scheduler.t,
                         Raw_scheduler.File_descr_watcher.t)
                        Fieldslib.Field.t_with_perm -> 'f) ->
    fd_by_descr:('->
                 ([< `Read | `Set_and_create ], Raw_scheduler.t,
                  Fd_by_descr.t)
                 Fieldslib.Field.t_with_perm -> 'g) ->
    timerfd:('->
             ([< `Read | `Set_and_create ], Raw_scheduler.t,
              Core.Std.Linux_ext.Timerfd.t option)
             Fieldslib.Field.t_with_perm -> 'h) ->
    scheduler_thread_id:('->
                         ([< `Read | `Set_and_create ], Raw_scheduler.t, int)
                         Fieldslib.Field.t_with_perm -> 'i) ->
    interruptor:('->
                 ([< `Read | `Set_and_create ], Raw_scheduler.t,
                  Interruptor.t)
                 Fieldslib.Field.t_with_perm -> 'j) ->
    signal_manager:('->
                    ([< `Read | `Set_and_create ], Raw_scheduler.t,
                     Raw_signal_manager.t)
                    Fieldslib.Field.t_with_perm -> 'k) ->
    thread_pool:('->
                 ([< `Read | `Set_and_create ], Raw_scheduler.t,
                  Thread_pool.t)
                 Fieldslib.Field.t_with_perm -> 'l) ->
    handle_thread_pool_stuck:('->
                              ([< `Read | `Set_and_create ], Raw_scheduler.t,
                               Core.Std.Time.Span.t -> unit)
                              Fieldslib.Field.t_with_perm -> 'm) ->
    busy_pollers:('->
                  ([< `Read | `Set_and_create ], Raw_scheduler.t,
                   Busy_pollers.t)
                  Fieldslib.Field.t_with_perm -> 'n) ->
    busy_poll_thread_is_running:('->
                                 ([< `Read | `Set_and_create ],
                                  Raw_scheduler.t, bool)
                                 Fieldslib.Field.t_with_perm -> 'o) ->
    core_scheduler:('->
                    ([< `Read | `Set_and_create ], Raw_scheduler.t,
                     Import.Core_scheduler.t)
                    Fieldslib.Field.t_with_perm -> 'p) ->
    max_inter_cycle_timeout:('->
                             ([< `Read | `Set_and_create ], Raw_scheduler.t,
                              Import.Max_inter_cycle_timeout.t)
                             Fieldslib.Field.t_with_perm -> 'q) ->
    'q
  val map_poly :
    ([< `Read | `Set_and_create ], Raw_scheduler.t, 'a) Fieldslib.Field.user ->
    'a list
  val for_all :
    mutex:(([< `Read | `Set_and_create ], Raw_scheduler.t,
            Core.Std.Nano_mutex.t)
           Fieldslib.Field.t_with_perm -> bool) ->
    is_running:(([< `Read | `Set_and_create ], Raw_scheduler.t, bool)
                Fieldslib.Field.t_with_perm -> bool) ->
    have_called_go:(([< `Read | `Set_and_create ], Raw_scheduler.t, bool)
                    Fieldslib.Field.t_with_perm -> bool) ->
    fds_whose_watching_has_changed:(([< `Read | `Set_and_create ],
                                     Raw_scheduler.t,
                                     Raw_scheduler.Fd.t list)
                                    Fieldslib.Field.t_with_perm -> bool) ->
    file_descr_watcher:(([< `Read | `Set_and_create ], Raw_scheduler.t,
                         Raw_scheduler.File_descr_watcher.t)
                        Fieldslib.Field.t_with_perm -> bool) ->
    fd_by_descr:(([< `Read | `Set_and_create ], Raw_scheduler.t,
                  Fd_by_descr.t)
                 Fieldslib.Field.t_with_perm -> bool) ->
    timerfd:(([< `Read | `Set_and_create ], Raw_scheduler.t,
              Core.Std.Linux_ext.Timerfd.t option)
             Fieldslib.Field.t_with_perm -> bool) ->
    scheduler_thread_id:(([< `Read | `Set_and_create ], Raw_scheduler.t, int)
                         Fieldslib.Field.t_with_perm -> bool) ->
    interruptor:(([< `Read | `Set_and_create ], Raw_scheduler.t,
                  Interruptor.t)
                 Fieldslib.Field.t_with_perm -> bool) ->
    signal_manager:(([< `Read | `Set_and_create ], Raw_scheduler.t,
                     Raw_signal_manager.t)
                    Fieldslib.Field.t_with_perm -> bool) ->
    thread_pool:(([< `Read | `Set_and_create ], Raw_scheduler.t,
                  Thread_pool.t)
                 Fieldslib.Field.t_with_perm -> bool) ->
    handle_thread_pool_stuck:(([< `Read | `Set_and_create ], Raw_scheduler.t,
                               Core.Std.Time.Span.t -> unit)
                              Fieldslib.Field.t_with_perm -> bool) ->
    busy_pollers:(([< `Read | `Set_and_create ], Raw_scheduler.t,
                   Busy_pollers.t)
                  Fieldslib.Field.t_with_perm -> bool) ->
    busy_poll_thread_is_running:(([< `Read | `Set_and_create ],
                                  Raw_scheduler.t, bool)
                                 Fieldslib.Field.t_with_perm -> bool) ->
    core_scheduler:(([< `Read | `Set_and_create ], Raw_scheduler.t,
                     Import.Core_scheduler.t)
                    Fieldslib.Field.t_with_perm -> bool) ->
    max_inter_cycle_timeout:(([< `Read | `Set_and_create ], Raw_scheduler.t,
                              Import.Max_inter_cycle_timeout.t)
                             Fieldslib.Field.t_with_perm -> bool) ->
    bool
  val exists :
    mutex:(([< `Read | `Set_and_create ], Raw_scheduler.t,
            Core.Std.Nano_mutex.t)
           Fieldslib.Field.t_with_perm -> bool) ->
    is_running:(([< `Read | `Set_and_create ], Raw_scheduler.t, bool)
                Fieldslib.Field.t_with_perm -> bool) ->
    have_called_go:(([< `Read | `Set_and_create ], Raw_scheduler.t, bool)
                    Fieldslib.Field.t_with_perm -> bool) ->
    fds_whose_watching_has_changed:(([< `Read | `Set_and_create ],
                                     Raw_scheduler.t,
                                     Raw_scheduler.Fd.t list)
                                    Fieldslib.Field.t_with_perm -> bool) ->
    file_descr_watcher:(([< `Read | `Set_and_create ], Raw_scheduler.t,
                         Raw_scheduler.File_descr_watcher.t)
                        Fieldslib.Field.t_with_perm -> bool) ->
    fd_by_descr:(([< `Read | `Set_and_create ], Raw_scheduler.t,
                  Fd_by_descr.t)
                 Fieldslib.Field.t_with_perm -> bool) ->
    timerfd:(([< `Read | `Set_and_create ], Raw_scheduler.t,
              Core.Std.Linux_ext.Timerfd.t option)
             Fieldslib.Field.t_with_perm -> bool) ->
    scheduler_thread_id:(([< `Read | `Set_and_create ], Raw_scheduler.t, int)
                         Fieldslib.Field.t_with_perm -> bool) ->
    interruptor:(([< `Read | `Set_and_create ], Raw_scheduler.t,
                  Interruptor.t)
                 Fieldslib.Field.t_with_perm -> bool) ->
    signal_manager:(([< `Read | `Set_and_create ], Raw_scheduler.t,
                     Raw_signal_manager.t)
                    Fieldslib.Field.t_with_perm -> bool) ->
    thread_pool:(([< `Read | `Set_and_create ], Raw_scheduler.t,
                  Thread_pool.t)
                 Fieldslib.Field.t_with_perm -> bool) ->
    handle_thread_pool_stuck:(([< `Read | `Set_and_create ], Raw_scheduler.t,
                               Core.Std.Time.Span.t -> unit)
                              Fieldslib.Field.t_with_perm -> bool) ->
    busy_pollers:(([< `Read | `Set_and_create ], Raw_scheduler.t,
                   Busy_pollers.t)
                  Fieldslib.Field.t_with_perm -> bool) ->
    busy_poll_thread_is_running:(([< `Read | `Set_and_create ],
                                  Raw_scheduler.t, bool)
                                 Fieldslib.Field.t_with_perm -> bool) ->
    core_scheduler:(([< `Read | `Set_and_create ], Raw_scheduler.t,
                     Import.Core_scheduler.t)
                    Fieldslib.Field.t_with_perm -> bool) ->
    max_inter_cycle_timeout:(([< `Read | `Set_and_create ], Raw_scheduler.t,
                              Import.Max_inter_cycle_timeout.t)
                             Fieldslib.Field.t_with_perm -> bool) ->
    bool
  val to_list :
    mutex:(([< `Read | `Set_and_create ], Raw_scheduler.t,
            Core.Std.Nano_mutex.t)
           Fieldslib.Field.t_with_perm -> 'a) ->
    is_running:(([< `Read | `Set_and_create ], Raw_scheduler.t, bool)
                Fieldslib.Field.t_with_perm -> 'a) ->
    have_called_go:(([< `Read | `Set_and_create ], Raw_scheduler.t, bool)
                    Fieldslib.Field.t_with_perm -> 'a) ->
    fds_whose_watching_has_changed:(([< `Read | `Set_and_create ],
                                     Raw_scheduler.t,
                                     Raw_scheduler.Fd.t list)
                                    Fieldslib.Field.t_with_perm -> 'a) ->
    file_descr_watcher:(([< `Read | `Set_and_create ], Raw_scheduler.t,
                         Raw_scheduler.File_descr_watcher.t)
                        Fieldslib.Field.t_with_perm -> 'a) ->
    fd_by_descr:(([< `Read | `Set_and_create ], Raw_scheduler.t,
                  Fd_by_descr.t)
                 Fieldslib.Field.t_with_perm -> 'a) ->
    timerfd:(([< `Read | `Set_and_create ], Raw_scheduler.t,
              Core.Std.Linux_ext.Timerfd.t option)
             Fieldslib.Field.t_with_perm -> 'a) ->
    scheduler_thread_id:(([< `Read | `Set_and_create ], Raw_scheduler.t, int)
                         Fieldslib.Field.t_with_perm -> 'a) ->
    interruptor:(([< `Read | `Set_and_create ], Raw_scheduler.t,
                  Interruptor.t)
                 Fieldslib.Field.t_with_perm -> 'a) ->
    signal_manager:(([< `Read | `Set_and_create ], Raw_scheduler.t,
                     Raw_signal_manager.t)
                    Fieldslib.Field.t_with_perm -> 'a) ->
    thread_pool:(([< `Read | `Set_and_create ], Raw_scheduler.t,
                  Thread_pool.t)
                 Fieldslib.Field.t_with_perm -> 'a) ->
    handle_thread_pool_stuck:(([< `Read | `Set_and_create ], Raw_scheduler.t,
                               Core.Std.Time.Span.t -> unit)
                              Fieldslib.Field.t_with_perm -> 'a) ->
    busy_pollers:(([< `Read | `Set_and_create ], Raw_scheduler.t,
                   Busy_pollers.t)
                  Fieldslib.Field.t_with_perm -> 'a) ->
    busy_poll_thread_is_running:(([< `Read | `Set_and_create ],
                                  Raw_scheduler.t, bool)
                                 Fieldslib.Field.t_with_perm -> 'a) ->
    core_scheduler:(([< `Read | `Set_and_create ], Raw_scheduler.t,
                     Import.Core_scheduler.t)
                    Fieldslib.Field.t_with_perm -> 'a) ->
    max_inter_cycle_timeout:(([< `Read | `Set_and_create ], Raw_scheduler.t,
                              Import.Max_inter_cycle_timeout.t)
                             Fieldslib.Field.t_with_perm -> 'a) ->
    'a list
  module Direct :
    sig
      val iter :
        Raw_scheduler.t ->
        mutex:(([< `Read | `Set_and_create ], Raw_scheduler.t,
                Core.Std.Nano_mutex.t)
               Fieldslib.Field.t_with_perm ->
               Raw_scheduler.t -> Core.Std.Nano_mutex.t -> 'a) ->
        is_running:(([< `Read | `Set_and_create ], Raw_scheduler.t, bool)
                    Fieldslib.Field.t_with_perm ->
                    Raw_scheduler.t -> bool -> 'b) ->
        have_called_go:(([< `Read | `Set_and_create ], Raw_scheduler.t, bool)
                        Fieldslib.Field.t_with_perm ->
                        Raw_scheduler.t -> bool -> 'c) ->
        fds_whose_watching_has_changed:(([< `Read | `Set_and_create ],
                                         Raw_scheduler.t,
                                         Raw_scheduler.Fd.t list)
                                        Fieldslib.Field.t_with_perm ->
                                        Raw_scheduler.t ->
                                        Raw_scheduler.Fd.t list -> 'd) ->
        file_descr_watcher:(([< `Read | `Set_and_create ], Raw_scheduler.t,
                             Raw_scheduler.File_descr_watcher.t)
                            Fieldslib.Field.t_with_perm ->
                            Raw_scheduler.t ->
                            Raw_scheduler.File_descr_watcher.t -> 'e) ->
        fd_by_descr:(([< `Read | `Set_and_create ], Raw_scheduler.t,
                      Fd_by_descr.t)
                     Fieldslib.Field.t_with_perm ->
                     Raw_scheduler.t -> Fd_by_descr.t -> 'f) ->
        timerfd:(([< `Read | `Set_and_create ], Raw_scheduler.t,
                  Core.Std.Linux_ext.Timerfd.t option)
                 Fieldslib.Field.t_with_perm ->
                 Raw_scheduler.t -> Core.Std.Linux_ext.Timerfd.t option -> 'g) ->
        scheduler_thread_id:(([< `Read | `Set_and_create ], Raw_scheduler.t,
                              int)
                             Fieldslib.Field.t_with_perm ->
                             Raw_scheduler.t -> int -> 'h) ->
        interruptor:(([< `Read | `Set_and_create ], Raw_scheduler.t,
                      Interruptor.t)
                     Fieldslib.Field.t_with_perm ->
                     Raw_scheduler.t -> Interruptor.t -> 'i) ->
        signal_manager:(([< `Read | `Set_and_create ], Raw_scheduler.t,
                         Raw_signal_manager.t)
                        Fieldslib.Field.t_with_perm ->
                        Raw_scheduler.t -> Raw_signal_manager.t -> 'j) ->
        thread_pool:(([< `Read | `Set_and_create ], Raw_scheduler.t,
                      Thread_pool.t)
                     Fieldslib.Field.t_with_perm ->
                     Raw_scheduler.t -> Thread_pool.t -> 'k) ->
        handle_thread_pool_stuck:(([< `Read | `Set_and_create ],
                                   Raw_scheduler.t,
                                   Core.Std.Time.Span.t -> unit)
                                  Fieldslib.Field.t_with_perm ->
                                  Raw_scheduler.t ->
                                  (Core.Std.Time.Span.t -> unit) -> 'l) ->
        busy_pollers:(([< `Read | `Set_and_create ], Raw_scheduler.t,
                       Busy_pollers.t)
                      Fieldslib.Field.t_with_perm ->
                      Raw_scheduler.t -> Busy_pollers.t -> 'm) ->
        busy_poll_thread_is_running:(([< `Read | `Set_and_create ],
                                      Raw_scheduler.t, bool)
                                     Fieldslib.Field.t_with_perm ->
                                     Raw_scheduler.t -> bool -> 'n) ->
        core_scheduler:(([< `Read | `Set_and_create ], Raw_scheduler.t,
                         Import.Core_scheduler.t)
                        Fieldslib.Field.t_with_perm ->
                        Raw_scheduler.t -> Import.Core_scheduler.t -> 'o) ->
        max_inter_cycle_timeout:(([< `Read | `Set_and_create ],
                                  Raw_scheduler.t,
                                  Import.Max_inter_cycle_timeout.t)
                                 Fieldslib.Field.t_with_perm ->
                                 Raw_scheduler.t ->
                                 Import.Max_inter_cycle_timeout.t -> 'p) ->
        'p
      val fold :
        Raw_scheduler.t ->
        init:'->
        mutex:('->
               ([< `Read | `Set_and_create ], Raw_scheduler.t,
                Core.Std.Nano_mutex.t)
               Fieldslib.Field.t_with_perm ->
               Raw_scheduler.t -> Core.Std.Nano_mutex.t -> 'b) ->
        is_running:('->
                    ([< `Read | `Set_and_create ], Raw_scheduler.t, bool)
                    Fieldslib.Field.t_with_perm ->
                    Raw_scheduler.t -> bool -> 'c) ->
        have_called_go:('->
                        ([< `Read | `Set_and_create ], Raw_scheduler.t, bool)
                        Fieldslib.Field.t_with_perm ->
                        Raw_scheduler.t -> bool -> 'd) ->
        fds_whose_watching_has_changed:('->
                                        ([< `Read | `Set_and_create ],
                                         Raw_scheduler.t,
                                         Raw_scheduler.Fd.t list)
                                        Fieldslib.Field.t_with_perm ->
                                        Raw_scheduler.t ->
                                        Raw_scheduler.Fd.t list -> 'e) ->
        file_descr_watcher:('->
                            ([< `Read | `Set_and_create ], Raw_scheduler.t,
                             Raw_scheduler.File_descr_watcher.t)
                            Fieldslib.Field.t_with_perm ->
                            Raw_scheduler.t ->
                            Raw_scheduler.File_descr_watcher.t -> 'f) ->
        fd_by_descr:('->
                     ([< `Read | `Set_and_create ], Raw_scheduler.t,
                      Fd_by_descr.t)
                     Fieldslib.Field.t_with_perm ->
                     Raw_scheduler.t -> Fd_by_descr.t -> 'g) ->
        timerfd:('->
                 ([< `Read | `Set_and_create ], Raw_scheduler.t,
                  Core.Std.Linux_ext.Timerfd.t option)
                 Fieldslib.Field.t_with_perm ->
                 Raw_scheduler.t -> Core.Std.Linux_ext.Timerfd.t option -> 'h) ->
        scheduler_thread_id:('->
                             ([< `Read | `Set_and_create ], Raw_scheduler.t,
                              int)
                             Fieldslib.Field.t_with_perm ->
                             Raw_scheduler.t -> int -> 'i) ->
        interruptor:('->
                     ([< `Read | `Set_and_create ], Raw_scheduler.t,
                      Interruptor.t)
                     Fieldslib.Field.t_with_perm ->
                     Raw_scheduler.t -> Interruptor.t -> 'j) ->
        signal_manager:('->
                        ([< `Read | `Set_and_create ], Raw_scheduler.t,
                         Raw_signal_manager.t)
                        Fieldslib.Field.t_with_perm ->
                        Raw_scheduler.t -> Raw_signal_manager.t -> 'k) ->
        thread_pool:('->
                     ([< `Read | `Set_and_create ], Raw_scheduler.t,
                      Thread_pool.t)
                     Fieldslib.Field.t_with_perm ->
                     Raw_scheduler.t -> Thread_pool.t -> 'l) ->
        handle_thread_pool_stuck:('->
                                  ([< `Read | `Set_and_create ],
                                   Raw_scheduler.t,
                                   Core.Std.Time.Span.t -> unit)
                                  Fieldslib.Field.t_with_perm ->
                                  Raw_scheduler.t ->
                                  (Core.Std.Time.Span.t -> unit) -> 'm) ->
        busy_pollers:('->
                      ([< `Read | `Set_and_create ], Raw_scheduler.t,
                       Busy_pollers.t)
                      Fieldslib.Field.t_with_perm ->
                      Raw_scheduler.t -> Busy_pollers.t -> 'n) ->
        busy_poll_thread_is_running:('->
                                     ([< `Read | `Set_and_create ],
                                      Raw_scheduler.t, bool)
                                     Fieldslib.Field.t_with_perm ->
                                     Raw_scheduler.t -> bool -> 'o) ->
        core_scheduler:('->
                        ([< `Read | `Set_and_create ], Raw_scheduler.t,
                         Import.Core_scheduler.t)
                        Fieldslib.Field.t_with_perm ->
                        Raw_scheduler.t -> Import.Core_scheduler.t -> 'p) ->
        max_inter_cycle_timeout:('->
                                 ([< `Read | `Set_and_create ],
                                  Raw_scheduler.t,
                                  Import.Max_inter_cycle_timeout.t)
                                 Fieldslib.Field.t_with_perm ->
                                 Raw_scheduler.t ->
                                 Import.Max_inter_cycle_timeout.t -> 'q) ->
        'q
    end
end