Skip to content

Commit e9bf2cd

Browse files
authored
Add files via upload
1 parent 5130363 commit e9bf2cd

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

96 files changed

+7625
-0
lines changed
Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
/* Copyright (C) 2012-2021 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+
#include <pthread.h>
19+
#include <stdio.h>
20+
#include <stdlib.h>
21+
#include <string.h>
22+
#include <unistd.h>
23+
#include "tst-cancel-self-cleanup.c"
24+
25+
26+
static int
27+
do_test (void)
28+
{
29+
int ret = 0;
30+
volatile int should_fail = 1;
31+
32+
pthread_cleanup_push (cleanup, (void *) &should_fail);
33+
34+
if ((ret = pthread_setcancelstate (PTHREAD_CANCEL_DISABLE, NULL)) != 0)
35+
{
36+
printf ("setcancelstate(disable) failed: %s\n", strerror (ret));
37+
exit (1);
38+
}
39+
40+
if ((ret = pthread_cancel (pthread_self ())) != 0)
41+
{
42+
printf ("cancel failed: %s\n", strerror (ret));
43+
exit (1);
44+
}
45+
46+
usleep (100);
47+
should_fail = 0;
48+
49+
if ((ret = pthread_setcancelstate (PTHREAD_CANCEL_ENABLE, NULL)) != 0)
50+
{
51+
printf ("setcancelstate(enable) failed: %s\n", strerror (ret));
52+
exit (1);
53+
}
54+
55+
/* The write syscall within this printf should give us our cancellation
56+
point. */
57+
printf ("Could not cancel self.\n");
58+
pthread_cleanup_pop (0);
59+
60+
return 1;
61+
}
62+
63+
64+
#define TEST_FUNCTION do_test ()
65+
#include "../test-skeleton.c"
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
/* Copyright (C) 2012-2021 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+
#include <pthread.h>
19+
#include <stdio.h>
20+
#include <stdlib.h>
21+
#include <string.h>
22+
#include <unistd.h>
23+
#include "tst-cancel-self-cleanup.c"
24+
25+
26+
static int
27+
do_test (void)
28+
{
29+
int ret = 0, should_fail = 0;
30+
31+
pthread_cleanup_push (cleanup, &should_fail);
32+
33+
if ((ret = pthread_setcanceltype (PTHREAD_CANCEL_ASYNCHRONOUS, NULL)) != 0)
34+
{
35+
printf ("setcanceltype failed: %s\n", strerror (ret));
36+
exit (1);
37+
}
38+
39+
if ((ret = pthread_cancel (pthread_self ())) != 0)
40+
{
41+
printf ("cancel failed: %s\n", strerror (ret));
42+
exit (1);
43+
}
44+
45+
/* Wait to be canceled. Don't give any cancellation points to play with. */
46+
while (1);
47+
pthread_cleanup_pop (0);
48+
49+
return 1;
50+
}
51+
52+
#define TEST_FUNCTION do_test ()
53+
#include "../test-skeleton.c"
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
/* Copyright (C) 2012-2021 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+
static void
19+
cleanup (void *cleanup_should_fail)
20+
{
21+
printf ("Main thread got cancelled and is being cleaned up now\n");
22+
exit (*(int *)cleanup_should_fail);
23+
}
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
/* Copyright (C) 2012-2021 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+
#include <pthread.h>
19+
#include <stdio.h>
20+
#include <stdlib.h>
21+
#include <string.h>
22+
#include <unistd.h>
23+
#include "tst-cancel-self-cleanup.c"
24+
25+
26+
static int
27+
do_test (void)
28+
{
29+
int ret = 0, should_fail = 0;
30+
31+
pthread_cleanup_push (cleanup, &should_fail);
32+
if ((ret = pthread_cancel (pthread_self ())) != 0)
33+
{
34+
printf ("cancel failed: %s\n", strerror (ret));
35+
exit (1);
36+
}
37+
38+
pthread_testcancel ();
39+
40+
printf ("Could not cancel self.\n");
41+
pthread_cleanup_pop (0);
42+
43+
return 1;
44+
}
45+
46+
47+
#define TEST_FUNCTION do_test ()
48+
#include "../test-skeleton.c"
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
/* Copyright (C) 2012-2021 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+
#include <pthread.h>
19+
#include <stdio.h>
20+
#include <stdlib.h>
21+
#include <string.h>
22+
#include <unistd.h>
23+
#include "tst-cancel-self-cleanup.c"
24+
25+
26+
static int
27+
do_test (void)
28+
{
29+
int ret = 0, should_fail = 0;
30+
31+
pthread_cleanup_push (cleanup, &should_fail);
32+
if ((ret = pthread_cancel (pthread_self ())) != 0)
33+
{
34+
printf ("cancel failed: %s\n", strerror (ret));
35+
exit (1);
36+
}
37+
38+
/* The write syscall within this printf should give us our cancellation
39+
point. */
40+
printf ("Could not cancel self.\n");
41+
pthread_cleanup_pop (0);
42+
43+
return 1;
44+
}
45+
46+
47+
#define TEST_FUNCTION do_test ()
48+
#include "../test-skeleton.c"
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
#include "tst-cancel21.c"

0 commit comments

Comments
 (0)