module Direct: sig .. end
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) ->
       next_tsc_calibration:(([< `Read | `Set_and_create ], Raw_scheduler.t,
                              Core.Std.Time_stamp_counter.t)
                             Fieldslib.Field.t_with_perm ->
                             Raw_scheduler.t -> Core.Std.Time_stamp_counter.t -> '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
val fold : Raw_scheduler.t ->
       init:'a ->
       mutex:('a ->
              ([< `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:('b ->
                   ([< `Read | `Set_and_create ], Raw_scheduler.t, bool)
                   Fieldslib.Field.t_with_perm -> Raw_scheduler.t -> bool -> 'c) ->
       have_called_go:('c ->
                       ([< `Read | `Set_and_create ], Raw_scheduler.t, bool)
                       Fieldslib.Field.t_with_perm -> Raw_scheduler.t -> bool -> 'd) ->
       fds_whose_watching_has_changed:('d ->
                                       ([< `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:('e ->
                           ([< `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:('f ->
                    ([< `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:('g ->
                ([< `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:('h ->
                            ([< `Read | `Set_and_create ], Raw_scheduler.t, int)
                            Fieldslib.Field.t_with_perm ->
                            Raw_scheduler.t -> int -> 'i) ->
       interruptor:('i ->
                    ([< `Read | `Set_and_create ], Raw_scheduler.t, Interruptor.t)
                    Fieldslib.Field.t_with_perm ->
                    Raw_scheduler.t -> Interruptor.t -> 'j) ->
       signal_manager:('j ->
                       ([< `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:('k ->
                    ([< `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:('l ->
                                 ([< `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:('m ->
                     ([< `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:('n ->
                                    ([< `Read | `Set_and_create ], Raw_scheduler.t,
                                     bool)
                                    Fieldslib.Field.t_with_perm ->
                                    Raw_scheduler.t -> bool -> 'o) ->
       next_tsc_calibration:('o ->
                             ([< `Read | `Set_and_create ], Raw_scheduler.t,
                              Core.Std.Time_stamp_counter.t)
                             Fieldslib.Field.t_with_perm ->
                             Raw_scheduler.t -> Core.Std.Time_stamp_counter.t -> 'p) ->
       core_scheduler:('p ->
                       ([< `Read | `Set_and_create ], Raw_scheduler.t,
                        Import.Core_scheduler.t)
                       Fieldslib.Field.t_with_perm ->
                       Raw_scheduler.t -> Import.Core_scheduler.t -> 'q) ->
       max_inter_cycle_timeout:('q ->
                                ([< `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 -> 'r) ->
       'r