Interface to Linux-specific system calls.
module Sysinfo : sig ... endval sendfile : (?pos:int ‑> ?len:int ‑> fd:Core__.Core_unix.File_descr.t ‑> Core__.Core_unix.File_descr.t ‑> int) Core__.Import.Or_error.tsendfile ?pos ?len ~fd sock sends mmap-able data from file descriptor fd to
socket sock using offset pos and length len. Returns the number of characters
actually written.
NOTE: If the returned value is unequal to what was requested (= the initial size of
the data by default), the system call may have been interrupted by a signal, the
source file may have been truncated during operation, or a timeout may have occurred
on the socket during sending. It is currently impossible to find out which of these
events actually happened. Calling sendfile several times on the same descriptor
that only partially accepted data due to a timeout will eventually lead to the Unix
error EAGAIN.
Raises Unix_error on Unix-errors.
type tcp_bool_option = include sig ... endval tcp_bool_option_of_sexp : Base.Sexp.t ‑> tcp_bool_optionval sexp_of_tcp_bool_option : tcp_bool_option ‑> Base.Sexp.tval bin_tcp_bool_option : tcp_bool_option Bin_prot.Type_class.tval bin_read_tcp_bool_option : tcp_bool_option Bin_prot.Read.readerval __bin_read_tcp_bool_option__ : (int ‑> tcp_bool_option) Bin_prot.Read.readerval bin_reader_tcp_bool_option : tcp_bool_option Bin_prot.Type_class.readerval bin_size_tcp_bool_option : tcp_bool_option Bin_prot.Size.sizerval bin_write_tcp_bool_option : tcp_bool_option Bin_prot.Write.writerval bin_writer_tcp_bool_option : tcp_bool_option Bin_prot.Type_class.writerval bin_shape_tcp_bool_option : Bin_prot.Shape.tval gettcpopt_bool : (Core__.Core_unix.File_descr.t ‑> tcp_bool_option ‑> bool) Core__.Import.Or_error.tgettcpopt_bool sock opt Returns the current value of the boolean TCP socket option
opt for socket sock.
val settcpopt_bool : (Core__.Core_unix.File_descr.t ‑> tcp_bool_option ‑> bool ‑> unit) Core__.Import.Or_error.tsettcpopt_bool sock opt v sets the current value of the boolean TCP socket option
opt for socket sock to value v.
val send_nonblocking_no_sigpipe : (Core__.Core_unix.File_descr.t ‑> ?pos:int ‑> ?len:int ‑> Core__.Import.Bytes.t ‑> int option) Core__.Import.Or_error.tsend_nonblocking_no_sigpipe sock ?pos ?len buf tries to do a nonblocking send on
socket sock given buffer buf, offset pos and length len. Prevents
SIGPIPE, i.e., raises a Unix-error in that case immediately. Returns Some
bytes_written or None if the operation would have blocked.
Raises Invalid_argument if the designated buffer range is invalid.
Raises Unix_error on Unix-errors.
val send_no_sigpipe : (Core__.Core_unix.File_descr.t ‑> ?pos:int ‑> ?len:int ‑> Core__.Import.Bytes.t ‑> int) Core__.Import.Or_error.tsend_no_sigpipe sock ?pos ?len buf tries to do a blocking send on socket sock
given buffer buf, offset pos and length len. Prevents SIGPIPE, i.e., raises
a Unix-error in that case immediately. Returns the number of bytes written.
Raises Invalid_argument if the designated buffer range is invalid.
Raises Unix_error on Unix-errors.
val sendmsg_nonblocking_no_sigpipe : (Core__.Core_unix.File_descr.t ‑> ?count:int ‑> string Core__.Core_unix.IOVec.t array ‑> int option) Core__.Import.Or_error.tsendmsg_nonblocking_no_sigpipe sock ?count iovecs tries to do a nonblocking send
on socket sock using count I/O-vectors iovecs. Prevents SIGPIPE,
i.e., raises a Unix-error in that case immediately. Returns Some bytes_written or
None if the operation would have blocked.
Raises Invalid_argument if the designated ranges are invalid.
Raises Unix_error on Unix-errors.
module Clock : sig ... endmodule Eventfd : sig ... endmodule Timerfd : sig ... endval pr_set_pdeathsig : (Signal.t ‑> unit) Core__.Import.Or_error.tpr_set_pdeathsig s sets the signal s to be sent to the executing process when
its parent dies. NOTE: the parent may have died before or while executing this
system call. To make sure that you do not miss this event, you should call
getppid to get the parent process id after this system call. If the parent has
died, the returned parent PID will be 1, i.e., the init process will have adopted
the child. You should then either send the signal to yourself using Unix.kill, or
execute an appropriate handler.
val pr_get_pdeathsig : (unit ‑> Signal.t) Core__.Import.Or_error.tpr_get_pdeathsig () gets the signal that will be sent to the currently executing
process when its parent dies.
val pr_set_name_first16 : (string ‑> unit) Core__.Import.Or_error.tpr_set_name_first16 name sets the name of the executing thread to name. Only
the first 16 bytes in name will be used; the rest is ignored.
val pr_get_name : (unit ‑> string) Core__.Import.Or_error.tpr_get_name () gets the name of the executing thread. The name is at most 16
bytes long.
val file_descr_realpath : (Core__.Core_unix.File_descr.t ‑> string) Core__.Import.Or_error.tfile_descr_realpath fd returns the canonicalized absolute pathname of the file
associated with file descriptor fd.
Raises Unix_error on errors.
val out_channel_realpath : (Core__.Import.Out_channel.t ‑> string) Core__.Import.Or_error.tout_channel_realpath oc returns the canonicalized absolute pathname of the file
associated with output channel oc.
Raises Unix_error on errors.
val in_channel_realpath : (Core__.Import.In_channel.t ‑> string) Core__.Import.Or_error.tin_channel_realpath ic returns the canonicalized absolute pathname of the file
associated with input channel ic.
Raises Unix_error on errors.
val sched_setaffinity : (?pid:Core__.Import.Pid.t ‑> cpuset:int list ‑> unit ‑> unit) Core__.Import.Or_error.tSetting the CPU affinity causes a process to only run on the cores chosen. You can
find out how many cores a system has in /proc/cpuinfo. This can be useful in two
ways: first, it limits a process to a core so that it won't interfere with processes
on other cores. Second, you save time by not moving the process back and forth
between CPUs, which sometimes invalidates their cache. See man sched_setaffinity
for details.
val sched_setaffinity_this_thread : (cpuset:int list ‑> unit) Core__.Import.Or_error.tval cores : (unit ‑> int) Core__.Import.Or_error.tcores () returns the number of cores on the machine. This may be different
than the number of cores available to the calling process.
val get_terminal_size : (unit ‑> int * int) Core__.Import.Or_error.tget_terminal_size () returns (rows, cols), the number of rows and columns of the
terminal.
module Priority : sig ... endPriority.t is what is usually referred to as the "nice" value of a process. It is
also known as the "dynamic" priority. It is used with normal (as opposed to
real-time) processes that have static priority zero. See Unix.Scheduler.set for
setting the static priority.
val setpriority : (Priority.t ‑> unit) Core__.Import.Or_error.tSet the calling thread's priority in the Linux scheduler
val getpriority : (unit ‑> Priority.t) Core__.Import.Or_error.tGet the calling thread's priority in the Linux scheduler
val get_ipv4_address_for_interface : (string ‑> string) Core__.Import.Or_error.tget_ipv4_address_for_interface "eth0" returns the IP address assigned to eth0, or
throws an exception if no IP address is configured.
val bind_to_interface : (Core__.Core_unix.File_descr.t ‑> [ `Any | `Interface_name of string ] ‑> unit) Core__.Import.Or_error.tbind_to_interface fd (`Interface_name "eth0") restricts packets from being
received/sent on the given file descriptor fd on any interface other than "eth0".
Use bind_to_interface fd `Any to allow traffic on any interface. The bindings are
not cumulative; you may only select one interface, or `Any.
Not to be confused with a traditional BSD sockets API bind() call, this
Linux-specific socket option (SO_BINDTODEVICE) is used for applications on
multi-homed machines with specific security concerns. For similar functionality
when using multicast, see Core_unix.mcast_set_ifname.
module Epoll : sig ... endepoll(): a Linux I/O multiplexer of the same family as select() or poll(). Its main differences are support for Edge- or Level-triggered notifications (we're using Level-triggered to emulate "select") and much better scaling with the number of file descriptors.