39 lines
		
	
	
	
		
			1.1 KiB
		
	
	
	
		
			Modula-2
		
	
	
	
	
	
			
		
		
	
	
			39 lines
		
	
	
	
		
			1.1 KiB
		
	
	
	
		
			Modula-2
		
	
	
	
	
	
| DEFINITION MODULE Traps;
 | |
| (*
 | |
|   Module:	Facility for handling traps
 | |
|   Author:	Ceriel J.H. Jacobs
 | |
|   Version:	$Header$
 | |
| *)
 | |
| 
 | |
|   IMPORT EM;
 | |
| 
 | |
|   CONST
 | |
| 	ERRTOOLARGE =	64;	(* stack size of process too large *)
 | |
| 	ERRTOOMANY =	65;	(* too many nested traps + handlers *)
 | |
| 	ERRNORESULT =	66;	(* no RETURN from function procedure *)
 | |
| 	ERRCARDOVFL =	67;	(* CARDINAL overflow *)
 | |
| 	ERRFORLOOP =	68;	(* value of FOR-loop control variable changed
 | |
| 				   in loop
 | |
| 				*)
 | |
| 	ERRCARDUVFL =	69;	(* CARDINAL underflow *)
 | |
| 	ERRINTERNAL =	70;	(* Internal error; should not happen *)
 | |
| 	ERRUNIXSIG =	71;	(* received unix signal *)
 | |
| 
 | |
|   TYPE	TrapHandler = EM.TrapHandler;
 | |
| 
 | |
|   PROCEDURE InstallTrapHandler(t: TrapHandler): TrapHandler;
 | |
|   (* Install a new trap handler, and return the previous one.
 | |
|      Parameter of trap handler is the trap number.
 | |
|      When a trap occurs, the default trap handler is re-installed before
 | |
|      calling the new handler.
 | |
|   *)
 | |
| 
 | |
|   PROCEDURE Message(str: ARRAY OF CHAR);
 | |
|   (* Write message "str" on standard error, preceeded by filename and
 | |
|      linenumber if possible
 | |
|   *)
 | |
| 
 | |
|   PROCEDURE Trap(n: INTEGER);
 | |
|   (* cause trap number "n" to occur *)
 | |
| 
 | |
| END Traps.
 |