mirror of
https://github.com/KevinMidboe/linguist.git
synced 2025-10-29 17:50:22 +00:00
71 lines
2.1 KiB
OCaml
71 lines
2.1 KiB
OCaml
(*
|
|
* Copyright (c) 2013 Jeremy Yallop.
|
|
*
|
|
* This file is distributed under the terms of the MIT License.
|
|
* See the file LICENSE for details.
|
|
*)
|
|
|
|
open PosixTypes
|
|
open Ctypes
|
|
open Foreign
|
|
|
|
type t = sigset_t ptr
|
|
|
|
let t = ptr sigset_t
|
|
|
|
(* This function initializes the signal set set to exclude all of the defined
|
|
signals. It always returns 0. *)
|
|
let sigemptyset = foreign "sigemptyset" (ptr sigset_t @-> returning int)
|
|
|
|
let empty () =
|
|
let setp = allocate_n ~count:1 sigset_t in begin
|
|
ignore (sigemptyset setp);
|
|
setp
|
|
end
|
|
|
|
(* This function initializes the signal set set to include all of the defined
|
|
signals. Again, the return value is 0. *)
|
|
let sigfillset = foreign "sigfillset" (ptr sigset_t @-> returning int)
|
|
|
|
let full () =
|
|
let setp = allocate_n ~count:1 sigset_t in begin
|
|
ignore (sigfillset setp);
|
|
setp
|
|
end
|
|
|
|
(* This function adds the signal signum to the signal set set. All sigaddset
|
|
does is modify set; it does not block or unblock any signals.
|
|
|
|
The return value is 0 on success and -1 on failure. The following errno
|
|
error condition is defined for this function:
|
|
|
|
EINVAL The signum argument doesn't specify a valid signal.
|
|
*)
|
|
let sigaddset = foreign "sigaddset" ~check_errno:true
|
|
(ptr sigset_t @-> int @-> returning int)
|
|
|
|
let add set signal = ignore (sigaddset set signal)
|
|
|
|
(* This function removes the signal signum from the signal set set. All
|
|
sigdelset does is modify set; it does not block or unblock any signals.
|
|
|
|
The return value and error conditions are the same as for
|
|
sigaddset. *)
|
|
let sigdelset = foreign "sigdelset" ~check_errno:true
|
|
(ptr sigset_t @-> int @-> returning int)
|
|
|
|
let del set signal = ignore (sigdelset set signal)
|
|
|
|
(* The sigismember function tests whether the signal signum is a member of the
|
|
signal set set. It returns 1 if the signal is in the set, 0 if not, and -1 if
|
|
there is an error.
|
|
|
|
The following errno error condition is defined for this function:
|
|
|
|
EINVAL The signum argument doesn't specify a valid signal.
|
|
*)
|
|
let sigismember = foreign "sigismember" ~check_errno:true
|
|
(ptr sigset_t @-> int @-> returning int)
|
|
|
|
let mem set signal = sigismember set signal <> 0
|