1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
|
/*
* KERNEL.H -- Machine dependent definitions for the 4.1BSD UNIX IRAF Kernel.
* The UNIX include file <stdio.h> must also be loaded by any program which
* references "kernel.h". The companion include file "language.h" defines
* the (generally) machine independent kernel definitions.
*/
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <string.h>
#ifndef NOKNET
#define NOKNET /* no networking desired in kernel */
#endif
/* Tunable kernel parameters. All buffer sizes are in units of bytes.
* Buffer lengths are in units of whatever the buffer contains.
*/
#define SZ_DISKBLOCK 512 /* used in zsttbf if dev block invar. */
#define FILE_MODEBITS 0666 /* protection bits for new files */
#define MAXOFILES 256 /* maximum open files (see <stdio.h>) */
#define MAXPROCS 20 /* maximum subprocesses per process */
#define SZ_DEFWORKSET 67108864 /* default working set size, bytes */
#define SZ_MAXWORKSET 268435456 /* maximum working set (max physmem) */
#define CLKFREQ 60 /* clock frequency (see zgtime.c) */
#define TX_OPTBUFSIZE SZ_LINE /* optimum buffer size for text file */
#define TX_MAXBUFSIZE 0 /* maximum buffer size for text file */
#define BF_OPTBUFSIZE 65536 /* optimum buffer size for binary file */
#define BF_MAXBUFSIZE 0 /* maximum buffer size for binary file */
#define SF_OPTBUFSIZE 65536 /* optimum buffer size for static file */
#define SF_MAXBUFSIZE 0 /* maximum buffer size for static file */
#define KS_OPTBUFSIZE 65536 /* optimal buffer size for KS i/o */
#define KS_MAXBUFSIZE 0 /* maximum buffer size for KS i/o */
#define PR_OPTBUFSIZE 65536 /* optimal buffer size for IPC i/o */
#define PR_MAXBUFSIZE 4096 /* maximum buffer size for IPC i/o */
#define ND_OPTBUFSIZE 65536 /* optimal buffer size for ND i/o */
#define ND_MAXBUFSIZE 0 /* maximum buffer size for ND i/o */
#define PL_OPTBUFSIZE 1024 /* optimum buffer size for plotter */
#define PL_MAXBUFSIZE 0 /* maximum buffer size for plotter */
#define LP_OPTBUFSIZE 1024 /* optimum buffer size for line printer */
#define LP_MAXBUFSIZE 0 /* maximum buffer size for line printer */
/* ZLOCVA style pointer to address conversions. These macros are used to
* convert host pointer addresses (in bytes) to/from iraf pointer values
* in units of XCHAR.
*/
#define ADDR_TO_LOC(addr) (((XINT)((XCHAR *)(addr)))>>(sizeof(XCHAR)-1))
#define LOC_TO_ADDR(loc,type) ((type *)((XCHAR *)((loc)<<(sizeof(XCHAR)-1))))
/* Kernel file descriptor for accessing UNIX files. A static array ZFD of
* descriptor structures is used, indexed by UNIX file descriptor numbers
* numbered beginning at 0, the standard input.
*/
struct fiodes {
FILE *fp; /* file pointer if text file */
long fpos; /* file offset, bytes */
long filesize; /* file size at open time */
int nbytes; /* last nbytes r|w */
int io_flags; /* fcntl flags */
short flags; /* access mode flags */
char *port; /* tty port if tty */
};
extern struct fiodes zfd[]; /* array of descriptors */
#define KF_CHARMODE 01 /* char input mode, text files */
#define KF_NOSEEK 02 /* seeks are illegal on device */
#define KF_NOSTTY 04 /* stty,gtty calls illegal */
#define KF_NDELAY 010 /* nonblocking reads */
#define KF_DIRECTIO 020 /* use direct (unbuffered) i/o */
#define TTYNAME "/dev/tty" /* user terminal (for ZFIOTY) */
#define U_STDIN "unix-stdin" /* special filename for stdin */
#define U_STDOUT "unix-stdout" /* special filename for stdout */
#define U_STDERR "unix-stderr" /* special filename for stderr */
#define LEN_RAWCMD 5 /* nchars in rawcmd string */
#define RAWOFF "\033-rAw" /* turn raw mode off */
#define RAWON "\033+rAw" /* turn raw mode on */
#define LEN_SETREDRAW 6 /* nchars in setredraw string */
#define SETREDRAW "\033=rDw" /* set/enable screenredraw code */
#ifdef AUX
#define SIGFUNC sigfunc_t
#else
typedef void (*SIGFUNC)();
#endif
typedef void (*PFV)();
#ifdef MACH64
typedef long (*PFI)();
#else
typedef int (*PFI)();
#endif
#ifdef SOLARIS
#define bzero(a,n) memset(a,0,n)
#define bcopy(a,b,n) memmove(b,a,n)
#endif
extern char *irafpath();
#define D_kernel
|