Welcome to mirror list, hosted at ThFree Co, Russian Federation.

cygwin.com/git/newlib-cygwin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristopher Faylor <me@cgf.cx>2001-05-08 19:16:49 +0400
committerChristopher Faylor <me@cgf.cx>2001-05-08 19:16:49 +0400
commit792011508a5faae82e03a8b49ca1718b5b29be06 (patch)
tree304f219e8aa687e609465e69833f8edc049cdb9b /winsup/cygwin/dtable.h
parent791cada5a2d50dbf88ae4f88084aff58ce134584 (diff)
* cygheap.cc (_cfree): Add regparm attribute.
(_crealloc): Ditto. * dcrt0.cc (dll_crt0_1): Default to always checking for executable for now. * dtable.cc (dtable::not_open): Move method. * dtable.h (dtable): Here. * exceptions.cc (ctrl_c_handler): Don't expect process group leader to handle a signal if it doesn't exist. * fhandler.h (fhandler_base): Make openflags protected. * localtime.c (tzsetwall): Check for __CYGWIN__ as well as __WIN32__. * path.cc (path_conv::check): Add some comments. Change strcat to assignment. * lib/_cygwin_S_IEXEC.cc (_cygwin_bob__): Eliminate. * fhandler_tty.cc (fhandler_console::dup): Set controlling terminal if necessary. * fhandler_tty.cc (fhandler_tty_slave::dup): Ditto.
Diffstat (limited to 'winsup/cygwin/dtable.h')
-rw-r--r--winsup/cygwin/dtable.h12
1 files changed, 11 insertions, 1 deletions
diff --git a/winsup/cygwin/dtable.h b/winsup/cygwin/dtable.h
index b67cfbcc1..f81d916b7 100644
--- a/winsup/cygwin/dtable.h
+++ b/winsup/cygwin/dtable.h
@@ -11,6 +11,8 @@ details. */
/* Initial and increment values for cygwin's fd table */
#define NOFILE_INCR 32
+#include "thread.h"
+
class dtable
{
fhandler_base **fds;
@@ -41,7 +43,15 @@ public:
fhandler_base *build_fhandler (int fd, DWORD dev, const char *name,
int unit = -1);
fhandler_base *build_fhandler (int fd, const char *name, HANDLE h);
- int not_open (int n) __attribute__ ((regparm(1)));
+ int not_open (int fd)
+ {
+ SetResourceLock (LOCK_FD_LIST, READ_LOCK, "not_open");
+
+ int res = fd < 0 || fd >= (int) size || fds[fd] == NULL;
+
+ ReleaseResourceLock (LOCK_FD_LIST, READ_LOCK, "not open");
+ return res;
+ }
int find_unused_handle (int start);
int find_unused_handle () { return find_unused_handle (first_fd_for_open);}
void release (int fd);