Introduce a non-portable function pthread_getthreadid_np(3) to retrieve

calling thread's unique integral ID, which is similar to AIX function of
the same name.  Bump __FreeBSD_version to note its introduction.

Reviewed by:	kib
This commit is contained in:
jkim 2011-02-07 21:26:46 +00:00
parent d8708af484
commit 365538a229
10 changed files with 171 additions and 2 deletions

View File

@ -48,6 +48,7 @@ int pthread_attr_get_np(pthread_t, pthread_attr_t *);
int pthread_attr_getaffinity_np(const pthread_attr_t *, size_t, cpuset_t *);
int pthread_attr_setaffinity_np(pthread_attr_t *, size_t, const cpuset_t *);
int pthread_getaffinity_np(pthread_t, size_t, cpuset_t *);
int pthread_getthreadid_np(void);
int pthread_main_np(void);
int pthread_multi_np(void);
int pthread_mutexattr_getkind_np(pthread_mutexattr_t);

View File

@ -137,6 +137,7 @@
#define pthread_getprio _pthread_getprio
#define pthread_getschedparam _pthread_getschedparam
#define pthread_getspecific _pthread_getspecific
#define pthread_getthreadid_np _pthread_getthreadid_np
#define pthread_join _pthread_join
#define pthread_key_create _pthread_key_create
#define pthread_key_delete _pthread_key_delete

View File

@ -118,6 +118,7 @@
#undef pthread_getprio
#undef pthread_getschedparam
#undef pthread_getspecific
#undef pthread_getthreadid_np
#undef pthread_join
#undef pthread_key_create
#undef pthread_key_delete

View File

@ -272,6 +272,7 @@ FBSDprivate_1.0 {
_pthread_getprio;
_pthread_getschedparam;
_pthread_getspecific;
_pthread_getthreadid_np;
_pthread_join;
_pthread_key_create;
_pthread_key_delete;
@ -403,6 +404,7 @@ FBSD_1.1 {
FBSD_1.2 {
openat;
pthread_getthreadid_np;
setcontext;
swapcontext;
};

View File

@ -22,6 +22,7 @@ SRCS+= \
thr_getprio.c \
thr_getcpuclockid.c \
thr_getschedparam.c \
thr_getthreadid_np.c \
thr_info.c \
thr_init.c \
thr_join.c \

View File

@ -0,0 +1,48 @@
/*
* Copyright (c) 2011 Jung-uk Kim <jkim@FreeBSD.org>
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* $FreeBSD$
*/
#include "namespace.h"
#include <pthread.h>
#include <pthread_np.h>
#include "un-namespace.h"
#include "thr_private.h"
__weak_reference(_pthread_getthreadid_np, pthread_getthreadid_np);
/*
* Provide the equivelant to AIX pthread_getthreadid_np() function.
*/
int
_pthread_getthreadid_np(void)
{
struct pthread *curthread;
_thr_check_init();
curthread = _get_curthread();
return (TID(curthread));
}

View File

@ -179,6 +179,7 @@ PTHREAD_MAN= pthread.3 \
pthread_exit.3 \
pthread_getconcurrency.3 \
pthread_getspecific.3 \
pthread_getthreadid_np.3 \
pthread_join.3 \
pthread_key_create.3 \
pthread_key_delete.3 \

View File

@ -0,0 +1,113 @@
.\" Copyright (c) 2011 Jung-uk Kim <jkim@FreeBSD.org>
.\" All rights reserved.
.\"
.\" Redistribution and use in source and binary forms, with or without
.\" modification, are permitted provided that the following conditions
.\" are met:
.\" 1. Redistributions of source code must retain the above copyright
.\" notice, this list of conditions and the following disclaimer.
.\" 2. Redistributions in binary form must reproduce the above copyright
.\" notice, this list of conditions and the following disclaimer in the
.\" documentation and/or other materials provided with the distribution.
.\"
.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
.\" $FreeBSD$
.\"
.Dd February 7, 2011
.Dt PTHREAD_GETTHREADID_NP 3
.Os
.Sh NAME
.Nm pthread_getthreadid_np
.Nd get the calling thread's integral ID
.Sh LIBRARY
.Lb libpthread
.Sh SYNOPSIS
.In pthread_np.h
.Ft int
.Fn pthread_getthreadid_np void
.Sh DESCRIPTION
The
.Fn pthread_getthreadid_np
function returns the unique integral ID of the calling thread.
Its semantics is similar to the AIX's
.Fn pthread_getthreadid_np
functuion.
.Sh RETURN VALUES
The
.Fn pthread_getthreadid_np
function returns the thread integral ID of the calling thread.
.Sh ERRORS
None.
.Sh SEE ALSO
.Xr pthread_self 3
.Sh AUTHORS
This manual page was written by
.An Jung-uk Kim Aq jkim@FreeBSD.org .
.\" Copyright (c) 2011 Jung-uk Kim <jkim@FreeBSD.org>
.\" All rights reserved.
.\"
.\" Redistribution and use in source and binary forms, with or without
.\" modification, are permitted provided that the following conditions
.\" are met:
.\" 1. Redistributions of source code must retain the above copyright
.\" notice, this list of conditions and the following disclaimer.
.\" 2. Redistributions in binary form must reproduce the above copyright
.\" notice, this list of conditions and the following disclaimer in the
.\" documentation and/or other materials provided with the distribution.
.\"
.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
.\" $FreeBSD$
.\"
.Dd February 4, 2011
.Dt PTHREAD_GETTHREADID_NP 3
.Os
.Sh NAME
.Nm pthread_getthreadid_np
.Nd get the calling thread's unique integral ID
.Sh LIBRARY
.Lb libpthread
.Sh SYNOPSIS
.In pthread_np.h
.Ft int
.Fn pthread_getthreadid_np void
.Sh DESCRIPTION
The
.Fn pthread_getthreadid_np
function returns the unique integral ID of the calling thread.
Its semantics is similar to the AIX's
.Fn pthread_getthreadid_np
functuion.
.Sh RETURN VALUES
The
.Fn pthread_getthreadid_np
function returns the thread integral ID of the calling thread.
.Sh ERRORS
None.
.Sh SEE ALSO
.Xr pthread_getunique_np 3 ,
.Xr pthread_self 3
.Sh AUTHORS
This manual page was written by
.An Jung-uk Kim Aq jkim@FreeBSD.org .

View File

@ -54,7 +54,8 @@ function returns the thread ID of the calling thread.
None.
.Sh SEE ALSO
.Xr pthread_create 3 ,
.Xr pthread_equal 3
.Xr pthread_equal 3 ,
.Xr pthread_getthreadid_np 3
.Sh STANDARDS
The
.Fn pthread_self

View File

@ -58,7 +58,7 @@
* in the range 5 to 9.
*/
#undef __FreeBSD_version
#define __FreeBSD_version 900030 /* Master, propagated to newvers */
#define __FreeBSD_version 900031 /* Master, propagated to newvers */
#ifdef _KERNEL
#define P_OSREL_SIGSEGV 700004