48 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			C++
		
	
	
	
			
		
		
	
	
			48 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			C++
		
	
	
	
/* cygthread.h
 | 
						|
 | 
						|
   Copyright 1998, 1999, 2000, 2001, 2002 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
 | 
						|
{
 | 
						|
  DWORD avail;
 | 
						|
  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 DWORD main_thread_id;
 | 
						|
  static bool exiting;
 | 
						|
  static DWORD WINAPI stub (VOID *);
 | 
						|
  static DWORD WINAPI simplestub (VOID *);
 | 
						|
 public:
 | 
						|
  static const char * name (DWORD = 0);
 | 
						|
  cygthread (LPTHREAD_START_ROUTINE, LPVOID, const char *);
 | 
						|
  cygthread () {};
 | 
						|
  static void init ();
 | 
						|
  bool detach (HANDLE = NULL);
 | 
						|
  operator HANDLE ();
 | 
						|
  static bool is ();
 | 
						|
  void * operator new (size_t);
 | 
						|
  static cygthread *freerange ();
 | 
						|
  void exit_thread ();
 | 
						|
  void terminate_thread ();
 | 
						|
  static void terminate ();
 | 
						|
  bool SetThreadPriority (int nPriority) {return ::SetThreadPriority (h, nPriority);}
 | 
						|
  void zap_h ()
 | 
						|
  {
 | 
						|
    (void) CloseHandle (h);
 | 
						|
    h = NULL;
 | 
						|
  }
 | 
						|
 | 
						|
};
 | 
						|
 | 
						|
#define cygself NULL
 |