comparison src/blockinput.h @ 27426:e28edb0e4233

(pending_atimers): Add extern declaration. (UNBLOCK_INPUT): Rewritten. Handle pending atimers.
author Gerd Moellmann <gerd@gnu.org>
date Tue, 25 Jan 2000 15:53:45 +0000
parents f7ca88e90856
children 5a1dca465b50
comparison
equal deleted inserted replaced
27425:e575223479a1 27426:e28edb0e4233
48 48
49 /* Nonzero means an input interrupt has arrived 49 /* Nonzero means an input interrupt has arrived
50 during the current critical section. */ 50 during the current critical section. */
51 extern int interrupt_input_pending; 51 extern int interrupt_input_pending;
52 52
53
54 /* Non-zero means asynchronous timers should be run when input is
55 unblocked. */
56
57 extern int pending_atimers;
58
53 /* Begin critical section. */ 59 /* Begin critical section. */
54 #define BLOCK_INPUT (interrupt_input_blocked++) 60 #define BLOCK_INPUT (interrupt_input_blocked++)
55 61
56 /* End critical section. 62 /* End critical section.
57 63
65 files which use this macro don't #include the right files to get 71 files which use this macro don't #include the right files to get
66 SIGIO. 72 SIGIO.
67 73
68 So, we always test interrupt_input_pending now; that's not too 74 So, we always test interrupt_input_pending now; that's not too
69 expensive, and it'll never get set if we don't need to resignal. */ 75 expensive, and it'll never get set if we don't need to resignal. */
70 #define UNBLOCK_INPUT \ 76
71 (interrupt_input_blocked--, \ 77 #define UNBLOCK_INPUT \
72 (interrupt_input_blocked < 0 ? (abort (), 0) : 0), \ 78 do \
73 ((interrupt_input_blocked == 0 && interrupt_input_pending != 0) \ 79 { \
74 ? (reinvoke_input_signal (), 0) \ 80 --interrupt_input_blocked; \
75 : 0)) 81 if (interrupt_input_blocked == 0) \
82 { \
83 if (interrupt_input_pending) \
84 reinvoke_input_signal (); \
85 if (pending_atimers) \
86 do_pending_atimers (); \
87 } \
88 else if (interrupt_input_blocked < 0) \
89 abort (); \
90 } \
91 while (0)
76 92
77 #define TOTALLY_UNBLOCK_INPUT (interrupt_input_blocked = 0) 93 #define TOTALLY_UNBLOCK_INPUT (interrupt_input_blocked = 0)
78 #define UNBLOCK_INPUT_RESIGNAL UNBLOCK_INPUT 94 #define UNBLOCK_INPUT_RESIGNAL UNBLOCK_INPUT
79 95
80 /* Defined in keyboard.c */ 96 /* Defined in keyboard.c */