File: events.h

package info (click to toggle)
gnu-smalltalk 3.0.3-2
  • links: PTS
  • area: main
  • in suites: lenny
  • size: 26,460 kB
  • ctags: 13,326
  • sloc: ansic: 82,059; sh: 22,788; asm: 7,846; perl: 4,493; cpp: 3,517; awk: 1,471; yacc: 1,355; makefile: 1,151; xml: 886; lex: 843; sed: 258
file content (110 lines) | stat: -rw-r--r-- 4,685 bytes parent folder | download
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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
/******************************** -*- C -*- ****************************
 *
 *	Header file for asynchronous events
 *
 *
 ***********************************************************************/

/***********************************************************************
 *
 * Copyright 2001, 2002, 2006 Free Software Foundation, Inc.
 * Written by Paolo Bonzini.
 *
 * This file is part of GNU Smalltalk.
 *
 * GNU Smalltalk is free software; you can redistribute it and/or modify it
 * under the terms of the GNU General Public License as published by the Free
 * Software Foundation; either version 2, or (at your option) any later
 * version.
 *
 * Linking GNU Smalltalk statically or dynamically with other modules is
 * making a combined work based on GNU Smalltalk.  Thus, the terms and
 * conditions of the GNU General Public License cover the whole
 * combination.
 *
 * In addition, as a special exception, the Free Software Foundation
 * give you permission to combine GNU Smalltalk with free software
 * programs or libraries that are released under the GNU LGPL and with
 * independent programs running under the GNU Smalltalk virtual machine.
 *
 * You may copy and distribute such a system following the terms of the
 * GNU GPL for GNU Smalltalk and the licenses of the other code
 * concerned, provided that you include the source code of that other
 * code when and as the GNU GPL requires distribution of source code.
 *
 * Note that people who make modified versions of GNU Smalltalk are not
 * obligated to grant this special exception for their modified
 * versions; it is their choice whether to do so.  The GNU General
 * Public License gives permission to release a modified version without
 * this exception; this exception also makes it possible to release a
 * modified version which carries forward this exception.
 *
 * GNU Smalltalk is distributed in the hope that it will be useful, but WITHOUT
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
 * more details.
 *
 * You should have received a copy of the GNU General Public License along with
 * GNU Smalltalk; see the file COPYING.	 If not, write to the Free Software
 * Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
 *
 ***********************************************************************/

#ifndef GST_EVENTS_H
#define GST_EVENTS_H

/* Initialize the data structures used to hold information about
   asynchronous events requested by Smalltalk programs.  */
extern void _gst_init_async_events (void) 
  ATTRIBUTE_HIDDEN;

/* Arrange so that after DELAY milliseconds SEMAPHOREOOP is signaled
   by the virtual machine. Previous waits are discarded.  */
extern void _gst_async_timed_wait (OOP semaphoreOOP,
				   int delay) 
  ATTRIBUTE_HIDDEN;

/* Arrange so that when the SIG signal arrives from the operating
   system, SEMAPHOREOOP is signaled by the virtual machine.  A
   previous wait for the same signal, if any, are discarded.  */
extern void _gst_async_interrupt_wait (OOP semaphoreOOP,
				       int sig) 
  ATTRIBUTE_HIDDEN;

/* Answer whether a timeout has been scheduled and a semaphore was
   passed to the virtual machine, to be signaled when the timer
   fires.  */
extern mst_Boolean _gst_is_timeout_programmed (void)
  ATTRIBUTE_PURE 
  ATTRIBUTE_HIDDEN;

/* Fire and remove all I/O handlers for file descriptor FD.  */
extern void _gst_remove_fd_polling_handlers (int fd)
  ATTRIBUTE_HIDDEN;

/* Check whether I/O is possible on the FD file descriptor; COND is 0
   to check for pending input, 1 to check for the possibility of doing
   non-blocking output, 2 to check for pending exceptional situations
   (such as out-of-band data).  Answer -1 if there is an error, 0 if
   I/O is impossible, 1 if possible.  */
extern int _gst_sync_file_polling (int fd,
				   int cond) 
  ATTRIBUTE_HIDDEN;

/* Check whether I/O is possible on the FD file descriptor; COND is 0
   to check for pending input, 1 to check for the possibility of doing
   non-blocking output, 2 to check for pending exceptional situations
   (such as out-of-band data).  Answer -1 if there is an error, 0 if
   I/O is impossible, 1 if possible.  If 0 is answered, the virtual
   machine arranges things so that when the given condition is true
   SEMAPHOREOOP is signaled. 

   Note: due to lack of support from many kernels, waiting for a
   semaphore to be signaled when *output* is possible is risky and
   known to works for sockets only.  */
extern int _gst_async_file_polling (int fd,
				    int cond,
				    OOP semaphoreOOP) 
  ATTRIBUTE_HIDDEN;

#endif /* GST_EVENTS_H */