summaryrefslogtreecommitdiffstats
path: root/winsup/cygwin/dtable.h
diff options
context:
space:
mode:
authorChristopher Faylor <me@cgf.cx>2003-12-11 06:12:41 +0000
committerChristopher Faylor <me@cgf.cx>2003-12-11 06:12:41 +0000
commit8e10c4311f9612951c82da5e844d51d985552d65 (patch)
tree23808644eb736e80e3160f30a07fe0357babe5f2 /winsup/cygwin/dtable.h
parent3f23411449cf414d447bf793a20f42ed3f8e5061 (diff)
downloadcygnal-8e10c4311f9612951c82da5e844d51d985552d65.tar.gz
cygnal-8e10c4311f9612951c82da5e844d51d985552d65.tar.bz2
cygnal-8e10c4311f9612951c82da5e844d51d985552d65.zip
* cygheap.h (cygheap_types): Add HEAP_ARCHETYPES.
(init_cheap::ctty): Change to pointer. * dtable.h (dtable::find_archetype): Declare new function. (dtable::add_archetype): Declare new function. (dtable::delete_archetype): Declare new function. (dtable::narchetypes): Declare. (dtable::farchetypes): Declare. (dtable::initial_archetype_size): Declare. (dtable::dtable): Initialize new fields. (dtable::initial_archetype_size): Declare. * dtable.cc (dtable::find_archetype): Define new function. (dtable::add_archetype): Define new function. (dtable::delete_archetype): Define new function. (dtable::initial_archetype_size): Define. * fhandler.h (fhandler_base::archetype): Declare. (fhandler_base::usecount): Declare. * fhandler.cc (fhandler_base::fhandler_base): Initialize new fields. * fhandler_console.cc (fhandler_console::get_tty_stuff): Pass NULL to third argument of set_ctty. * fhandler_tty.cc (fhandler_tty_slave::open): Accommodate new archetype method to create only one instance of a tty. (fhandler_tty_slave::close): Don't close handles unless archetype usecount is zero. When that happens, close archetype too. (fhandler_tty_slave::dup): Just copy archetype. Set use count appropriately. Set ctty, if appropriate. (fhandler_tty_common::dup): Remove slave considerations. (fhandler_tty_common::set_close_on_exec): Remove cygheap->ctty considerations. * pinfo.cc (_pinfo::set_ctty): Accommodate new archetype methods. * pinfo.h (_pinfo::set_ctty): Make third argument explicit. * syscalls.cc (close_all_files): Decrement controlling tty use count before closing all handles to allow controlling tty to be closed. Remove previous controlling tty considerations.
Diffstat (limited to 'winsup/cygwin/dtable.h')
-rw-r--r--winsup/cygwin/dtable.h9
1 files changed, 8 insertions, 1 deletions
diff --git a/winsup/cygwin/dtable.h b/winsup/cygwin/dtable.h
index 7267ce6f5..0b2db916b 100644
--- a/winsup/cygwin/dtable.h
+++ b/winsup/cygwin/dtable.h
@@ -21,12 +21,16 @@ class dtable
{
fhandler_base **fds;
fhandler_base **fds_on_hold;
+ fhandler_base **archetypes;
+ unsigned narchetypes;
+ unsigned farchetype;
+ static const int initial_archetype_size = 8;
int first_fd_for_open;
int cnt_need_fixup_before;
public:
size_t size;
- dtable () : first_fd_for_open(3), cnt_need_fixup_before(0) {}
+ dtable () : archetypes (NULL), narchetypes (0), farchetype (0), first_fd_for_open(3), cnt_need_fixup_before(0) {}
void init () {first_fd_for_open = 3;}
void dec_need_fixup_before ()
@@ -69,6 +73,9 @@ public:
void set_file_pointers_for_exec ();
bool in_vfork_cleanup () {return fds_on_hold == fds;}
fhandler_fifo *find_fifo (ATOM);
+ fhandler_base *find_archetype (device& dev);
+ fhandler_base **add_archetype ();
+ void delete_archetype (fhandler_base *);
};
fhandler_base *build_fh_dev (const device&, const char * = NULL);