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
 |