summaryrefslogtreecommitdiffstats
path: root/sys/alpha/linux/linux.h
diff options
context:
space:
mode:
Diffstat (limited to 'sys/alpha/linux/linux.h')
-rw-r--r--sys/alpha/linux/linux.h258
1 files changed, 168 insertions, 90 deletions
diff --git a/sys/alpha/linux/linux.h b/sys/alpha/linux/linux.h
index af3f3ac..6ea22e6 100644
--- a/sys/alpha/linux/linux.h
+++ b/sys/alpha/linux/linux.h
@@ -38,19 +38,70 @@
*/
extern u_char linux_debug_map[];
#define ldebug(name) isclr(linux_debug_map, LINUX_SYS_linux_ ## name)
-#define ARGS(nm, fmt) "Linux-emul(%ld): "#nm"("fmt")\n", (long)p->p_pid
-#define LMSG(fmt) "Linux-emul(%ld): "fmt"\n", (long)p->p_pid
+#define ARGS(nm, fmt) "linux(%ld): "#nm"("fmt")\n", (long)p->p_pid
+#define LMSG(fmt) "linux(%ld): "fmt"\n", (long)p->p_pid
#ifdef MALLOC_DECLARE
MALLOC_DECLARE(M_LINUX);
#endif
+typedef int l_int;
+typedef int64_t l_long;
+typedef int64_t l_longlong;
+typedef short l_short;
+typedef unsigned int l_uint;
+typedef uint64_t l_ulong;
+typedef uint64_t l_ulonglong;
+typedef unsigned short l_ushort;
+
+typedef char *l_caddr_t;
+typedef l_long l_clock_t;
+typedef l_int l_daddr_t;
+typedef l_uint l_dev_t;
+typedef l_uint l_gid_t;
+typedef l_ushort l_gid16_t;
+typedef l_uint l_ino_t;
+typedef l_int l_key_t;
+typedef l_long l_loff_t;
+typedef l_uint l_mode_t;
+typedef l_long l_off_t;
+typedef l_int l_pid_t;
+typedef l_ulong l_size_t;
+typedef l_long l_suseconds_t;
+typedef l_long l_time_t;
+typedef l_uint l_uid_t;
+typedef l_ushort l_uid16_t;
+
+typedef struct {
+ l_int val[2];
+} l_fsid_t;
+
+typedef struct {
+ l_time_t tv_sec;
+ l_suseconds_t tv_usec;
+} l_timeval;
+
+#define l_fd_set fd_set
+
/*
* Miscellaneous
*/
#define LINUX_NAME_MAX 255
#define LINUX_MAX_UTSNAME 65
+#define LINUX_CTL_MAXNAME 10
+
+struct l___sysctl_args
+{
+ l_int *name;
+ l_int nlen;
+ void *oldval;
+ l_size_t *oldlenp;
+ void *newval;
+ l_size_t newlen;
+ l_ulong __spare[4];
+};
+
/* Scheduling policies */
#define LINUX_SCHED_OTHER 0
#define LINUX_SCHED_FIFO 1
@@ -77,25 +128,32 @@ MALLOC_DECLARE(M_LINUX);
#define LINUX_MAP_FIXED 0x0100
#define LINUX_MAP_GROWSDOWN 0x1000
-typedef char * linux_caddr_t;
-typedef long linux_clock_t;
-typedef u_short linux_dev_t;
-typedef u_short linux_gid_t;
-typedef u_long linux_ino_t;
-typedef int linux_key_t; /* XXX */
-typedef u_short linux_mode_t;
-typedef u_short linux_nlink_t;
-typedef long linux_off_t;
-typedef int linux_pid_t;
-/*typedef u_int linux_size_t; */
-typedef long linux_time_t;
-typedef u_short linux_uid_t;
+/*
+ * stat family of syscalls
+ */
+struct l_timespec {
+ l_ulong tv_sec;
+};
-typedef struct {
- int val[2];
-} linux_fsid_t;
+struct l_newstat {
+ l_uint st_dev;
+ l_uint st_ino;
+ l_uint st_mode;
+ l_uint st_nlink;
+ l_uint st_uid;
+ l_uint st_gid;
+ l_uint st_rdev;
+ l_long st_size;
+ struct l_timespec st_atimespec;
+ struct l_timespec st_mtimespec;
+ struct l_timespec st_ctimespec;
+ l_uint st_blksize;
+ l_int st_blocks;
+ l_uint st_flags;
+ l_uint st_gen;
+};
-struct linux_new_utsname {
+struct l_new_utsname {
char sysname[LINUX_MAX_UTSNAME];
char nodename[LINUX_MAX_UTSNAME];
char release[LINUX_MAX_UTSNAME];
@@ -139,10 +197,12 @@ struct linux_new_utsname {
#define LINUX_SIGIO 29
#define LINUX_SIGPOLL LINUX_SIGIO
#define LINUX_SIGPWR 30
-#define LINUX_SIGTBLSZ 31
-#define LINUX_SIGUNUSED LINUX_SIGTBLSZ
+#define LINUX_SIGUNUSED 31
-#define LINUX_NSIG 64
+#define LINUX_SIGTBLSZ 31
+#define LINUX_NSIG_WORDS 2
+#define LINUX_NBPW 32
+#define LINUX_NSIG (LINUX_NBPW * LINUX_NSIG_WORDS)
/* sigaction flags */
#define LINUX_SA_ONSTACK 0x00000001
@@ -169,58 +229,49 @@ struct linux_new_utsname {
#define LINUX_MINSIGSTKSZ 4096
-typedef void (*linux_handler_t)(int);
-typedef u_long linux_osigset_t;
+typedef void (*l_handler_t)(l_int);
+typedef l_ulong l_osigset_t;
typedef struct {
- u_int __bits[2];
-/* u_long __bits[1];*/
-} linux_sigset_t;
+ l_uint __bits[LINUX_NSIG_WORDS];
+} l_sigset_t;
typedef struct {
- linux_handler_t lsa_handler;
- linux_osigset_t lsa_mask;
- u_long lsa_flags;
+ l_handler_t lsa_handler;
+ l_osigset_t lsa_mask;
+ l_ulong lsa_flags;
void (*lsa_restorer)(void);
-} linux_osigaction_t;
+} l_osigaction_t;
typedef struct {
- linux_handler_t lsa_handler;
- u_long lsa_flags;
+ l_handler_t lsa_handler;
+ l_ulong lsa_flags;
void (*lsa_restorer)(void);
- linux_sigset_t lsa_mask;
-} linux_sigaction_t;
-
-#if 0
-typedef struct {
- void *ss_sp;
- int ss_flags;
- linux_size_t ss_size;
-} linux_stack_t;
-#endif
+ l_sigset_t lsa_mask;
+} l_sigaction_t;
/*
* The Linux sigcontext
*/
-struct linux_sigcontext {
- long sc_onstack;
- long sc_mask;
- long sc_pc;
- long sc_ps;
- long sc_regs[32];
- long sc_ownedfp;
- long sc_fpregs[32];
- u_long sc_fpcr;
- u_long sc_fp_control;
- u_long sc_reserved1, sc_reserved2;
- u_long sc_ssize;
- char * sc_sbase;
- u_long sc_traparg_a0;
- u_long sc_traparg_a1;
- u_long sc_traparg_a2;
- u_long sc_fp_trap_pc;
- u_long sc_fp_trigger_sum;
- u_long sc_fp_trigger_inst;
+struct l_sigcontext {
+ l_long sc_onstack;
+ l_long sc_mask;
+ l_long sc_pc;
+ l_long sc_ps;
+ l_long sc_regs[32];
+ l_long sc_ownedfp;
+ l_long sc_fpregs[32];
+ l_ulong sc_fpcr;
+ l_ulong sc_fp_control;
+ l_ulong sc_reserved1, sc_reserved2;
+ l_ulong sc_ssize;
+ char *sc_sbase;
+ l_ulong sc_traparg_a0;
+ l_ulong sc_traparg_a1;
+ l_ulong sc_traparg_a2;
+ l_ulong sc_fp_trap_pc;
+ l_ulong sc_fp_trigger_sum;
+ l_ulong sc_fp_trigger_inst;
};
/*
@@ -229,10 +280,10 @@ struct linux_sigcontext {
* This means that we need to pass the pointer to the handler too.
* It is appended to the frame to not interfere with the rest of it.
*/
-struct linux_sigframe {
- int sf_sig;
- struct linux_sigcontext sf_sc;
- linux_handler_t sf_handler;
+struct l_sigframe {
+ l_int sf_sig;
+ struct l_sigcontext sf_sc;
+ l_handler_t sf_handler;
};
/*
@@ -333,6 +384,14 @@ int linux_ioctl_unregister_handler(struct linux_ioctl_handler *h);
#define LINUX_SETVAL 16
#define LINUX_SETALL 17
+union l_semun {
+ l_int val;
+ struct l_semid_ds *buf;
+ l_ushort *array;
+ struct l_seminfo *__buf;
+ void *__pad;
+};
+
/*
* Socket defines
*/
@@ -393,41 +452,40 @@ int linux_ioctl_unregister_handler(struct linux_ioctl_handler *h);
#define LINUX_IP_ADD_MEMBERSHIP 35
#define LINUX_IP_DROP_MEMBERSHIP 36
-struct linux_sockaddr {
- u_short sa_family;
- char sa_data[14];
+struct l_sockaddr {
+ l_ushort sa_family;
+ char sa_data[14];
};
-struct linux_ifmap {
- u_long mem_start;
- u_long mem_end;
- u_short base_addr;
- u_char irq;
- u_char dma;
- u_char port;
+struct l_ifmap {
+ l_ulong mem_start;
+ l_ulong mem_end;
+ l_ushort base_addr;
+ u_char irq;
+ u_char dma;
+ u_char port;
};
#define LINUX_IFHWADDRLEN 6
#define LINUX_IFNAMSIZ 16
-struct linux_ifreq {
+struct l_ifreq {
union {
char ifrn_name[LINUX_IFNAMSIZ]; /* if name, e.g. "en0" */
} ifr_ifrn;
union {
- struct linux_sockaddr ifru_addr;
- struct linux_sockaddr ifru_dstaddr;
- struct linux_sockaddr ifru_broadaddr;
- struct linux_sockaddr ifru_netmask;
- struct linux_sockaddr ifru_hwaddr;
- short ifru_flags;
- int ifru_metric;
- int ifru_mtu;
- struct linux_ifmap ifru_map;
- char ifru_slave[LINUX_IFNAMSIZ]; /* Just fits the size */
- /* linux_caddr_t ifru_data; */
- caddr_t ifru_data;
+ struct l_sockaddr ifru_addr;
+ struct l_sockaddr ifru_dstaddr;
+ struct l_sockaddr ifru_broadaddr;
+ struct l_sockaddr ifru_netmask;
+ struct l_sockaddr ifru_hwaddr;
+ l_short ifru_flags;
+ l_int ifru_metric;
+ l_int ifru_mtu;
+ struct l_ifmap ifru_map;
+ char ifru_slave[LINUX_IFNAMSIZ];
+ l_caddr_t ifru_data;
} ifr_ifru;
};
@@ -437,7 +495,6 @@ struct linux_ifreq {
extern char linux_sigcode[];
extern int linux_szsigcode;
-/*extern const char linux_emul_path[];*/
extern struct sysent linux_sysent[LINUX_SYS_MAXSYSCALL];
extern struct sysentvec linux_sysvec;
@@ -447,4 +504,25 @@ extern struct sysentvec elf_linux_sysvec;
struct image_params;
struct trapframe;
+/*
+ * poll()
+ */
+#define LINUX_POLLIN 0x0001
+#define LINUX_POLLPRI 0x0002
+#define LINUX_POLLOUT 0x0004
+#define LINUX_POLLERR 0x0008
+#define LINUX_POLLHUP 0x0010
+#define LINUX_POLLNVAL 0x0020
+#define LINUX_POLLRDNORM 0x0040
+#define LINUX_POLLRDBAND 0x0080
+#define LINUX_POLLWRNORM 0x0100
+#define LINUX_POLLWRBAND 0x0200
+#define LINUX_POLLMSG 0x0400
+
+struct l_pollfd {
+ l_int fd;
+ l_short events;
+ l_short revents;
+};
+
#endif /* !_ALPHA_LINUX_LINUX_H_ */
OpenPOWER on IntegriCloud