Deleted Added
full compact
pipe_overcommit2_test.c (140558) pipe_overcommit2_test.c (290914)
1/*-
2 * Copyright (C) 2005 Michael J. Silbersack <silby@freebsd.org>
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 * 1. Redistributions of source code must retain the above copyright

--- 12 unchanged lines hidden (view full) ---

21 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
22 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
23 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
24 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
25 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
26 * DAMAGE.
27 */
28
1/*-
2 * Copyright (C) 2005 Michael J. Silbersack <silby@freebsd.org>
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 * 1. Redistributions of source code must retain the above copyright

--- 12 unchanged lines hidden (view full) ---

21 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
22 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
23 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
24 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
25 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
26 * DAMAGE.
27 */
28
29#include <sys/param.h>
30#include <err.h>
31#include <errno.h>
32#include <fcntl.h>
29#include <stdio.h>
30#include <stdlib.h>
33#include <stdio.h>
34#include <stdlib.h>
31#include <fcntl.h>
35#include <unistd.h>
32
33/*
36
37/*
34 * $FreeBSD: head/tools/regression/pipe/pipe-overcommit2.c 140558 2005-01-21 06:46:18Z silby $
38 * $FreeBSD: head/tests/sys/kern/pipe/pipe_overcommit2_test.c 290914 2015-11-16 05:38:40Z ngie $
35 * This program tests how sys_pipe.c handles the case where there
36 * is ample memory to allocate a pipe, but the file descriptor
37 * limit for that user has been exceeded.
38 */
39
39 * This program tests how sys_pipe.c handles the case where there
40 * is ample memory to allocate a pipe, but the file descriptor
41 * limit for that user has been exceeded.
42 */
43
40int main (int argc, void *argv[])
41
44int
45main(void)
42{
46{
43 int i, returnval, lastfd;
44 int pipes[10000];
47 char template[] = "pipe.XXXXXXXXXX";
48 int lastfd, pipes[10000], returnval;
49 unsigned int i;
45
50
46 for (i = 0; i < 100000; i++) {
47 returnval = open(argv[0], O_RDONLY);
48 if (returnval < 1)
51 lastfd = -1;
52
53 if (mkstemp(template) == -1)
54 err(1, "mkstemp failed");
55
56 for (i = 0; i < nitems(pipes); i++) {
57 returnval = open(template, O_RDONLY);
58 if (returnval == -1 && (errno == ENFILE || errno == EMFILE))
49 break; /* All descriptors exhausted. */
50 else
51 lastfd = returnval;
52 }
53
54 /* First falloc failure case in sys_pipe.c:pipe() */
55 for (i = 0; i < 1000; i++) {
56 returnval = pipe(&pipes[i]);

--- 4 unchanged lines hidden (view full) ---

61 * case will occur.
62 */
63 close(lastfd);
64
65 for (i = 0; i < 1000; i++) {
66 returnval = pipe(&pipes[i]);
67 }
68 printf("PASS\n");
59 break; /* All descriptors exhausted. */
60 else
61 lastfd = returnval;
62 }
63
64 /* First falloc failure case in sys_pipe.c:pipe() */
65 for (i = 0; i < 1000; i++) {
66 returnval = pipe(&pipes[i]);

--- 4 unchanged lines hidden (view full) ---

71 * case will occur.
72 */
73 close(lastfd);
74
75 for (i = 0; i < 1000; i++) {
76 returnval = pipe(&pipes[i]);
77 }
78 printf("PASS\n");
79
80 unlink(template);
81
82 exit(0);
69}
83}