File: event.h

package info (click to toggle)
scheme48 1.8%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: squeeze
  • size: 14,980 kB
  • ctags: 14,127
  • sloc: lisp: 76,272; ansic: 71,514; sh: 3,026; makefile: 637
file content (54 lines) | stat: -rw-r--r-- 1,766 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
/* must be synchronized with EVENTS enumeration in ps-channel.scm and s48-channel.scm */
enum event_enum { KEYBOARD_INTERRUPT_EVENT, IO_COMPLETION_EVENT, IO_ERROR_EVENT,
		  ALARM_EVENT, OS_SIGNAL_EVENT, ERROR_EVENT, EXTERNAL_EVENT, NO_EVENT };

S48_EXTERN psbool s48_add_pending_fd(int fd, psbool is_input);
S48_EXTERN psbool s48_remove_fd(int fd);

S48_EXTERN long s48_schedule_alarm_interrupt(long delta);
S48_EXTERN void s48_start_alarm_interrupts(void);
S48_EXTERN void s48_stop_alarm_interrupts(void);

#ifndef _WIN32
S48_EXTERN void s48_add_os_signal(long);
S48_EXTERN void s48_when_keyboard_interrupt(int ign);
S48_EXTERN void s48_when_alarm_interrupt(int ign);
S48_EXTERN void s48_when_external_event_interrupt(int ign);
#endif

extern long s48_run_time(long *mseconds);
extern long s48_real_time(long *mseconds);
extern int  s48_wait_for_event(long max_wait, psbool is_minutes);
extern int  s48_get_next_event(long *ready_fd, long *status);
extern long s48_dequeue_external_event(char *pendingp);

/* these are here only for the CHEAP_TIME() macro */
#define TICKS_PER_SECOND 1000	/* clock resolution */
#define POLLS_PER_SECOND   20   /* how often we poll */
#define TICKS_PER_POLL  (TICKS_PER_SECOND / POLLS_PER_SECOND)

extern long s48_current_time;
#define CHEAP_TIME()  (s48_current_time * TICKS_PER_POLL)

#ifndef _WIN32
S48_EXTERN char s48_Spending_interruptPS;
S48_EXTERN char s48_Spending_eventsPS;
S48_EXTERN char *s48_Sstack_limitS;
#endif

/*
 * Fix (HCC) NOTE_EVENT so that it will act like a single
 * statement.
 */
#define	NOTE_EVENT					\
	do {						\
             s48_Spending_eventsPS = 1;			\
             s48_Sstack_limitS = (((char *) -1));	\
	} while (0)

/*
 * For Unix.
 */
#ifdef SIGUSR1
#define SIG_EXTERNAL_EVENT SIGUSR1
#endif