Added SYSDEPS_GetUnixTid to return the Unix thread id to send to the
server.

diff --git a/configure b/configure
index 0aac349..0451ec7 100755
--- a/configure
+++ b/configure
@@ -13249,8 +13249,10 @@
 
 
 
+
 for ac_func in \
 	_lwp_create \
+	_lwp_self \
 	_pclose \
 	_popen \
 	_snprintf \
diff --git a/configure.ac b/configure.ac
index 8eb46ee..649a9da 100644
--- a/configure.ac
+++ b/configure.ac
@@ -943,6 +943,7 @@
 AC_FUNC_ALLOCA()
 AC_CHECK_FUNCS(\
 	_lwp_create \
+	_lwp_self \
 	_pclose \
 	_popen \
 	_snprintf \
diff --git a/include/config.h.in b/include/config.h.in
index 65062d8..4d37b99 100644
--- a/include/config.h.in
+++ b/include/config.h.in
@@ -677,6 +677,9 @@
 /* Define to 1 if you have the `_lwp_create' function. */
 #undef HAVE__LWP_CREATE
 
+/* Define to 1 if you have the `_lwp_self' function. */
+#undef HAVE__LWP_SELF
+
 /* Define to 1 if you have the `_pclose' function. */
 #undef HAVE__PCLOSE
 
diff --git a/include/thread.h b/include/thread.h
index 5fadd2b..2e4798d 100644
--- a/include/thread.h
+++ b/include/thread.h
@@ -147,6 +147,7 @@
 /* scheduler/sysdeps.c */
 extern int SYSDEPS_SpawnThread( TEB *teb );
 extern void SYSDEPS_SetCurThread( TEB *teb );
+extern int SYSDEPS_GetUnixTid(void);
 extern void SYSDEPS_InitErrno(void);
 extern void DECLSPEC_NORETURN SYSDEPS_ExitThread( int status );
 extern void DECLSPEC_NORETURN SYSDEPS_AbortThread( int status );
diff --git a/scheduler/client.c b/scheduler/client.c
index 8d3a554..4024cbc 100644
--- a/scheduler/client.c
+++ b/scheduler/client.c
@@ -694,7 +694,7 @@
     SERVER_START_REQ( init_thread )
     {
         req->unix_pid    = getpid();
-        req->unix_tid    = -1;
+        req->unix_tid    = SYSDEPS_GetUnixTid();
         req->teb         = teb;
         req->entry       = teb->entry_point;
         req->reply_fd    = reply_pipe[1];
diff --git a/scheduler/sysdeps.c b/scheduler/sysdeps.c
index 7c322d1..ac62ecc 100644
--- a/scheduler/sysdeps.c
+++ b/scheduler/sysdeps.c
@@ -317,6 +317,25 @@
         _exit( status );
 }
 
+/***********************************************************************
+ *           SYSDEPS_GetUnixTid
+ *
+ * Get the Unix tid of the current thread.
+ */
+int SYSDEPS_GetUnixTid(void)
+{
+#ifdef HAVE__LWP_SELF
+    return _lwp_self();
+#elif defined(__linux__) && defined(__i386__)
+    int ret;
+    __asm__("int $0x80" : "=a" (ret) : "0" (224) /* SYS_gettid */);
+    if (ret < 0) ret = -1;
+    return ret;
+#else
+    return -1;
+#endif
+}
+
 
 /* default errno before threading is initialized */
 static int *default_errno_location(void)