1 /* Test for nonblocking read and write. 2 3 Copyright (C) 2011-2021 Free Software Foundation, Inc. 4 5 This program is free software: you can redistribute it and/or modify 6 it under the terms of the GNU General Public License as published by 7 the Free Software Foundation; either version 3 of the License, or 8 (at your option) any later version. 9 10 This program is distributed in the hope that it will be useful, 11 but WITHOUT ANY WARRANTY; without even the implied warranty of 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 GNU General Public License for more details. 14 15 You should have received a copy of the GNU General Public License 16 along with this program. If not, see <https://www.gnu.org/licenses/>. */ 17 18 /* A data block ought to be larger than the size of the in-kernel buffer. 19 Working values of PIPE_DATA_BLOCK_SIZE, depending on kernel: 20 21 Platform PIPE_DATA_BLOCK_SIZE 22 23 Linux >= 63489 24 Linux/SPARC >= 126977 25 Linux/IA-64, Linux/MIPS >= 253953 26 Linux/PPC64 >= 1048576 27 FreeBSD, OpenBSD, Mac OS X >= 65537 28 AIX >= 32769 29 HP-UX >= 8193 30 IRIX >= 10241 31 OSF/1 >= 262145 32 Solaris <= 7 >= 10241 33 Solaris >= 8 >= 20481 34 z/OS >= 131073 35 Cygwin >= 65537 36 native Windows >= 4097 (depends on the _pipe argument) 37 */ 38 #if defined __MVS__ || defined __osf__ || (defined __linux__ && (defined __ia64__ || defined __mips__)) 39 # define PIPE_DATA_BLOCK_SIZE 270000 40 #elif defined __linux__ && defined __sparc__ 41 # define PIPE_DATA_BLOCK_SIZE 140000 42 #elif defined __linux__ && defined __powerpc__ 43 # define PIPE_DATA_BLOCK_SIZE 1100000 44 #elif defined _WIN32 && !defined __CYGWIN__ 45 # define PIPE_DATA_BLOCK_SIZE 10000 46 #else 47 # define PIPE_DATA_BLOCK_SIZE 70000 48 #endif