(root)/
gcc-13.2.0/
gcc/
ada/
vx_stack_info.c
       1  /****************************************************************************
       2   *                                                                          *
       3   *                         GNAT COMPILER COMPONENTS                         *
       4   *                                                                          *
       5   *                         V X _ S T A C K _ I N F O                        *
       6   *                                                                          *
       7   *                          C Implementation File                           *
       8   *                                                                          *
       9   *              Copyright (C) 2007-2009  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-specific file to have access to task-specific data and be able
      33     to extract the stack boundaries for stack checking. */
      34  
      35  #include <taskLib.h>
      36  
      37  typedef struct
      38  {
      39    int  size;
      40    char *base;
      41    char *end;
      42  } stack_info;
      43  
      44  /* __gnat_get_stack_info is used by s-stchop.adb only for VxWorks. This
      45     procedure fills the stack information associated to the currently
      46     executing task. */
      47  extern void __gnat_get_stack_info (stack_info *vxworks_stack_info);
      48  
      49  void
      50  __gnat_get_stack_info (stack_info *vxworks_stack_info)
      51  {
      52    TASK_DESC descriptor;
      53  
      54    /* Ask the VxWorks kernel about stack values */
      55    taskInfoGet (taskIdSelf (), &descriptor);
      56  
      57    /* Fill the stack data with the information provided by the kernel */
      58    vxworks_stack_info->size = descriptor.td_stackSize;
      59    vxworks_stack_info->base = descriptor.td_pStackBase;
      60    vxworks_stack_info->end  = descriptor.td_pStackEnd;
      61  }