(root)/
binutils-2.41/
gprofng/
libcollector/
tsd.h
       1  /* Copyright (C) 2021-2023 Free Software Foundation, Inc.
       2     Contributed by Oracle.
       3  
       4     This file is part of GNU Binutils.
       5  
       6     This program is free software; you can redistribute it and/or modify
       7     it under the terms of the GNU General Public License as published by
       8     the Free Software Foundation; either version 3, or (at your option)
       9     any later version.
      10  
      11     This program is distributed in the hope that it will be useful,
      12     but WITHOUT ANY WARRANTY; without even the implied warranty of
      13     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
      14     GNU General Public License for more details.
      15  
      16     You should have received a copy of the GNU General Public License
      17     along with this program; if not, write to the Free Software
      18     Foundation, 51 Franklin Street - Fifth Floor, Boston,
      19     MA 02110-1301, USA.  */
      20  
      21  /* Thread-specific data */
      22  
      23  #ifndef _TSD_H
      24  #define _TSD_H
      25  
      26  #include <sys/types.h>
      27  
      28  int __collector_tsd_init ();
      29  /* Function: Init tsd module.  Call once before using other functions.
      30     MT-Level: Unsafe
      31     Return:   0 if successful
      32   */
      33  
      34  void __collector_tsd_fini ();
      35  /* Function: Shutdown tsd module.
      36     MT-Level: Unsafe
      37     Return:   None
      38   */
      39  
      40  void __collector_tsd_fork_child_cleanup ();
      41  /* Function: Reset tsd module.  Call immediately after fork() in child process.
      42     MT-Level: Unsafe
      43     Return:   None
      44   */
      45  
      46  int __collector_tsd_allocate ();
      47  /* Function: Allocate thread info.
      48  	     Call from threads before using tsd_get_by_key().
      49  	     Call from main thread should be made before calls from other threads.
      50     MT-Level: First call is unsafe.  Safe afterwards.
      51     Return:   0 if successful
      52   */
      53  
      54  void __collector_tsd_release ();
      55  /* Function: Free thread info.
      56  	     Call from threads just before thread termination.
      57     MT-Level: Safe
      58     Return:   None
      59   */
      60  
      61  #define COLLECTOR_TSD_INVALID_KEY ((unsigned)-1)
      62  unsigned __collector_tsd_create_key (size_t memsize, void (*init)(void*), void (*fini)(void*));
      63  /* Function: Reserve TDS memory.
      64     MT-Level: Unsafe
      65     Inputs:   <memsize>: number of bytes to reserve
      66  	     <init>: key memory initialization.  Must be callable even if
      67  		     the associated thread has not yet been created.
      68  	     <fini>: key memory finalization.  Must be callable even if
      69  		     the associated thread has been terminated.
      70     Return:   key or COLLECTOR_TSD_INVALID_KEY if not successful.
      71   */
      72  
      73  void *__collector_tsd_get_by_key (unsigned key);
      74  /* Function: Get TSD memory.
      75  	     Call from threads after calling tsd_allocate().
      76     MT-Level: Safe
      77     Inputs:   <key>: return value from tsd_create_key()
      78     Return:   memory if successful, NULL otherwise
      79   */
      80  #endif /* _TSD_H */