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