(root)/
glibc-2.38/
nptl/
pthread_getcpuclockid.c
       1  /* pthread_getcpuclockid -- Get POSIX clockid_t for a pthread_t.  Linux version
       2     Copyright (C) 2000-2023 Free Software Foundation, Inc.
       3     This file is part of the GNU C Library.
       4  
       5     The GNU C Library is free software; you can redistribute it and/or
       6     modify it under the terms of the GNU Lesser General Public License as
       7     published by the Free Software Foundation; either version 2.1 of the
       8     License, or (at your option) any later version.
       9  
      10     The GNU C Library is distributed in the hope that it will be useful,
      11     but WITHOUT ANY WARRANTY; without even the implied warranty of
      12     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
      13     Lesser General Public License for more details.
      14  
      15     You should have received a copy of the GNU Lesser General Public
      16     License along with the GNU C Library; see the file COPYING.LIB.  If
      17     not, see <https://www.gnu.org/licenses/>.  */
      18  
      19  #include <errno.h>
      20  #include <pthreadP.h>
      21  #include <sys/time.h>
      22  #include <tls.h>
      23  #include <kernel-posix-cpu-timers.h>
      24  #include <shlib-compat.h>
      25  
      26  int
      27  __pthread_getcpuclockid (pthread_t threadid, clockid_t *clockid)
      28  {
      29    struct pthread *pd = (struct pthread *) threadid;
      30  
      31    /* Make sure the descriptor is valid.  */
      32    if (INVALID_TD_P (pd))
      33      /* Not a valid thread handle.  */
      34      return ESRCH;
      35  
      36    /* The clockid_t value is a simple computation from the TID.  */
      37  
      38    const clockid_t tidclock = make_thread_cpuclock (pd->tid, CPUCLOCK_SCHED);
      39  
      40    *clockid = tidclock;
      41    return 0;
      42  }
      43  versioned_symbol (libc, __pthread_getcpuclockid, pthread_getcpuclockid,
      44                    GLIBC_2_34);
      45  
      46  #if OTHER_SHLIB_COMPAT (libpthread, GLIBC_2_2, GLIBC_2_34)
      47  compat_symbol (libpthread, __pthread_getcpuclockid, pthread_getcpuclockid,
      48                 GLIBC_2_2);
      49  #endif