xref: /netbsd-src/sys/arch/zaurus/stand/zbsdmod/compat_linux.h (revision 404fbe5fb94ca1e054339640cabb2801ce52dd30)
1 /*	$NetBSD: compat_linux.h,v 1.4 2007/10/17 19:58:41 garbled Exp $	*/
2 /*	$OpenBSD: compat_linux.h,v 1.5 2006/01/15 17:58:27 deraadt Exp $	*/
3 
4 /*
5  * Copyright (c) 2005 Uwe Stuehler <uwe@bsdx.de>
6  *
7  * Permission to use, copy, modify, and distribute this software for any
8  * purpose with or without fee is hereby granted, provided that the above
9  * copyright notice and this permission notice appear in all copies.
10  *
11  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
12  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
13  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
14  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
15  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
16  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
17  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
18  */
19 
20 /*
21  * Declare the things that we need from the Linux headers.
22  */
23 
24 #define	IS_ERR(ptr)	((unsigned long)(ptr) > (unsigned long)-1000L)
25 
26 #define MKDEV(ma,mi)	((ma)<<8 | (mi))
27 
28 #define S_IFBLK		0060000
29 #define S_IFCHR		0020000
30 
31 struct file;
32 struct inode;
33 
34 #define	ELFSIZE	32
35 #include <sys/exec_elf.h>
36 #include <sys/types.h>
37 #include <sys/errno.h>
38 
39 typedef long loff_t;
40 
41 struct file_operations {
42 	struct module *owner;
43 	void (*llseek) (void);
44 	ssize_t (*read) (struct file *, char *, size_t, loff_t *);
45 	ssize_t (*write) (struct file *, const char *, size_t, loff_t *);
46 	void (*readdir) (void);
47 	void (*poll) (void);
48 	void (*ioctl) (void);
49 	void (*mmap) (void);
50 	int (*open) (struct inode *, struct file *);
51 	void (*flush) (void);
52 	int (*release) (struct inode *, struct file *);
53 	void (*fsync) (void);
54 	void (*fasync) (void);
55 	void (*lock) (void);
56 	void (*readv) (void);
57 	void (*writev) (void);
58 	void (*sendpage) (void);
59 	void (*get_unmapped_area)(void);
60 #ifdef MAGIC_ROM_PTR
61 	void (*romptr) (void);
62 #endif /* MAGIC_ROM_PTR */
63 };
64 
65 extern	struct file *open_exec(const char *);
66 extern	int kernel_read(struct file *, unsigned long, char *, unsigned long);
67 extern	int memcmp(const void *, const void *, size_t);
68 extern	int register_chrdev(unsigned int, const char *, struct file_operations *);
69 extern	int unregister_chrdev(unsigned int, const char *);
70 extern	void printk(const char *, ...);
71 extern	void *memcpy(void *, const void *, size_t);
72 
73 /* Linux LKM support */
74 static const char __module_kernel_version[] __attribute__((section(".modinfo"))) =
75 "kernel_version=" UTS_RELEASE;
76 static const char __module_using_checksums[] __attribute__((section(".modinfo"))) =
77 "using_checksums=1";
78 
79 /* procfs support */
80 struct proc_dir_entry {
81         unsigned short low_ino;
82         unsigned short namelen;
83         const char *name;
84         unsigned short mode;
85         unsigned short nlink;
86         unsigned short uid;
87         unsigned short gid;
88         unsigned long size;
89         void *proc_iops; /* inode operations */
90         struct file_operations * proc_fops;
91         void *get_info;
92         struct module *owner;
93         struct proc_dir_entry *next, *parent, *subdir;
94         void *data;
95         void *read_proc;
96         void *write_proc;
97         volatile int count;
98         int deleted;
99         unsigned short rdev;
100 };
101 extern	struct proc_dir_entry proc_root;
102 extern	struct proc_dir_entry *proc_mknod(const char*, unsigned short,
103     struct proc_dir_entry*, unsigned short);
104 extern	void remove_proc_entry(const char *, struct proc_dir_entry *);
105