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