linux, os::current_thread_id() vs os::Linux::gettid()
David Holmes
david.holmes at oracle.com
Tue Aug 26 06:33:15 UTC 2014
On 26/08/2014 4:24 PM, Thomas Stüfe wrote:
> Hi David,
>
> Thank you for answering.
>
> The reason I ask is that I work on the AIX port and would like to remove
> the use of kernel thread ids.
>
> For one, AIX kernel thread ids are 64bit, so we have a truncation error
> by casting them to 32bit pid_t; also, a pthread may be scheduled to
> multiple kernel threads during its lifetime by the AIX scheduler. I
> think the reason we introduced kernel thread ids was because other
> platform ports do it too, so I wanted to know the reason.
I think it would be safe to remove them. Any port that started from the
linux code tends to inherit its historical baggage.
David
>
> Thomas
>
>
>
>
>
>
>
>
> On Tue, Aug 26, 2014 at 5:57 AM, David Holmes <david.holmes at oracle.com
> <mailto:david.holmes at oracle.com>> wrote:
>
> On 26/08/2014 1:46 PM, David Holmes wrote:
>
> Hi Thomas,
>
> On 26/08/2014 12:55 AM, Thomas Stüfe wrote:
>
> Hi,
>
> I wonder about the implementation of os::current_thread_id()
> on Linux.
>
> There is os::Linux::gettid() and os::current_thread_id().
> os::Linux::gettid() returns the kernel thread id,
> os::current_thread_id()
> returns the pthread id.
>
> os::Linux::gettid() is used to initialize
> OSThread::_thread_id, so that
> contains the kernel thread id. So now we get conflicting
> information from
> OSThread::thread_id and os::current_thread_id().
>
> As far as I see, all other platforms consistently return the
> kernel
> thread id on both code paths.
>
>
> Only AIX and BSD have gettid and both those ports were based on the
> Linux code.
>
>
> Sorry misunderstood your comment. Yes other platforms currently use
> the same low-level thread id for the OSThread and
> os::current_thread_id(). I suspect if you could look back in time
> that Solaris would have also had different usages eg for LWP id
> versus user-level thread id.
>
> David
> -----
>
>
> Am I overlooking something or is this behaviour intentional?
>
>
> Intentional but historical, going back to old LinuxThreads.
> Probably one
> of many cleanups that can be done in the linux code.
>
> David
>
>
> Kind Regards,
>
> ..Thomas
>
>
More information about the hotspot-dev
mailing list