annotate src/sysdep.h @ 771:943eaba38521

[xemacs-hg @ 2002-03-13 08:51:24 by ben] The big ben-mule-21-5 check-in! Various files were added and deleted. See CHANGES-ben-mule. There are still some test suite failures. No crashes, though. Many of the failures have to do with problems in the test suite itself rather than in the actual code. I'll be addressing these in the next day or so -- none of the test suite failures are at all critical. Meanwhile I'll be trying to address the biggest issues -- i.e. build or run failures, which will almost certainly happen on various platforms. All comments should be sent to ben@xemacs.org -- use a Cc: if necessary when sending to mailing lists. There will be pre- and post- tags, something like pre-ben-mule-21-5-merge-in, and post-ben-mule-21-5-merge-in.
author ben
date Wed, 13 Mar 2002 08:54:06 +0000
parents fdefd0186b75
children 2b676dc88c66
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1 /* System-dependent prototypes
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2 Copyright (C) 1985, 1993, 1994 Free Software Foundation, Inc.
771
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 665
diff changeset
3 Copyright (C) 2001 Ben Wing.
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
4
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
5 This file is part of XEmacs.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
6
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
7 XEmacs is free software; you can redistribute it and/or modify it
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
8 under the terms of the GNU General Public License as published by the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
9 Free Software Foundation; either version 2, or (at your option) any
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
10 later version.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
11
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
12 XEmacs is distributed in the hope that it will be useful, but WITHOUT
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
13 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
14 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
15 for more details.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
16
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
17 You should have received a copy of the GNU General Public License
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
18 along with XEmacs; see the file COPYING. If not, write to
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
19 the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
20 Boston, MA 02111-1307, USA. */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
21
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
22 /* Synched up with: FSF 19.30. Split out of sysdep.c/emacs.c. */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
23
440
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 432
diff changeset
24 #ifndef INCLUDED_sysdep_h_
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 432
diff changeset
25 #define INCLUDED_sysdep_h_
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
26
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
27 #include <setjmp.h>
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
28
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
29 #ifndef WIN32_NATIVE
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
30 extern char **environ;
440
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 432
diff changeset
31 #endif
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
32
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
33 #ifdef PDUMP
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
34 int pdump_read_file (char **pdump_start_pos, size_t *pdump_length);
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
35 #endif
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
36
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
37 int eight_bit_tty (struct device *d);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
38
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
39 void stuff_char (struct console *con, int c);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
40
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
41 void init_baud_rate (struct device *d);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
42
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
43 void set_exclusive_use (int fd);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
44
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
45 void set_descriptor_non_blocking (int fd);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
46
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
47 void wait_without_blocking (void);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
48
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
49 int get_pty_max_bytes (int fd);
665
fdefd0186b75 [xemacs-hg @ 2001-09-20 06:28:42 by ben]
ben
parents: 593
diff changeset
50 Intbyte get_eof_char (int fd);
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
51
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
52 /* Wait for subprocess with process id `pid' to terminate and
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
53 make sure it will get eliminated (not remain forever as a zombie) */
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
54 #ifndef WIN32_NATIVE
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
55 void wait_for_termination (int pid);
432
3a7e78e1142d Import from CVS: tag r21-2-24
cvs
parents: 430
diff changeset
56 #endif
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
57
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
58 /* flush any pending output
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
59 * (may flush input as well; it does not matter the way we use it)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
60 */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
61 void flush_pending_output (int channel);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
62
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
63 void child_setup_tty (int out);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
64
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
65 /* Suspend the Emacs process; give terminal to its superior. */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
66 void sys_suspend (void);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
67 /* Suspend a process if possible; give terminal to its superior. */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
68 void sys_suspend_process (int process);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
69
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
70 void request_sigio (void);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
71 void unrequest_sigio (void);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
72
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
73 void stop_interrupts (void);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
74 void start_interrupts (void);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
75 void slow_down_interrupts (void);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
76 void speed_up_interrupts (void);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
77 void init_poll_for_quit (void);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
78
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
79 /* Used so that signals can break out of system calls that aren't
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
80 naturally interruptible. */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
81
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
82 extern JMP_BUF break_system_call_jump;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
83 extern volatile int can_break_system_calls;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
84
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
85 /* Call these functions if you want to change some terminal parameter --
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
86 reset the console, change the parameter, and init it again. */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
87 void init_one_console (struct console *c);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
88 void reset_one_console (struct console *c);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
89 void init_one_device (struct device *d);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
90 void reset_one_device (struct device *d);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
91
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
92 /* Prepare all terminals for exiting Emacs; move the cursor to the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
93 bottom of the frame, turn off special modes, etc. Called at exit.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
94 This calls reset_one_console() on all consoles and does some other
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
95 stuff (e.g. fix the foreground pgroup). */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
96
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
97 void reset_all_consoles (void);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
98
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
99 /* Call these functions if you are going to temporarily exit back to
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
100 the shell (e.g. when suspending). This calls reset_one_console()
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
101 on the initial console and does some other stuff (e.g. fix the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
102 foreground pgroup). */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
103
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
104 void reset_initial_console (void);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
105 void reinit_initial_console (void);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
106
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
107 /* We muck around with our process group. This function needs
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
108 to be called at startup. The rest of the mucking is done as
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
109 part of the functions reset_all_consoles(), reset_initial_console(),
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
110 and reinit_initial_console(). */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
111
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
112 void init_process_group (void);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
113 void munge_tty_process_group (void);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
114 void unmunge_tty_process_group (void);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
115
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
116 void disconnect_controlling_terminal (void);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
117
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
118 /* Return nonzero if safe to use tabs in output.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
119 At the time this is called, init_sys_modes has not been done yet. */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
120 int tabs_safe_p (struct device *d);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
121
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
122 /* Get terminal size from system.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
123 If zero or a negative number is stored, the value is not valid. */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
124 void get_tty_device_size (struct device *d, int *widthp, int *heightp);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
125 /* Set the logical window size associated with descriptor FD */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
126 int set_window_size (int fd, int height, int width);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
127
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
128 /* Set up the proper status flags for use of a pty. */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
129 void setup_pty (int fd);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
130
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
131 /* Return the address of the start of the text segment prior to unexec. */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
132 char *start_of_text (void);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
133 /* Return the address of the start of the data segment prior to unexec. */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
134 void *start_of_data (void);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
135
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
136 /* Get_system_name returns as its value a string for system-name to return. */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
137 void init_system_name (void);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
138
771
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 665
diff changeset
139 #ifdef WIN32_NATIVE
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 665
diff changeset
140 void *sbrk (unsigned long increment);
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
141 #endif
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
142
440
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 432
diff changeset
143 #endif /* INCLUDED_sysdep_h_ */