mirror of
https://git.proxmox.com/git/mirror_zfs.git
synced 2024-12-27 11:29:36 +03:00
Add ddi_copyin/ddi_copyout support for fake kernel originated ioctls.
This commit is contained in:
parent
2a734e9c26
commit
d3126abe75
@ -213,6 +213,9 @@ extern int ddi_strtol(const char *, char **, int, long *);
|
|||||||
extern int ddi_strtoull(const char *, char **, int, unsigned long long *);
|
extern int ddi_strtoull(const char *, char **, int, unsigned long long *);
|
||||||
extern int ddi_strtoll(const char *, char **, int, long long *);
|
extern int ddi_strtoll(const char *, char **, int, long long *);
|
||||||
|
|
||||||
|
extern int ddi_copyin(const void *from, void *to, size_t len, int flags);
|
||||||
|
extern int ddi_copyout(const void *from, void *to, size_t len, int flags);
|
||||||
|
|
||||||
static __inline__ void ddi_report_dev(dev_info_t *d) { }
|
static __inline__ void ddi_report_dev(dev_info_t *d) { }
|
||||||
static __inline__ void ddi_prop_remove_all(dev_info_t *dip) { }
|
static __inline__ void ddi_prop_remove_all(dev_info_t *dip) { }
|
||||||
|
|
||||||
|
@ -35,6 +35,7 @@
|
|||||||
#include <sys/proc.h>
|
#include <sys/proc.h>
|
||||||
#include <sys/kstat.h>
|
#include <sys/kstat.h>
|
||||||
#include <sys/utsname.h>
|
#include <sys/utsname.h>
|
||||||
|
#include <sys/file.h>
|
||||||
#include <linux/kmod.h>
|
#include <linux/kmod.h>
|
||||||
|
|
||||||
#ifdef DEBUG_SUBSYSTEM
|
#ifdef DEBUG_SUBSYSTEM
|
||||||
@ -226,6 +227,32 @@ EXPORT_SYMBOL(ddi_strtol);
|
|||||||
EXPORT_SYMBOL(ddi_strtoll);
|
EXPORT_SYMBOL(ddi_strtoll);
|
||||||
EXPORT_SYMBOL(ddi_strtoull);
|
EXPORT_SYMBOL(ddi_strtoull);
|
||||||
|
|
||||||
|
int
|
||||||
|
ddi_copyin(const void *from, void *to, size_t len, int flags)
|
||||||
|
{
|
||||||
|
/* Fake ioctl() issued by kernel, 'from' is a kernel address */
|
||||||
|
if (flags & FKIOCTL) {
|
||||||
|
memcpy(to, from, len);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
return copyin(from, to, len);
|
||||||
|
}
|
||||||
|
EXPORT_SYMBOL(ddi_copyin);
|
||||||
|
|
||||||
|
int
|
||||||
|
ddi_copyout(const void *from, void *to, size_t len, int flags)
|
||||||
|
{
|
||||||
|
/* Fake ioctl() issued by kernel, 'from' is a kernel address */
|
||||||
|
if (flags & FKIOCTL) {
|
||||||
|
memcpy(to, from, len);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
return copyout(from, to, len);
|
||||||
|
}
|
||||||
|
EXPORT_SYMBOL(ddi_copyout);
|
||||||
|
|
||||||
struct new_utsname *__utsname(void)
|
struct new_utsname *__utsname(void)
|
||||||
{
|
{
|
||||||
#ifdef HAVE_INIT_UTSNAME
|
#ifdef HAVE_INIT_UTSNAME
|
||||||
|
Loading…
Reference in New Issue
Block a user