(root)/
gcc-13.2.0/
gcc/
ada/
affinity.c
       1  /****************************************************************************
       2   *                                                                          *
       3   *                         GNAT COMPILER COMPONENTS                         *
       4   *                                                                          *
       5   *                             A F F I N I T Y                              *
       6   *                                                                          *
       7   *                          C Implementation File                           *
       8   *                                                                          *
       9   *            Copyright (C) 2005-2023, Free Software Foundation, Inc.       *
      10   *                                                                          *
      11   * GNAT is free software;  you can  redistribute it  and/or modify it under *
      12   * terms of the  GNU General Public License as published  by the Free Soft- *
      13   * ware  Foundation;  either version 3,  or (at your option) any later ver- *
      14   * sion.  GNAT is distributed in the hope that it will be useful, but WITH- *
      15   * OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY *
      16   * or FITNESS FOR A PARTICULAR PURPOSE.                                     *
      17   *                                                                          *
      18   * As a special exception under Section 7 of GPL version 3, you are granted *
      19   * additional permissions described in the GCC Runtime Library Exception,   *
      20   * version 3.1, as published by the Free Software Foundation.               *
      21   *                                                                          *
      22   * You should have received a copy of the GNU General Public License and    *
      23   * a copy of the GCC Runtime Library Exception along with this program;     *
      24   * see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    *
      25   * <http://www.gnu.org/licenses/>.                                          *
      26   *                                                                          *
      27   * GNAT was originally developed  by the GNAT team at  New York University. *
      28   * Extensive contributions were provided by Ada Core Technologies Inc.      *
      29   *                                                                          *
      30   ****************************************************************************/
      31  
      32  /* VxWorks SMP CPU affinity */
      33  
      34  #include "taskLib.h"
      35  #include "cpuset.h"
      36  
      37  extern int __gnat_set_affinity (TASK_ID tid, unsigned cpu);
      38  extern int __gnat_set_affinity_mask (TASK_ID tid, unsigned mask);
      39  
      40  int
      41   __gnat_set_affinity (TASK_ID tid, unsigned cpu)
      42  {
      43    cpuset_t cpuset;
      44  
      45    CPUSET_ZERO(cpuset);
      46    CPUSET_SET(cpuset, cpu);
      47    return taskCpuAffinitySet (tid, cpuset);
      48  }
      49  
      50  int
      51  __gnat_set_affinity_mask (TASK_ID tid, unsigned mask)
      52  {
      53    unsigned index;
      54    cpuset_t cpuset;
      55  
      56    CPUSET_ZERO(cpuset);
      57  
      58    for (index = 0; index < sizeof (unsigned) * 8; index++)
      59      if (mask & (1 << index))
      60        CPUSET_SET(cpuset, index);
      61  
      62    return taskCpuAffinitySet (tid, cpuset);
      63  }