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