* cygthread.h (cygthread::is): Eliminate declaratin. * fhandler_console.cc (fhandler_console::read): Only wait for signal_arrived in the main thread. * fhandler_socket.cc: Include new "wininfo.h". (fhandler_socket::ioctl): Use 'winmsg' rather than 'gethwnd()'. * sync.cc (muto::grab): Define new function. (muto::acquire): Use tls pointer rather than tid. (muto::acquired): Ditto. (muto::reset): Delete. (muto::release): Ditto. Also implement "close on last release". * sync.h (muto::tid): Delete. (muto::tls): New field. (muto::ismine): Delete. (muto::owner): Delete. (muto::unstable): Delete. (muto::reset): Delete. (muto::upforgrabs): New method. (muto::grab): Ditto. (new_muto_name): New define. * wininfo.h: New file. (wininfo): New class. * window.cc: Rework throughout to use winfo class for controlling invisible window operation. (gethwnd): Delete definition. * winsup.h (gethwnd): Delete declaration.
		
			
				
	
	
		
			46 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			46 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| /* cygthread.h
 | |
| 
 | |
|    Copyright 1998, 1999, 2000, 2001, 2002, 2003, 2004 Red Hat, Inc.
 | |
| 
 | |
| This software is a copyrighted work licensed under the terms of the
 | |
| Cygwin license.  Please consult the file "CYGWIN_LICENSE" for
 | |
| details. */
 | |
| 
 | |
| class cygthread
 | |
| {
 | |
|   LONG inuse;
 | |
|   DWORD id;
 | |
|   HANDLE h;
 | |
|   HANDLE ev;
 | |
|   HANDLE thread_sync;
 | |
|   void *stack_ptr;
 | |
|   const char *__name;
 | |
|   LPTHREAD_START_ROUTINE func;
 | |
|   VOID *arg;
 | |
|   bool is_freerange;
 | |
|   static bool exiting;
 | |
|   void terminate_thread ();
 | |
|  public:
 | |
|   static DWORD WINAPI stub (VOID *);
 | |
|   static DWORD WINAPI simplestub (VOID *);
 | |
|   static DWORD main_thread_id;
 | |
|   static const char * name (DWORD = 0);
 | |
|   cygthread (LPTHREAD_START_ROUTINE, LPVOID, const char *);
 | |
|   cygthread () {};
 | |
|   static void init ();
 | |
|   bool detach (HANDLE = NULL);
 | |
|   operator HANDLE ();
 | |
|   void * operator new (size_t);
 | |
|   static cygthread *freerange ();
 | |
|   void exit_thread ();
 | |
|   static void terminate ();
 | |
|   bool SetThreadPriority (int nPriority) {return ::SetThreadPriority (h, nPriority);}
 | |
|   void zap_h ()
 | |
|   {
 | |
|     (void) CloseHandle (h);
 | |
|     h = NULL;
 | |
|   }
 | |
| };
 | |
| 
 | |
| #define cygself NULL
 |