module Fd = Raw_fdmodule Watching = Fd.Watchingmodule Signal = Core.Signalmodule Timerfd = Core.Linux_ext.Timerfdmodule Tsc = Core.Time_stamp_countermodule File_descr_watcher : sig ... endinclude sig ... endval preserve_execution_context : ('a ‑> unit) ‑> ('a ‑> unit) Core_kernel.Staged.tval preserve_execution_context' : ('a ‑> 'b Import.Kernel_scheduler.Deferred.t) ‑> ('a ‑> 'b Import.Kernel_scheduler.Deferred.t) Core_kernel.Staged.tval schedule : ((unit ‑> unit) ‑> unit) Import.Kernel_scheduler.with_optionsval schedule' : ((unit ‑> 'a Import.Kernel_scheduler.Deferred.t) ‑> 'a Import.Kernel_scheduler.Deferred.t) Import.Kernel_scheduler.with_optionsval within : ((unit ‑> unit) ‑> unit) Import.Kernel_scheduler.with_optionsval within' : ((unit ‑> 'a Import.Kernel_scheduler.Deferred.t) ‑> 'a Import.Kernel_scheduler.Deferred.t) Import.Kernel_scheduler.with_optionsval within_context : Async_kernel.Execution_context.t ‑> (unit ‑> 'a) ‑> ('a, unit) Core_kernel.Result.tval within_v : ((unit ‑> 'a) ‑> 'a option) Import.Kernel_scheduler.with_optionsval find_local : 'a Core_kernel.Univ_map.Key.t ‑> 'a optionval with_local : 'a Core_kernel.Univ_map.Key.t ‑> 'a option ‑> f:(unit ‑> 'b) ‑> 'bval cycle_start_ns : unit ‑> Async_kernel__.Import.Time_ns.tval cycle_start : unit ‑> Core__.Import_time.Time.tval cycle_times_ns : unit ‑> Async_kernel__.Import.Time_ns.Span.t Async_kernel__.Async_stream.tval cycle_times : unit ‑> Core__.Import_time.Time.Span.t Async_kernel__.Async_stream.tval event_precision_ns : unit ‑> Async_kernel__.Import.Time_ns.Span.tval event_precision : unit ‑> Core__.Import_time.Time.Span.ttype t = {mutex : Core.Nano_mutex.t; |
mutable is_running : bool; |
mutable have_called_go : bool; |
mutable fds_whose_watching_has_changed : Fd.t list; |
file_descr_watcher : File_descr_watcher.t; |
mutable time_spent_waiting_for_io : Tsc.Span.t; |
fd_by_descr : Fd_by_descr.t; |
mutable timerfd : Core.Linux_ext.Timerfd.t option; |
mutable scheduler_thread_id : int; |
interruptor : Interruptor.t; |
signal_manager : Raw_signal_manager.t; |
thread_pool : Thread_pool.t; |
mutable handle_thread_pool_stuck : stuck_for:Core.Time_ns.Span.t ‑> unit; |
busy_pollers : Busy_pollers.t; |
mutable busy_poll_thread_is_running : bool; |
mutable next_tsc_calibration : Core.Time_stamp_counter.t; |
kernel_scheduler : Import.Kernel_scheduler.t; |
mutable have_lock_do_cycle : (unit ‑> unit) option; |
mutable max_inter_cycle_timeout : Import.Max_inter_cycle_timeout.t; |
mutable min_inter_cycle_timeout : Import.Min_inter_cycle_timeout.t; |
}val sexp_of_t : t ‑> Sexplib.Sexp.tval min_inter_cycle_timeout : t ‑> Import.Min_inter_cycle_timeout.tval set_min_inter_cycle_timeout : t ‑> Import.Min_inter_cycle_timeout.t ‑> unitval max_inter_cycle_timeout : t ‑> Import.Max_inter_cycle_timeout.tval set_max_inter_cycle_timeout : t ‑> Import.Max_inter_cycle_timeout.t ‑> unitval have_lock_do_cycle : t ‑> (unit ‑> unit) optionval set_have_lock_do_cycle : t ‑> (unit ‑> unit) option ‑> unitval kernel_scheduler : t ‑> Import.Kernel_scheduler.tval next_tsc_calibration : t ‑> Core.Time_stamp_counter.tval set_next_tsc_calibration : t ‑> Core.Time_stamp_counter.t ‑> unitval busy_poll_thread_is_running : t ‑> boolval set_busy_poll_thread_is_running : t ‑> bool ‑> unitval busy_pollers : t ‑> Busy_pollers.tval handle_thread_pool_stuck : t ‑> stuck_for:Core.Time_ns.Span.t ‑> unitval set_handle_thread_pool_stuck : t ‑> (stuck_for:Core.Time_ns.Span.t ‑> unit) ‑> unitval thread_pool : t ‑> Thread_pool.tval signal_manager : t ‑> Raw_signal_manager.tval interruptor : t ‑> Interruptor.tval scheduler_thread_id : t ‑> intval set_scheduler_thread_id : t ‑> int ‑> unitval timerfd : t ‑> Core.Linux_ext.Timerfd.t optionval set_timerfd : t ‑> Core.Linux_ext.Timerfd.t option ‑> unitval fd_by_descr : t ‑> Fd_by_descr.tval time_spent_waiting_for_io : t ‑> Tsc.Span.tval set_time_spent_waiting_for_io : t ‑> Tsc.Span.t ‑> unitval file_descr_watcher : t ‑> File_descr_watcher.tval have_called_go : t ‑> boolval set_have_called_go : t ‑> bool ‑> unitval is_running : t ‑> boolval set_is_running : t ‑> bool ‑> unitval mutex : t ‑> Core.Nano_mutex.tmodule Fields : sig ... endval max_num_threads : t ‑> intval current_execution_context : t ‑> Async_kernel.Execution_context.tval with_execution_context : t ‑> Async_kernel.Execution_context.t ‑> f:(unit ‑> 'a) ‑> 'aval create_fd : ?avoid_nonblock_if_possible:bool ‑> t ‑> Fd.Kind.t ‑> Fd.File_descr.t ‑> Core.Info.t ‑> Fd.tval lock : t ‑> unitval try_lock : t ‑> boolval unlock : t ‑> unitval with_lock : t ‑> (unit ‑> 'a) ‑> 'aval am_holding_lock : t ‑> boolval mutex_for_initializing_the_one_and_only_ref : Core.Nano_mutex.tval the_one_and_only_ref : the_one_and_only Core.refval the_one_and_only_uncommon_case : should_lock:bool ‑> tval the_one_and_only : should_lock:bool ‑> tval invariant : t ‑> unitval update_check_access : t ‑> bool ‑> unitval try_create_timerfd : unit ‑> Timerfd.t optionval default_handle_thread_pool_stuck : stuck_for:Core.Time_ns.Span.t ‑> unitval detect_stuck_thread_pool : t ‑> unitval thread_safe_wakeup_scheduler : t ‑> unitval i_am_the_scheduler : t ‑> boolval set_fd_desired_watching : t ‑> Fd.t ‑> Read_write.Key.t ‑> Fd.Watching.t ‑> unitval request_start_watching : t ‑> Fd.t ‑> Read_write.Key.t ‑> Fd.Watching.t ‑> [> `Already_closed | `Already_watching | `Unsupported | `Watching ]val request_stop_watching : t ‑> Fd.t ‑> Read_write.Key.t ‑> Fd.ready_to_result ‑> unitval post_check_handle_fd : t ‑> Import.File_descr.t ‑> Read_write.Key.t ‑> Fd.ready_to_result ‑> unitval create : ?file_descr_watcher:Config.File_descr_watcher.t ‑> ?max_num_open_file_descrs:Config.Max_num_open_file_descrs.t ‑> ?max_num_threads:Config.Max_num_threads.t ‑> unit ‑> tval thread_safe_enqueue_external_job : t ‑> Async_kernel.Execution_context.t ‑> ('a ‑> unit) ‑> 'a ‑> unitval have_lock_do_cycle : t ‑> unitval sync_changed_fds_to_file_descr_watcher : t ‑> unitval maybe_calibrate_tsc : t ‑> unitval create_job : ?execution_context:Async_kernel.Execution_context.t ‑> t ‑> ('a ‑> unit) ‑> 'a ‑> Async_kernel__.Job.tval be_the_scheduler : ?raise_unhandled_exn:bool ‑> t ‑> 'aval add_finalizer : t ‑> 'a Core_kernel.Heap_block.t ‑> ('a Core_kernel.Heap_block.t ‑> unit) ‑> unitval add_finalizer_exn : t ‑> 'a ‑> ('a ‑> unit) ‑> unitval go : ?raise_unhandled_exn:bool ‑> unit ‑> Core__.Import.never_returnsval go_main : ?raise_unhandled_exn:bool ‑> ?file_descr_watcher:Config.File_descr_watcher.t ‑> ?max_num_open_file_descrs:int ‑> ?max_num_threads:int ‑> main:(unit ‑> unit) ‑> unit ‑> Core__.Import.never_returnsval report_long_cycle_times : ?cutoff:Core.Time.Span.t ‑> unit ‑> unitmodule Expert : sig ... endval set_max_inter_cycle_timeout : Core__.Import_time.Time.Span.t ‑> unitval start_busy_poller_thread_if_not_running : t ‑> unitval add_busy_poller : (unit ‑> [ `Continue_polling | `Stop_polling of 'a ]) ‑> 'a Import.Deferred.tval t : unit ‑> tval fold_fields : init:'a ‑> 'a folder ‑> 'aval handle_thread_pool_stuck : (stuck_for:Core.Time_ns.Span.t ‑> unit) ‑> unitval yield : unit ‑> unit Import.Kernel_scheduler.Deferred.tval yield_until_no_jobs_remain : unit ‑> unit Import.Kernel_scheduler.Deferred.tval yield_every : n:int ‑> (unit ‑> unit Import.Kernel_scheduler.Deferred.t) Core.Staged.t