freebsd-nq/sys/alpha/osf1/osf1.h

278 lines
8.2 KiB
C

/*
* Copyright (c) 1998-1999 Andrew Gallatin
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer
* in this position and unchanged.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. The name of the author may not be used to endorse or promote products
* derived from this software withough specific prior written permission
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
* IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* $FreeBSD$
*/
extern struct sysent osf1_sysent[];
extern int bsd_to_osf1_sig[];
extern int bsd_to_osf1_errno[];
/* osf/1 ioctls */
#define OSF1_IOCPARM_MASK 0x1fff /* parameter length, at most 13 bits */
#define OSF1_IOCPARM_LEN(x) (((x) >> 16) & OSF1_IOCPARM_MASK)
#define OSF1_IOCGROUP(x) (((x) >> 8) & 0xff)
#define OSF1_IOCPARM_MAX NBPG /* max size of ioctl */
#define OSF1_IOC_VOID 0x20000000 /* no parameters */
#define OSF1_IOC_OUT 0x40000000 /* copy out parameters */
#define OSF1_IOC_IN 0x80000000 /* copy in parameters */
#define OSF1_IOC_INOUT (OSF1_IOC_IN|OSF1_IOC_OUT)
#define OSF1_IOC_DIRMASK 0xe0000000 /* mask for IN/OUT/VOID */
#define OSF1_IOCCMD(x) ((x) & 0xff)
/* for get sysinfo */
#define OSF_GET_MAX_UPROCS 2
#define OSF_GET_IEEE_FP_CONTROL 45
#define OSF_GET_PROC_TYPE 60
#define OSF_GET_HWRPB 101
/* for set sysinfo */
#define OSF_SET_IEEE_FP_CONTROL 14
/* for rlimit */
#define OSF1_RLIMIT_LASTCOMMON 5 /* last one that's common */
#define OSF1_RLIMIT_NOFILE 6 /* OSF1's RLIMIT_NOFILE */
#define OSF1_RLIMIT_NLIMITS 8 /* Number of OSF1 rlimits */
/* mmap flags */
#define OSF1_MAP_SHARED 0x001
#define OSF1_MAP_PRIVATE 0x002
#define OSF1_MAP_ANONYMOUS 0x010
#define OSF1_MAP_FILE 0x000
#define OSF1_MAP_TYPE 0x0f0
#define OSF1_MAP_FIXED 0x100
#define OSF1_MAP_HASSEMAPHORE 0x200
#define OSF1_MAP_INHERIT 0x400
#define OSF1_MAP_UNALIGNED 0x800
/* msync flags */
#define OSF1_MS_ASYNC 1
#define OSF1_MS_SYNC 2
#define OSF1_MS_INVALIDATE 4
#define OSF1_F_DUPFD 0
#define OSF1_F_GETFD 1
#define OSF1_F_SETFD 2
#define OSF1_F_GETFL 3
#define OSF1_F_SETFL 4
#define _OSF1_PC_CHOWN_RESTRICTED 10
#define _OSF1_PC_LINK_MAX 11
#define _OSF1_PC_MAX_CANON 12
#define _OSF1_PC_MAX_INPUT 13
#define _OSF1_PC_NAME_MAX 14
#define _OSF1_PC_NO_TRUNC 15
#define _OSF1_PC_PATH_MAX 16
#define _OSF1_PC_PIPE_BUF 17
#define _OSF1_PC_VDISABLE 18
#define OSF1_FNONBLOCK 0x00004 /* XXX OSF1_O_NONBLOCK */
#define OSF1_FAPPEND 0x00008 /* XXX OSF1_O_APPEND */
#define OSF1_FDEFER 0x00020
#define OSF1_FASYNC 0x00040
#define OSF1_FCREAT 0x00200
#define OSF1_FTRUNC 0x00400
#define OSF1_FEXCL 0x00800
#define OSF1_FSYNC 0x04000 /* XXX OSF1_O_SYNC */
#define OSF1_FNDELAY 0x08000
#define OSF1_RB_ASKNAME 0x001
#define OSF1_RB_SINGLE 0x002
#define OSF1_RB_NOSYNC 0x004
#define OSF1_RB_HALT 0x008
#define OSF1_RB_INITNAME 0x010
#define OSF1_RB_DFLTROOT 0x020
#define OSF1_RB_ALTBOOT 0x040
#define OSF1_RB_UNIPROC 0x080
#define OSF1_RB_ALLFLAGS 0x0ff /* all of the above */
/*
* osf/1 uses ints in its struct timeval, this means that
* any syscalls which means that any system calls using
* timevals need to be intercepted.
*/
struct osf1_timeval {
int tv_sec; /* seconds */
int tv_usec; /* microseconds */
};
struct osf1_itimerval {
struct osf1_timeval it_interval; /* timer interval */
struct osf1_timeval it_value; /* current value */
};
#define TV_CP(src,dst) {dst.tv_usec = src.tv_usec; dst.tv_sec = src.tv_sec;}
#define timersub(tvp, uvp, vvp) \
do { \
(vvp)->tv_sec = (tvp)->tv_sec - (uvp)->tv_sec; \
(vvp)->tv_usec = (tvp)->tv_usec - (uvp)->tv_usec; \
if ((vvp)->tv_usec < 0) { \
(vvp)->tv_sec--; \
(vvp)->tv_usec += 1000000; \
} \
} while (0)
struct osf1_rusage {
struct osf1_timeval ru_utime; /* user time used */
struct osf1_timeval ru_stime; /* system time used */
long ru_maxrss; /* max resident set size */
#define ru_first ru_ixrss
long ru_ixrss; /* integral shared memory size */
long ru_idrss; /* integral unshared data " */
long ru_isrss; /* integral unshared stack " */
long ru_minflt; /* page reclaims */
long ru_majflt; /* page faults */
long ru_nswap; /* swaps */
long ru_inblock; /* block input operations */
long ru_oublock; /* block output operations */
long ru_msgsnd; /* messages sent */
long ru_msgrcv; /* messages received */
long ru_nsignals; /* signals received */
long ru_nvcsw; /* voluntary context switches */
long ru_nivcsw; /* involuntary " */
#define ru_last ru_nivcsw
};
#define OSF1_USC_GET 1
#define OSF1_USC_SET 2
#define OSF1_USW_NULLP 0x100
/* File system type numbers. */
#define OSF1_MOUNT_NONE 0
#define OSF1_MOUNT_UFS 1
#define OSF1_MOUNT_NFS 2
#define OSF1_MOUNT_MFS 3
#define OSF1_MOUNT_PC 4
#define OSF1_MOUNT_S5FS 5
#define OSF1_MOUNT_CDFS 6
#define OSF1_MOUNT_DFS 7
#define OSF1_MOUNT_EFS 8
#define OSF1_MOUNT_PROCFS 9
#define OSF1_MOUNT_MSFS 10
#define OSF1_MOUNT_FFM 11
#define OSF1_MOUNT_FDFS 12
#define OSF1_MOUNT_ADDON 13
#define OSF1_MOUNT_MAXTYPE OSF1_MOUNT_ADDON
#define OSF1_MNT_WAIT 0x1
#define OSF1_MNT_NOWAIT 0x2
#define OSF1_MNT_FORCE 0x1
#define OSF1_MNT_NOFORCE 0x2
/* acceptable flags for various calls */
#define OSF1_GETFSSTAT_FLAGS (OSF1_MNT_WAIT|OSF1_MNT_NOWAIT)
#define OSF1_MOUNT_FLAGS 0xffffffff /* XXX */
#define OSF1_UNMOUNT_FLAGS (OSF1_MNT_FORCE|OSF1_MNT_NOFORCE)
struct osf1_statfs {
int16_t f_type; /* 0 */
int16_t f_flags; /* 2 */
int32_t f_fsize; /* 4 */
int32_t f_bsize; /* 8 */
int32_t f_blocks; /* 12 */
int32_t f_bfree; /* 16 */
int32_t f_bavail; /* 20 */
int32_t f_files; /* 24 */
int32_t f_ffree; /* 28 */
int64_t f_fsid; /* 32 */
int32_t f_spare[9]; /* 40 (36 bytes) */
char f_mntonname[90]; /* 76 (90 bytes) */
char f_mntfromname[90]; /* 166 (90 bytes) */
char f_xxx[80]; /* 256 (80 bytes) XXX */
};
/* Arguments to mount() for various FS types. */
#ifdef notyet /* XXX */
struct osf1_ufs_args {
char *fspec;
int32_t exflags;
u_int32_t exroot;
};
struct osf1_cdfs_args {
char *fspec;
int32_t exflags;
u_int32_t exroot;
int32_t flags;
};
#endif
struct osf1_mfs_args {
char *name;
caddr_t base;
u_int size;
};
struct osf1_nfs_args {
struct sockaddr_in *addr;
void *fh;
int32_t flags;
int32_t wsize;
int32_t rsize;
int32_t timeo;
int32_t retrans;
char *hostname;
int32_t acregmin;
int32_t acregmax;
int32_t acdirmin;
int32_t acdirmax;
char *netname;
void *pathconf;
};
#define OSF1_NFSMNT_SOFT 0x00001
#define OSF1_NFSMNT_WSIZE 0x00002
#define OSF1_NFSMNT_RSIZE 0x00004
#define OSF1_NFSMNT_TIMEO 0x00008
#define OSF1_NFSMNT_RETRANS 0x00010
#define OSF1_NFSMNT_HOSTNAME 0x00020
#define OSF1_NFSMNT_INT 0x00040
#define OSF1_NFSMNT_NOCONN 0x00080
#define OSF1_NFSMNT_NOAC 0x00100 /* ??? */
#define OSF1_NFSMNT_ACREGMIN 0x00200 /* ??? */
#define OSF1_NFSMNT_ACREGMAX 0x00400 /* ??? */
#define OSF1_NFSMNT_ACDIRMIN 0x00800 /* ??? */
#define OSF1_NFSMNT_ACDIRMAX 0x01000 /* ??? */
#define OSF1_NFSMNT_NOCTO 0x02000 /* ??? */
#define OSF1_NFSMNT_POSIX 0x04000 /* ??? */
#define OSF1_NFSMNT_AUTO 0x08000 /* ??? */
#define OSF1_NFSMNT_FLAGS \
(OSF1_NFSMNT_SOFT|OSF1_NFSMNT_WSIZE|OSF1_NFSMNT_RSIZE| \
OSF1_NFSMNT_TIMEO|OSF1_NFSMNT_RETRANS|OSF1_NFSMNT_HOSTNAME| \
OSF1_NFSMNT_INT|OSF1_NFSMNT_NOCONN)
#define memset(x,y,z) bzero((x),(z))