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