fdsetsize.h
Go to the documentation of this file.
1/*
2 * Copyright (C) 1996-2023 The Squid Software Foundation and contributors
3 *
4 * Squid software is distributed under GPLv2+ license and includes
5 * contributions from numerous individuals and organizations.
6 * Please see the COPYING and CONTRIBUTORS files for details.
7 */
8
9#ifndef SQUID_FDSETSIZE_H
10#define SQUID_FDSETSIZE_H
11
12/****************************************************************************
13 *--------------------------------------------------------------------------*
14 * DO *NOT* MAKE ANY CHANGES below here unless you know what you're doing...*
15 *--------------------------------------------------------------------------*
16 ****************************************************************************/
17
18/*
19 * On some systems, FD_SETSIZE is set to something lower than the
20 * actual number of files which can be opened. IRIX is one case,
21 * NetBSD is another. So here we increase FD_SETSIZE to our
22 * configure-discovered maximum *before* any system includes.
23 */
24#define CHANGE_FD_SETSIZE 1
25
26/*
27 * Cannot increase FD_SETSIZE on Linux, but we can increase __FD_SETSIZE
28 * with glibc 2.2 (or later? remains to be seen). We do this by including
29 * bits/types.h which defines __FD_SETSIZE first, then we redefine
30 * __FD_SETSIZE. Ofcourse a user program may NEVER include bits/whatever.h
31 * directly, so this is a dirty hack!
32 */
33#if _SQUID_LINUX_ || _SQUID_KFREEBSD_
34#undef CHANGE_FD_SETSIZE
35#define CHANGE_FD_SETSIZE 0
36#include <features.h>
37#if (__GLIBC__ > 2) || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 2)
38#if SQUID_MAXFD > DEFAULT_FD_SETSIZE
39#include <bits/types.h>
40#if HAVE_LINUX_POSIX_TYPES_H
41#include <linux/posix_types.h>
42#endif
43#undef __FD_SETSIZE
44#define __FD_SETSIZE SQUID_MAXFD
45#endif
46#endif
47#endif
48
49/*
50 * Cannot increase FD_SETSIZE on FreeBSD before 2.2.0, causes select(2)
51 * to return EINVAL.
52 * --Marian Durkovic <marian@svf.stuba.sk>
53 * --Peter Wemm <peter@spinner.DIALix.COM>
54 */
55#if _SQUID_FREEBSD_
56#include <osreldate.h>
57#if __FreeBSD_version < 220000
58#undef CHANGE_FD_SETSIZE
59#define CHANGE_FD_SETSIZE 0
60#endif
61#endif
62
63/*
64 * Trying to redefine CHANGE_FD_SETSIZE causes a slew of warnings
65 * on Mac OS X Server.
66 */
67#if _SQUID_APPLE_
68#undef CHANGE_FD_SETSIZE
69#define CHANGE_FD_SETSIZE 0
70#endif
71
72/* Increase FD_SETSIZE if SQUID_MAXFD is bigger */
73#if CHANGE_FD_SETSIZE && SQUID_MAXFD > DEFAULT_FD_SETSIZE
74#define FD_SETSIZE SQUID_MAXFD
75#endif
76
77/*
78 * Trap unintentional use of fd_set. Must not be used outside the
79 * select code as it only supports FD_SETSIZE number of filedescriptors
80 * and Squid may be running with a lot more..
81 * But only for code linked into Squid, not the helpers.. (unlinkd, pinger)
82 */
83#ifdef SQUID_FDSET_NOUSE
84# ifndef SQUID_HELPER
85# define fd_set ERROR_FD_SET_USED
86# endif
87#endif
88
89#endif /* SQUID_FDSETSIZE_H */
90

 

Introduction

Documentation

Support

Miscellaneous

Web Site Translations

Mirrors