Module Async_unix__.Raw_scheduler
module Fd = Async_unix__.Raw_fdmodule Watching = Fd.Watchingmodule Signal = Core.Signalmodule Timerfd = Core.Linux_ext.Timerfdmodule Tsc = Core.Time_stamp_countermodule File_descr_watcher : sig ... endtype 'a with_options= 'a Async_unix__.Import.Kernel_scheduler.with_options
include sig ... end
val preserve_execution_context : ('a -> unit) -> ('a -> unit) Core_kernel.Staged.tval preserve_execution_context' : ('a -> 'b Async_unix__.Import.Kernel_scheduler.Deferred.t) -> ('a -> 'b Async_unix__.Import.Kernel_scheduler.Deferred.t) Core_kernel.Staged.tval schedule : ((unit -> unit) -> unit) Async_unix__.Import.Kernel_scheduler.with_optionsval schedule' : ((unit -> 'a Async_unix__.Import.Kernel_scheduler.Deferred.t) -> 'a Async_unix__.Import.Kernel_scheduler.Deferred.t) Async_unix__.Import.Kernel_scheduler.with_optionsval within : ((unit -> unit) -> unit) Async_unix__.Import.Kernel_scheduler.with_optionsval within' : ((unit -> 'a Async_unix__.Import.Kernel_scheduler.Deferred.t) -> 'a Async_unix__.Import.Kernel_scheduler.Deferred.t) Async_unix__.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) Async_unix__.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) -> 'b
val cycle_count : unit -> intval 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 total_cycle_time : unit -> Async_kernel__.Import.Time_ns.Span.tval long_cycles : at_least:Async_kernel__.Import.Time_ns.Span.t -> Async_kernel__.Import.Time_ns.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.tval set_max_num_jobs_per_priority_per_cycle : int -> unitval max_num_jobs_per_priority_per_cycle : unit -> intval force_current_cycle_to_end : unit -> unit
type t={mutex : Nano_mutex.t;mutable is_running : bool;mutable have_called_go : bool;fds_whose_watching_has_changed : Fd.t Core.Stack.t;file_descr_watcher : File_descr_watcher.t;mutable time_spent_waiting_for_io : Tsc.Span.t;fd_by_descr : Async_unix__.Fd_by_descr.t;mutable timerfd : Core.Linux_ext.Timerfd.t option;mutable timerfd_set_at : Core.Time_ns.t;mutable scheduler_thread_id : int;interruptor : Async_unix__.Interruptor.t;signal_manager : Async_unix__.Raw_signal_manager.t;thread_pool : Thread_pool.t;mutable handle_thread_pool_stuck : Thread_pool.t -> stuck_for:Core.Time_ns.Span.t -> unit;busy_pollers : Async_unix__.Busy_pollers.t;mutable busy_poll_thread_is_running : bool;mutable next_tsc_calibration : Tsc.t;kernel_scheduler : Async_unix__.Import.Kernel_scheduler.t;mutable have_lock_do_cycle : (unit -> unit) option;mutable max_inter_cycle_timeout : Async_unix__.Import.Max_inter_cycle_timeout.t;mutable min_inter_cycle_timeout : Async_unix__.Import.Min_inter_cycle_timeout.t;}
val min_inter_cycle_timeout : t -> Async_unix__.Import.Min_inter_cycle_timeout.tval set_min_inter_cycle_timeout : t -> Async_unix__.Import.Min_inter_cycle_timeout.t -> unitval max_inter_cycle_timeout : t -> Async_unix__.Import.Max_inter_cycle_timeout.tval set_max_inter_cycle_timeout : t -> Async_unix__.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 -> Async_unix__.Import.Kernel_scheduler.tval next_tsc_calibration : t -> Tsc.tval set_next_tsc_calibration : t -> Tsc.t -> unitval busy_poll_thread_is_running : t -> boolval set_busy_poll_thread_is_running : t -> bool -> unitval busy_pollers : t -> Async_unix__.Busy_pollers.tval handle_thread_pool_stuck : t -> Thread_pool.t -> stuck_for:Core.Time_ns.Span.t -> unitval set_handle_thread_pool_stuck : t -> (Thread_pool.t -> stuck_for:Core.Time_ns.Span.t -> unit) -> unitval thread_pool : t -> Thread_pool.tval signal_manager : t -> Async_unix__.Raw_signal_manager.tval interruptor : t -> Async_unix__.Interruptor.tval scheduler_thread_id : t -> intval set_scheduler_thread_id : t -> int -> unitval timerfd_set_at : t -> Core.Time_ns.tval set_timerfd_set_at : t -> Core.Time_ns.t -> unitval timerfd : t -> Core.Linux_ext.Timerfd.t optionval set_timerfd : t -> Core.Linux_ext.Timerfd.t option -> unitval fd_by_descr : t -> Async_unix__.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 fds_whose_watching_has_changed : t -> Fd.t Core.Stack.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 -> Nano_mutex.t
module Fields : sig ... endval sexp_of_t : t -> Ppx_sexp_conv_lib.Sexp.tval max_num_threads : t -> intval max_num_open_file_descrs : 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 thread_pool_cpu_affinity : t -> Thread_pool.Cpu_affinity.tval lock : t -> unitval try_lock : t -> boolval unlock : t -> unitval with_lock : t -> (unit -> 'a) -> 'aval am_holding_lock : t -> bool
type the_one_and_only=|Not_ready_to_initialize|Ready_to_initialize of unit -> t|Initialized of t
val mutex_for_initializing_the_one_and_only_ref : Nano_mutex.tval the_one_and_only_ref : the_one_and_only Core.refval is_ready_to_initialize : unit -> boolval the_one_and_only_uncommon_case : should_lock:bool -> tval the_one_and_only : should_lock:bool -> tval current_thread_id : unit -> intval is_main_thread : unit -> boolval remove_fd : t -> Async_unix__.Raw_fd.t -> unitval maybe_start_closing_fd : t -> Fd.t -> unitval dec_num_active_syscalls_fd : t -> Fd.t -> unitval invariant : t -> unitval update_check_access : t -> bool -> unitval try_create_timerfd : unit -> Timerfd.t optionval default_handle_thread_pool_stuck : Thread_pool.t -> stuck_for:Core.Time_ns.Span.t -> Core_kernel__.Import.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 -> Async_unix__.Read_write.Key.t -> Fd.Watching.t -> unitval request_start_watching : t -> Fd.t -> Async_unix__.Read_write.Key.t -> Fd.Watching.t -> [> `Already_closed | `Already_watching | `Unsupported | `Watching ]val request_stop_watching : t -> Fd.t -> Async_unix__.Read_write.Key.t -> Fd.ready_to_result -> unitval post_check_got_timerfd : Async_unix__.Import.File_descr.t -> 'aval post_check_invalid_fd : Async_unix__.Import.File_descr.t -> 'aval post_check_handle_fd : t -> Async_unix__.Import.File_descr.t -> Async_unix__.Read_write.Key.t -> Fd.ready_to_result -> unitval create : ?thread_pool_cpu_affinity:Thread_pool_cpu_affinity.t -> ?file_descr_watcher:Async_unix__.Config.File_descr_watcher.t -> ?max_num_open_file_descrs:Async_unix__.Config.Max_num_open_file_descrs.t -> ?max_num_threads:Async_unix__.Config.Max_num_threads.t -> unit -> tval init : unit -> unitval reset_in_forked_process : unit -> unitval thread_safe_reset : unit -> unitval make_async_unusable : unit -> unitval thread_safe_enqueue_external_job : t -> Async_kernel.Execution_context.t -> ('a -> unit) -> 'a -> unitval have_lock_do_cycle : t -> unitval log_sync_changed_fds_to_file_descr_watcher : t -> Async_unix__.Import.File_descr.t -> Core_kernel__.Import.bool Async_unix__.Read_write.t -> unitval sync_changed_fd_failed : t -> Fd.t -> Core_kernel__.Import.bool Async_unix__.Read_write.t -> Core_kernel__.Import.Exn.t -> 'aval 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 dump_core_on_job_delay : unit -> unitval init : t -> unitval check_file_descr_watcher : t -> timeout:'a Async_unix__.File_descr_watcher_intf.Timeout.t -> 'a -> unitval compute_timeout_and_check_file_descr_watcher : t -> unitval one_iter : t -> unitval 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 set_task_id : unit -> unitval go : ?raise_unhandled_exn:bool -> unit -> Core__.Import.never_returnsval go_main : ?raise_unhandled_exn:bool -> ?file_descr_watcher:Async_unix__.Config.File_descr_watcher.t -> ?max_num_open_file_descrs:int -> ?max_num_threads:int -> main:(unit -> unit) -> unit -> Core__.Import.never_returnsval is_running : unit -> boolval report_long_cycle_times : ?cutoff:Core.Time.Span.t -> unit -> unitval set_check_invariants : bool -> unitval set_detect_invalid_access_from_thread : bool -> unitval set_record_backtraces : bool -> unit
module 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 Async_unix__.Import.Deferred.t
type 'b folder={folder : a. 'b -> t -> (t, 'a) Core.Field.t -> 'b;}
val 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 Async_unix__.Import.Kernel_scheduler.Deferred.tval yield_until_no_jobs_remain : unit -> unit Async_unix__.Import.Kernel_scheduler.Deferred.tval yield_every : n:int -> (unit -> unit Async_unix__.Import.Kernel_scheduler.Deferred.t) Core_kernel__.Import.Staged.tval num_jobs_run : unit -> intval num_pending_jobs : unit -> int