1 /* -*- indent-tabs-mode: t; tab-width: 8; c-basic-offset: 8; -*- */
2 
3 /* Copyright (c) 2004 - 2006 Derek Foreman, Ben Jansens
4    Copyright (c) 2006 - 2013 Thomas Schmitt <scdbackup@gmx.net>
5    Provided under GPL version 2 or later.
6 */
7 
8 #ifndef BURN__INIT_H
9 #define BURN__INIT_H
10 
11 extern int burn_running;
12 
13 extern double lib_start_time;
14 
15 /** Indicator for burn_drive_get_status() whether a signal hit parts of the
16     thread team.
17     0= all works well ,
18     1 to 5 = waiting for eventual signal on control thread
19     > 5 = do abort now
20     -1 = control thread has been informed
21 */
22 extern volatile int burn_global_abort_level;
23 extern int burn_global_abort_signum;
24 extern void *burn_global_signal_handle;
25 extern burn_abort_handler_t burn_global_signal_handler;
26 
27 extern int burn_builtin_signal_action;         /* burn_set_signal_handling() */
28 extern volatile int burn_builtin_triggered_action;    /*  burn_is_aborting() */
29 
30 
31 /* ts B00225 */
32 /* @return 0= no abort pending , 1= not control thread ,
33           -1= surprisingly burn_abort returned
34 */
35 int burn_init_catch_on_abort(int flag);
36 
37 /* ts B10606 */
38 void *burn_alloc_mem(size_t size, size_t count, int flag);
39 
40 #define BURN_ALLOC_MEM(pt, typ, count) { \
41 	pt= (typ *) burn_alloc_mem(sizeof(typ), (size_t) (count), 0); \
42 	if(pt == NULL) { \
43 		ret= -1; goto ex; \
44 	} }
45 
46 #define BURN_ALLOC_MEM_VOID(pt, typ, count) { \
47 	pt= (typ *) burn_alloc_mem(sizeof(typ), (size_t) (count), 0); \
48 	if(pt == NULL) { \
49 		goto ex; \
50 	} }
51 
52 #define BURN_FREE_MEM(pt) { \
53 	if(pt != NULL) \
54 		free((char *) pt); \
55 	}
56 
57 
58 /* B20122 */
59 int burn_grab_prepare_sig_action(int *signal_action_mem, int flag);
60 int burn_grab_restore_sig_action(int signal_action_mem, int flag);
61 
62 
63 #endif /* BURN__INIT_H */
64