(root)/
glibc-2.38/
nptl/
tst-stack2.c
       1  /* Copyright (C) 2003-2023 Free Software Foundation, Inc.
       2     This file is part of the GNU C Library.
       3  
       4     The GNU C Library is free software; you can redistribute it and/or
       5     modify it under the terms of the GNU Lesser General Public
       6     License as published by the Free Software Foundation; either
       7     version 2.1 of the License, or (at your option) any later version.
       8  
       9     The GNU C Library is distributed in the hope that it will be useful,
      10     but WITHOUT ANY WARRANTY; without even the implied warranty of
      11     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
      12     Lesser General Public License for more details.
      13  
      14     You should have received a copy of the GNU Lesser General Public
      15     License along with the GNU C Library; if not, see
      16     <https://www.gnu.org/licenses/>.  */
      17  
      18  /* Test whether it is possible to create a thread with PTHREAD_STACK_MIN
      19     stack size.  */
      20  
      21  #include <pthread.h>
      22  #include <stdlib.h>
      23  #include <stdio.h>
      24  #include <limits.h>
      25  
      26  static int seen;
      27  
      28  static void *
      29  tf (void *p)
      30  {
      31    ++seen;
      32    return NULL;
      33  }
      34  
      35  static int
      36  do_test (void)
      37  {
      38    pthread_attr_t attr;
      39    pthread_attr_init (&attr);
      40  
      41    int result = 0;
      42    int res = pthread_attr_setstacksize (&attr, PTHREAD_STACK_MIN);
      43    if (res)
      44      {
      45        printf ("pthread_attr_setstacksize failed %d\n", res);
      46        result = 1;
      47      }
      48  
      49    /* Create the thread.  */
      50    pthread_t th;
      51    res = pthread_create (&th, &attr, tf, NULL);
      52    if (res)
      53      {
      54        printf ("pthread_create failed %d\n", res);
      55        result = 1;
      56      }
      57    else
      58      {
      59        res = pthread_join (th, NULL);
      60        if (res)
      61  	{
      62  	  printf ("pthread_join failed %d\n", res);
      63  	  result = 1;
      64  	}
      65      }
      66  
      67    if (seen != 1)
      68      {
      69        printf ("seen %d != 1\n", seen);
      70        result = 1;
      71      }
      72  
      73    return result;
      74  }
      75  
      76  
      77  #define TEST_FUNCTION do_test ()
      78  #include "../test-skeleton.c"