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

server.
oldstable
Alexandre Julliard 2003-04-01 04:39:35 +00:00
parent b2d39ea5f0
commit 6f7a204466
6 changed files with 27 additions and 1 deletions

2
configure vendored
View File

@ -13247,10 +13247,12 @@ fi
for ac_func in \
_lwp_create \
_lwp_self \
_pclose \
_popen \
_snprintf \

View File

@ -943,6 +943,7 @@ dnl **** Check for functions ****
AC_FUNC_ALLOCA()
AC_CHECK_FUNCS(\
_lwp_create \
_lwp_self \
_pclose \
_popen \
_snprintf \

View File

@ -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

View File

@ -147,6 +147,7 @@ extern TEB *THREAD_IdToTEB( DWORD id );
/* 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 );

View File

@ -694,7 +694,7 @@ void CLIENT_InitThread(void)
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];

View File

@ -317,6 +317,25 @@ void SYSDEPS_AbortThread( int status )
_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)