1    	/* Compatibility header for old-style Unix parameters and limits.
2    	   Copyright (C) 1995-2015 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   	   <http://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   	#ifndef NCARGS
54   	# ifdef ARG_MAX
55   	#  define NCARGS	ARG_MAX
56   	# else
57   	/* ARG_MAX is unlimited, but we define NCARGS for BSD programs that want to
58   	   compare against some fixed limit.  */
59   	# define NCARGS		INT_MAX
60   	# endif
61   	#endif
62   	
63   	
64   	/* Magical constants.  */
65   	#ifndef NOGROUP
66   	# define NOGROUP	65535     /* Marker for empty group set member.  */
67   	#endif
68   	#ifndef NODEV
69   	# define NODEV		((dev_t) -1)    /* Non-existent device.  */
70   	#endif
71   	
72   	
73   	/* Unit of `st_blocks'.  */
74   	#ifndef DEV_BSIZE
75   	# define DEV_BSIZE	512
76   	#endif
77   	
78   	
79   	/* Bit map related macros.  */
80   	#define setbit(a,i)     ((a)[(i)/NBBY] |= 1<<((i)%NBBY))
81   	#define clrbit(a,i)     ((a)[(i)/NBBY] &= ~(1<<((i)%NBBY)))
82   	#define isset(a,i)      ((a)[(i)/NBBY] & (1<<((i)%NBBY)))
83   	#define isclr(a,i)      (((a)[(i)/NBBY] & (1<<((i)%NBBY))) == 0)
84   	
85   	/* Macros for counting and rounding.  */
86   	#ifndef howmany
87   	# define howmany(x, y)  (((x) + ((y) - 1)) / (y))
88   	#endif
89   	#ifdef __GNUC__
90   	# define roundup(x, y)  (__builtin_constant_p (y) && powerof2 (y)             \
91   	                         ? (((x) + (y) - 1) & ~((y) - 1))                     \
92   	                         : ((((x) + ((y) - 1)) / (y)) * (y)))
93   	#else
94   	# define roundup(x, y)  ((((x) + ((y) - 1)) / (y)) * (y))
95   	#endif
96   	#define powerof2(x)     ((((x) - 1) & (x)) == 0)
97   	
98   	/* Macros for min/max.  */
99   	#define MIN(a,b) (((a)<(b))?(a):(b))
100  	#define MAX(a,b) (((a)>(b))?(a):(b))
101  	
102  	
103  	#endif  /* sys/param.h */
104