1/* Compatibility header for old-style Unix parameters and limits.
2 Copyright (C) 1995-2022 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library 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 GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _SYS_PARAM_H
20#define _SYS_PARAM_H 1
21
22#define __need_NULL
23#include <stddef.h>
24
25#include <sys/types.h>
26#include <limits.h>
27#include <endian.h> /* Define BYTE_ORDER et al. */
28#include <signal.h> /* Define NSIG. */
29
30/* This file defines some things in system-specific ways. */
31#include <bits/param.h>
32
33
34/* BSD names for some <limits.h> values. */
35
36#define NBBY CHAR_BIT
37
38#if !defined NGROUPS && defined NGROUPS_MAX
39# define NGROUPS NGROUPS_MAX
40#endif
41#if !defined MAXSYMLINKS && defined SYMLOOP_MAX
42# define MAXSYMLINKS SYMLOOP_MAX
43#endif
44#if !defined CANBSIZ && defined MAX_CANON
45# define CANBSIZ MAX_CANON
46#endif
47#if !defined MAXPATHLEN && defined PATH_MAX
48# define MAXPATHLEN PATH_MAX
49#endif
50#if !defined NOFILE && defined OPEN_MAX
51# define NOFILE OPEN_MAX
52#endif
53#if !defined MAXHOSTNAMELEN && defined HOST_NAME_MAX
54# define MAXHOSTNAMELEN HOST_NAME_MAX
55#endif
56#ifndef NCARGS
57# ifdef ARG_MAX
58# define NCARGS ARG_MAX
59# else
60/* ARG_MAX is unlimited, but we define NCARGS for BSD programs that want to
61 compare against some fixed limit. */
62# define NCARGS INT_MAX
63# endif
64#endif
65
66
67/* Magical constants. */
68#ifndef NOGROUP
69# define NOGROUP 65535 /* Marker for empty group set member. */
70#endif
71#ifndef NODEV
72# define NODEV ((dev_t) -1) /* Non-existent device. */
73#endif
74
75
76/* Unit of `st_blocks'. */
77#ifndef DEV_BSIZE
78# define DEV_BSIZE 512
79#endif
80
81
82/* Bit map related macros. */
83#define setbit(a,i) ((a)[(i)/NBBY] |= 1<<((i)%NBBY))
84#define clrbit(a,i) ((a)[(i)/NBBY] &= ~(1<<((i)%NBBY)))
85#define isset(a,i) ((a)[(i)/NBBY] & (1<<((i)%NBBY)))
86#define isclr(a,i) (((a)[(i)/NBBY] & (1<<((i)%NBBY))) == 0)
87
88/* Macros for counting and rounding. */
89#ifndef howmany
90# define howmany(x, y) (((x) + ((y) - 1)) / (y))
91#endif
92#ifdef __GNUC__
93# define roundup(x, y) (__builtin_constant_p (y) && powerof2 (y) \
94 ? (((x) + (y) - 1) & ~((y) - 1)) \
95 : ((((x) + ((y) - 1)) / (y)) * (y)))
96#else
97# define roundup(x, y) ((((x) + ((y) - 1)) / (y)) * (y))
98#endif
99#define powerof2(x) ((((x) - 1) & (x)) == 0)
100
101/* Macros for min/max. */
102#define MIN(a,b) (((a)<(b))?(a):(b))
103#define MAX(a,b) (((a)>(b))?(a):(b))
104
105
106#endif /* sys/param.h */
107