Home | History | Annotate | Line # | Download | only in zbsdmod
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