1/*	$NetBSD: compat_linux.h,v 1.5 2010/12/26 09:02:52 nonaka 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
31struct file;
32struct inode;
33
34typedef long loff_t;
35
36struct file_operations {
37	struct module *owner;
38	void (*llseek) (void);
39	ssize_t (*read) (struct file *, char *, size_t, loff_t *);
40	ssize_t (*write) (struct file *, const char *, size_t, loff_t *);
41	void (*readdir) (void);
42	void (*poll) (void);
43	void (*ioctl) (void);
44	void (*mmap) (void);
45	int (*open) (struct inode *, struct file *);
46	void (*flush) (void);
47	int (*release) (struct inode *, struct file *);
48	void (*fsync) (void);
49	void (*fasync) (void);
50	void (*lock) (void);
51	void (*readv) (void);
52	void (*writev) (void);
53	void (*sendpage) (void);
54	void (*get_unmapped_area)(void);
55#ifdef MAGIC_ROM_PTR
56	void (*romptr) (void);
57#endif /* MAGIC_ROM_PTR */
58};
59
60extern	struct file *open_exec(const char *);
61extern	int kernel_read(struct file *, unsigned long, char *, unsigned long);
62extern	int memcmp(const void *, const void *, size_t);
63extern	int register_chrdev(unsigned int, const char *, struct file_operations *);
64extern	int unregister_chrdev(unsigned int, const char *);
65extern	void printk(const char *, ...) __printflike(1, 2);
66extern	void *memcpy(void *, const void *, size_t);
67
68/* procfs support */
69struct proc_dir_entry {
70        unsigned short low_ino;
71        unsigned short namelen;
72        const char *name;
73        unsigned short mode;
74        unsigned short nlink;
75        unsigned short uid;
76        unsigned short gid;
77        unsigned long size;
78        void *proc_iops; /* inode operations */
79        struct file_operations * proc_fops;
80        void *get_info;
81        struct module *owner;
82        struct proc_dir_entry *next, *parent, *subdir;
83        void *data;
84        void *read_proc;
85        void *write_proc;
86        volatile int count;
87        int deleted;
88        unsigned short rdev;
89};
90extern	struct proc_dir_entry proc_root;
91extern	struct proc_dir_entry *proc_mknod(const char*, unsigned short,
92    struct proc_dir_entry*, unsigned short);
93extern	void remove_proc_entry(const char *, struct proc_dir_entry *);
94