(root)/
gcc-13.2.0/
libgomp/
affinity.c
       1  /* Copyright (C) 2006-2023 Free Software Foundation, Inc.
       2     Contributed by Jakub Jelinek <jakub@redhat.com>.
       3  
       4     This file is part of the GNU Offloading and Multi Processing Library
       5     (libgomp).
       6  
       7     Libgomp is free software; you can redistribute it and/or modify it
       8     under the terms of the GNU General Public License as published by
       9     the Free Software Foundation; either version 3, or (at your option)
      10     any later version.
      11  
      12     Libgomp is distributed in the hope that it will be useful, but WITHOUT ANY
      13     WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
      14     FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
      15     more details.
      16  
      17     Under Section 7 of GPL version 3, you are granted additional
      18     permissions described in the GCC Runtime Library Exception, version
      19     3.1, as published by the Free Software Foundation.
      20  
      21     You should have received a copy of the GNU General Public License and
      22     a copy of the GCC Runtime Library Exception along with this program;
      23     see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
      24     <http://www.gnu.org/licenses/>.  */
      25  
      26  /* This is a generic stub implementation of a CPU affinity setting.  */
      27  
      28  #include "libgomp.h"
      29  #include <string.h>
      30  #include <stdio.h>
      31  
      32  void
      33  gomp_init_affinity (void)
      34  {
      35  }
      36  
      37  #ifdef LIBGOMP_USE_PTHREADS
      38  void
      39  gomp_init_thread_affinity (pthread_attr_t *attr, unsigned int place)
      40  {
      41    (void) attr;
      42    (void) place;
      43  }
      44  #endif
      45  
      46  void **
      47  gomp_affinity_alloc (unsigned long count, bool quiet)
      48  {
      49    (void) count;
      50    if (!quiet)
      51      gomp_error ("Affinity not supported on this configuration");
      52    return NULL;
      53  }
      54  
      55  void
      56  gomp_affinity_init_place (void *p)
      57  {
      58    (void) p;
      59  }
      60  
      61  bool
      62  gomp_affinity_add_cpus (void *p, unsigned long num,
      63  			unsigned long len, long stride, bool quiet)
      64  {
      65    (void) p;
      66    (void) num;
      67    (void) len;
      68    (void) stride;
      69    (void) quiet;
      70    return false;
      71  }
      72  
      73  bool
      74  gomp_affinity_remove_cpu (void *p, unsigned long num)
      75  {
      76    (void) p;
      77    (void) num;
      78    return false;
      79  }
      80  
      81  bool
      82  gomp_affinity_copy_place (void *p, void *q, long stride)
      83  {
      84    (void) p;
      85    (void) q;
      86    (void) stride;
      87    return false;
      88  }
      89  
      90  bool
      91  gomp_affinity_same_place (void *p, void *q)
      92  {
      93    (void) p;
      94    (void) q;
      95    return false;
      96  }
      97  
      98  bool
      99  gomp_affinity_finalize_place_list (bool quiet)
     100  {
     101    (void) quiet;
     102    return false;
     103  }
     104  
     105  bool
     106  gomp_affinity_init_level (int level, unsigned long count, bool quiet)
     107  {
     108    (void) level;
     109    (void) count;
     110    (void) quiet;
     111    if (!quiet)
     112      gomp_error ("Affinity not supported on this configuration");
     113    return NULL;
     114  }
     115  
     116  void
     117  gomp_affinity_print_place (void *p)
     118  {
     119    (void) p;
     120  }
     121  
     122  int
     123  omp_get_place_num_procs (int place_num)
     124  {
     125    (void) place_num;
     126    return 0;
     127  }
     128  
     129  void
     130  omp_get_place_proc_ids (int place_num, int *ids)
     131  {
     132    (void) place_num;
     133    (void) ids;
     134  }
     135  
     136  void
     137  gomp_get_place_proc_ids_8 (int place_num, int64_t *ids)
     138  {
     139    (void) place_num;
     140    (void) ids;
     141  }
     142  
     143  void
     144  gomp_display_affinity_place (char *buffer, size_t size, size_t *ret,
     145  			     int place)
     146  {
     147    char buf[sizeof (long) * 3 + 4];
     148    if (gomp_available_cpus > 1)
     149      sprintf (buf, "0-%lu", gomp_available_cpus - 1);
     150    else
     151      strcpy (buf, "0");
     152    gomp_display_string (buffer, size, ret, buf, strlen (buf));
     153  }
     154  
     155  ialias(omp_get_place_num_procs)
     156  ialias(omp_get_place_proc_ids)