mirror of
https://git.proxmox.com/git/mirror_zfs.git
synced 2024-12-26 03:09:34 +03:00
Lots of build fixes. This is turning out to be a very good
idea since it forcefully codifing the ABI. Since the shim layer is no longer linked at build time in to the test suite we can;'t cut any corners and get away with it. Everything is working now with the exception of sorting setting Module.symvers properly. This may take a little Makefile reorg. git-svn-id: https://outreach.scidac.gov/svn/spl/trunk@5 7e1ea52c-4ff2-0310-8f11-9dd32ca42a1c
This commit is contained in:
parent
3d4ea0ced6
commit
f1b59d2620
@ -1,10 +1,11 @@
|
|||||||
#ifndef _LINUX_CALLB_H
|
#ifndef _SOLARIS_CALLB_H
|
||||||
#define _LINUX_CALLB_H
|
#define _SOLARIS_CALLB_H
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#include <linux/module.h>
|
||||||
#include <linux-mutex.h>
|
#include <linux-mutex.h>
|
||||||
|
|
||||||
#define DEBUG_CALLB
|
#define DEBUG_CALLB
|
||||||
@ -41,5 +42,5 @@ typedef struct callb_cpr {
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#endif /* _LINUX_CALLB_H */
|
#endif /* _SOLARIS_CALLB_H */
|
||||||
|
|
||||||
|
@ -1,10 +1,11 @@
|
|||||||
#ifndef _LINUX_CONDVAR_H
|
#ifndef _SOLARIS_CONDVAR_H
|
||||||
#define _LINUX_CONDVAR_H
|
#define _SOLARIS_CONDVAR_H
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#include <linux/module.h>
|
||||||
#include <linux/wait.h>
|
#include <linux/wait.h>
|
||||||
|
|
||||||
/* The kcondvar_t struct is protected by mutex taken externally before
|
/* The kcondvar_t struct is protected by mutex taken externally before
|
||||||
@ -198,4 +199,4 @@ cv_broadcast(kcondvar_t *cvp)
|
|||||||
if (atomic_read(&cvp->cv_waiters) > 0)
|
if (atomic_read(&cvp->cv_waiters) > 0)
|
||||||
wake_up_all(&cvp->cv_event);
|
wake_up_all(&cvp->cv_event);
|
||||||
}
|
}
|
||||||
#endif /* _LINUX_CONDVAR_H */
|
#endif /* _SOLARIS_CONDVAR_H */
|
||||||
|
@ -1,10 +1,11 @@
|
|||||||
#ifndef _LINUX_CRED_H
|
#ifndef _SOLARIS_CRED_H
|
||||||
#define _LINUX_CRED_H
|
#define _SOLARIS_CRED_H
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#include <linux/module.h>
|
||||||
#include <linux/types.h>
|
#include <linux/types.h>
|
||||||
|
|
||||||
/* XXX - Portions commented out because we really just want to have the type
|
/* XXX - Portions commented out because we really just want to have the type
|
||||||
@ -36,5 +37,5 @@ typedef struct cred {
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#endif /* _LINUX_CRED_H */
|
#endif /* _SOLARIS_CRED_H */
|
||||||
|
|
||||||
|
@ -1,10 +1,12 @@
|
|||||||
#ifndef _LINUX_GENERIC_H
|
#ifndef _SOLARIS_GENERIC_H
|
||||||
#define _LINUX_GENERIC_H
|
#define _SOLARIS_GENERIC_H
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#include <linux/module.h>
|
||||||
|
|
||||||
/* Missing defines.
|
/* Missing defines.
|
||||||
*/
|
*/
|
||||||
#define INT32_MAX INT_MAX
|
#define INT32_MAX INT_MAX
|
||||||
@ -14,7 +16,7 @@ extern "C" {
|
|||||||
#define MAXNAMELEN 256
|
#define MAXNAMELEN 256
|
||||||
#define MAXPATHLEN PATH_MAX
|
#define MAXPATHLEN PATH_MAX
|
||||||
#define __va_list va_list
|
#define __va_list va_list
|
||||||
#define _KERNEL 1
|
#define _KERNEL __KERNEL__
|
||||||
#define max_ncpus 64
|
#define max_ncpus 64
|
||||||
|
|
||||||
/* 0..MAX_PRIO-1: Process priority
|
/* 0..MAX_PRIO-1: Process priority
|
||||||
@ -63,10 +65,10 @@ extern "C" {
|
|||||||
|
|
||||||
/* Missing globals
|
/* Missing globals
|
||||||
*/
|
*/
|
||||||
static int p0 = 0;
|
extern int p0;
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#endif /* _LINUX_GENERIC_H */
|
#endif /* _SOLARIS_GENERIC_H */
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
#ifndef _LINUX_KMEM_H
|
#ifndef _SOLARIS_KMEM_H
|
||||||
#define _LINUX_KMEM_H
|
#define _SOLARIS_KMEM_H
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
@ -8,6 +8,7 @@ extern "C" {
|
|||||||
#undef DEBUG_KMEM
|
#undef DEBUG_KMEM
|
||||||
#undef DEBUG_KMEM_UNIMPLEMENTED
|
#undef DEBUG_KMEM_UNIMPLEMENTED
|
||||||
|
|
||||||
|
#include <linux/module.h>
|
||||||
#include <linux/slab.h>
|
#include <linux/slab.h>
|
||||||
#include <linux/mm.h>
|
#include <linux/mm.h>
|
||||||
#include <linux/spinlock.h>
|
#include <linux/spinlock.h>
|
||||||
@ -147,15 +148,18 @@ typedef int (*kmem_constructor_t)(void *, void *, int);
|
|||||||
typedef void (*kmem_destructor_t)(void *, void *);
|
typedef void (*kmem_destructor_t)(void *, void *);
|
||||||
typedef void (*kmem_reclaim_t)(void *);
|
typedef void (*kmem_reclaim_t)(void *);
|
||||||
|
|
||||||
kmem_cache_t *
|
extern kmem_cache_t *
|
||||||
__kmem_cache_create(char *name, size_t size, size_t align,
|
__kmem_cache_create(char *name, size_t size, size_t align,
|
||||||
int (*constructor)(void *, void *, int),
|
kmem_constructor_t constructor,
|
||||||
void (*destructor)(void *, void *),
|
kmem_destructor_t destructor,
|
||||||
void (*reclaim)(void *),
|
kmem_reclaim_t reclaim,
|
||||||
void *priv, void *vmp, int flags);
|
void *priv, void *vmp, int flags);
|
||||||
|
|
||||||
void
|
void
|
||||||
__kmem_cache_destroy(kmem_cache_t *cache);
|
extern __kmem_cache_destroy(kmem_cache_t *cache);
|
||||||
|
|
||||||
|
void
|
||||||
|
extern __kmem_reap(void);
|
||||||
|
|
||||||
#define kmem_cache_create(name,size,align,ctor,dtor,rclm,priv,vmp,flags) \
|
#define kmem_cache_create(name,size,align,ctor,dtor,rclm,priv,vmp,flags) \
|
||||||
__kmem_cache_create(name,size,align,ctor,dtor,rclm,priv,vmp,flags)
|
__kmem_cache_create(name,size,align,ctor,dtor,rclm,priv,vmp,flags)
|
||||||
@ -165,9 +169,8 @@ __kmem_cache_destroy(kmem_cache_t *cache);
|
|||||||
#define kmem_cache_reap_now(cache) kmem_cache_shrink(cache)
|
#define kmem_cache_reap_now(cache) kmem_cache_shrink(cache)
|
||||||
#define kmem_reap() __kmem_reap()
|
#define kmem_reap() __kmem_reap()
|
||||||
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#endif /* _LINUX_KMEM_H */
|
#endif /* _SOLARIS_KMEM_H */
|
||||||
|
@ -1,10 +1,11 @@
|
|||||||
#ifndef _LINUX_KSTAT_H
|
#ifndef _SOLARIS_KSTAT_H
|
||||||
#define _LINUX_KSTAT_H
|
#define _SOLARIS_KSTAT_H
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#include <linux/module.h>
|
||||||
#include <linux-types.h>
|
#include <linux-types.h>
|
||||||
|
|
||||||
/* XXX - The minimum functionality here is stubbed out but nothing works. */
|
/* XXX - The minimum functionality here is stubbed out but nothing works. */
|
||||||
@ -132,5 +133,5 @@ kstat_delete(kstat_t *ksp)
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#endif /* _LINUX_KSTAT_H */
|
#endif /* _SOLARIS_KSTAT_H */
|
||||||
|
|
||||||
|
@ -1,10 +1,12 @@
|
|||||||
#ifndef _LINUX_MUTEX_H
|
#ifndef _SOLARIS_MUTEX_H
|
||||||
#define _LINUX_MUTEX_H
|
#define _SOLARIS_MUTEX_H
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#include <linux/module.h>
|
||||||
|
|
||||||
/* See the "Big Theory Statement" in solaris mutex.c.
|
/* See the "Big Theory Statement" in solaris mutex.c.
|
||||||
*
|
*
|
||||||
* Spin mutexes apparently aren't needed by zfs so we assert
|
* Spin mutexes apparently aren't needed by zfs so we assert
|
||||||
@ -115,4 +117,4 @@ mutex_owner(kmutex_t *mp)
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#endif /* _LINUX_MUTEX_H */
|
#endif /* _SOLARIS_MUTEX_H */
|
||||||
|
@ -1,10 +1,11 @@
|
|||||||
#ifndef _LINUX_RANDOM_H
|
#ifndef _SOLARIS_RANDOM_H
|
||||||
#define _LINUX_RANDOM_H
|
#define _SOLARIS_RANDOM_H
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#include <linux/module.h>
|
||||||
#include <linux/random.h>
|
#include <linux/random.h>
|
||||||
|
|
||||||
/* FIXME:
|
/* FIXME:
|
||||||
@ -34,4 +35,4 @@ random_get_pseudo_bytes(uint8_t *ptr, size_t len)
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#endif /* _LINUX_RANDOM_H */
|
#endif /* _SOLARIS_RANDOM_H */
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
#ifndef _LINUX_RWLOCK_H
|
#ifndef _SOLARIS_RWLOCK_H
|
||||||
#define _LINUX_RWLOCK_H
|
#define _SOLARIS_RWLOCK_H
|
||||||
|
|
||||||
|
#include <linux/module.h>
|
||||||
#include <linux/slab.h>
|
#include <linux/slab.h>
|
||||||
#include <linux/rwsem.h>
|
#include <linux/rwsem.h>
|
||||||
#include <asm/current.h>
|
#include <asm/current.h>
|
||||||
@ -220,4 +221,4 @@ rw_owner(krwlock_t *rwlp)
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#endif /* _LINUX_RWLOCK_H */
|
#endif /* _SOLARIS_RWLOCK_H */
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
#ifndef _LINUX_TASKQ_H
|
#ifndef _SOLARIS_TASKQ_H
|
||||||
#define _LINUX_TASKQ_H
|
#define _SOLARIS_TASKQ_H
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
@ -19,6 +19,7 @@ extern "C" {
|
|||||||
* forces us to implement dynamic workqueues. Which is all very doable
|
* forces us to implement dynamic workqueues. Which is all very doable
|
||||||
* with a little effort.
|
* with a little effort.
|
||||||
*/
|
*/
|
||||||
|
#include <linux/module.h>
|
||||||
#include <linux/workqueue.h>
|
#include <linux/workqueue.h>
|
||||||
#include <linux/gfp.h>
|
#include <linux/gfp.h>
|
||||||
#include <linux/slab.h>
|
#include <linux/slab.h>
|
||||||
@ -83,4 +84,4 @@ extern taskq_t *__taskq_create(const char *, int, pri_t, int, int, uint_t);
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#endif /* _LINUX_TASKQ_H */
|
#endif /* _SOLARIS_TASKQ_H */
|
||||||
|
@ -1,10 +1,11 @@
|
|||||||
#ifndef _LINUX_THREAD_H
|
#ifndef _SOLARIS_THREAD_H
|
||||||
#define _LINUX_THREAD_H
|
#define _SOLARIS_THREAD_H
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#include <linux/module.h>
|
||||||
#include <linux/mm.h>
|
#include <linux/mm.h>
|
||||||
#include <linux/spinlock.h>
|
#include <linux/spinlock.h>
|
||||||
#include <linux-types.h>
|
#include <linux-types.h>
|
||||||
@ -35,14 +36,15 @@ typedef struct proc_s {
|
|||||||
int foo;
|
int foo;
|
||||||
} proc_t;
|
} proc_t;
|
||||||
|
|
||||||
kthread_t * __thread_create(caddr_t stk, size_t stksize,
|
extern kthread_t *__thread_create(caddr_t stk, size_t stksize,
|
||||||
void (*proc)(void *), void *args,
|
void (*proc)(void *), void *args,
|
||||||
size_t len, proc_t *pp, int state,
|
size_t len, proc_t *pp, int state,
|
||||||
pri_t pri);
|
pri_t pri);
|
||||||
|
extern void __thread_exit(void);
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#endif /* _LINUX_THREAD_H */
|
#endif /* _SOLARIS_THREAD_H */
|
||||||
|
|
||||||
|
@ -1,7 +1,5 @@
|
|||||||
#ifndef _TIME_H
|
#ifndef _SOLARIS_TIME_H
|
||||||
#define _TIME_H
|
#define _SOLARIS_TIME_H
|
||||||
|
|
||||||
#pragma ident "%Z%%M% %I% %E% SMI" /* SVr4.0 1.16 */
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Structure returned by gettimeofday(2) system call,
|
* Structure returned by gettimeofday(2) system call,
|
||||||
@ -12,6 +10,7 @@
|
|||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#include <linux/module.h>
|
||||||
#include <linux/time.h>
|
#include <linux/time.h>
|
||||||
#include <linux-types.h>
|
#include <linux-types.h>
|
||||||
|
|
||||||
@ -61,4 +60,4 @@ gethrestime_sec(void)
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#endif /* _TIME_H */
|
#endif /* _SOLARIS_TIME_H */
|
||||||
|
@ -1,10 +1,11 @@
|
|||||||
#ifndef _LINUX_TIMER_H
|
#ifndef _SOLARIS_TIMER_H
|
||||||
#define _LINUX_TIMER_H
|
#define _SOLARIS_TIMER_H
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#include <linux/module.h>
|
||||||
#include <linux/sched.h>
|
#include <linux/sched.h>
|
||||||
#include <linux/timer.h>
|
#include <linux/timer.h>
|
||||||
|
|
||||||
@ -17,5 +18,5 @@ extern "C" {
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#endif /* _LINUX_TIMER_H */
|
#endif /* _SOLARIS_TIMER_H */
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
#ifndef _LINUX_TYPES_H
|
#ifndef _SOLARIS_TYPES_H
|
||||||
#define _LINUX_TYPES_H
|
#define _SOLARIS_TYPES_H
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
@ -24,4 +24,4 @@ typedef short pri_t;
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#endif /* _LINUX_TYPES_H */
|
#endif /* _SOLARIS_TYPES_H */
|
||||||
|
@ -1,11 +1,40 @@
|
|||||||
#ifndef _SPLAT_CTL_H
|
#ifndef _SPLAT_CTL_H
|
||||||
#define _SPLAY_CTL_H
|
#define _SPLAT_CTL_H
|
||||||
|
|
||||||
#ifdef _KERNEL
|
#ifdef __KERNEL__
|
||||||
|
#include <linux/kernel.h>
|
||||||
|
#include <linux/module.h>
|
||||||
|
#include <linux/string.h>
|
||||||
|
#include <linux/errno.h>
|
||||||
|
#include <linux/slab.h>
|
||||||
|
#include <linux/sched.h>
|
||||||
|
#include <linux/elf.h>
|
||||||
|
#include <linux/limits.h>
|
||||||
|
#include <linux/version.h>
|
||||||
|
#include <linux/vmalloc.h>
|
||||||
|
#include <linux/module.h>
|
||||||
|
#include <linux/device.h>
|
||||||
|
#include <linux/list.h>
|
||||||
#include <asm/ioctls.h>
|
#include <asm/ioctls.h>
|
||||||
#include <asm/uaccess.h>
|
#include <asm/uaccess.h>
|
||||||
#include <linux/list.h>
|
#include <stdarg.h>
|
||||||
#endif /* _KERNEL */
|
|
||||||
|
#include <linux-generic.h>
|
||||||
|
#include <linux-types.h>
|
||||||
|
#include <linux-kmem.h>
|
||||||
|
#include <linux-mutex.h>
|
||||||
|
#include <linux-condvar.h>
|
||||||
|
#include <linux-random.h>
|
||||||
|
#include <linux-thread.h>
|
||||||
|
#include <linux-taskq.h>
|
||||||
|
#include <linux-rwlock.h>
|
||||||
|
#include <linux-timer.h>
|
||||||
|
#include <linux-time.h>
|
||||||
|
#include <linux-cred.h>
|
||||||
|
#include <linux-kstat.h>
|
||||||
|
#include <linux-callb.h>
|
||||||
|
|
||||||
|
#endif /* __KERNEL__ */
|
||||||
|
|
||||||
#define KZT_VERSION "v1.0"
|
#define KZT_VERSION "v1.0"
|
||||||
#define KZT_VERSION_SIZE 64
|
#define KZT_VERSION_SIZE 64
|
||||||
@ -70,7 +99,7 @@ typedef struct kzt_cmd {
|
|||||||
#define KZT_TEST_UNKNOWN 0xFFF
|
#define KZT_TEST_UNKNOWN 0xFFF
|
||||||
|
|
||||||
|
|
||||||
#ifdef _KERNEL
|
#ifdef __KERNEL__
|
||||||
#define KZT_SUBSYSTEM_INIT(type) \
|
#define KZT_SUBSYSTEM_INIT(type) \
|
||||||
({ kzt_subsystem_t *_sub_; \
|
({ kzt_subsystem_t *_sub_; \
|
||||||
\
|
\
|
||||||
@ -206,6 +235,24 @@ kzt_subsystem_t * kzt_taskq_init(void);
|
|||||||
kzt_subsystem_t * kzt_thread_init(void);
|
kzt_subsystem_t * kzt_thread_init(void);
|
||||||
kzt_subsystem_t * kzt_time_init(void);
|
kzt_subsystem_t * kzt_time_init(void);
|
||||||
|
|
||||||
#endif /* _KERNEL */
|
void kzt_condvar_fini(kzt_subsystem_t *);
|
||||||
|
void kzt_kmem_fini(kzt_subsystem_t *);
|
||||||
|
void kzt_mutex_fini(kzt_subsystem_t *);
|
||||||
|
void kzt_krng_fini(kzt_subsystem_t *);
|
||||||
|
void kzt_rwlock_fini(kzt_subsystem_t *);
|
||||||
|
void kzt_taskq_fini(kzt_subsystem_t *);
|
||||||
|
void kzt_thread_fini(kzt_subsystem_t *);
|
||||||
|
void kzt_time_fini(kzt_subsystem_t *);
|
||||||
|
|
||||||
#endif /* _SPLAY_CTL_H */
|
int kzt_condvar_id(void);
|
||||||
|
int kzt_kmem_id(void);
|
||||||
|
int kzt_mutex_id(void);
|
||||||
|
int kzt_krng_id(void);
|
||||||
|
int kzt_rwlock_id(void);
|
||||||
|
int kzt_taskq_id(void);
|
||||||
|
int kzt_thread_id(void);
|
||||||
|
int kzt_time_id(void);
|
||||||
|
|
||||||
|
#endif /* __KERNEL__ */
|
||||||
|
|
||||||
|
#endif /* _SPLAT_CTL_H */
|
||||||
|
@ -2,7 +2,8 @@
|
|||||||
|
|
||||||
MODULES := spl
|
MODULES := spl
|
||||||
DISTFILES = Makefile.in \
|
DISTFILES = Makefile.in \
|
||||||
linux-kmem.c linux-rwlock.c linux-taskq.c linux-thread.c
|
linux-kmem.c linux-rwlock.c linux-taskq.c \
|
||||||
|
linux-thread.c linux-generic.c
|
||||||
CPPFLAGS += @KERNELCPPFLAGS@
|
CPPFLAGS += @KERNELCPPFLAGS@
|
||||||
|
|
||||||
# Solaris porting layer module
|
# Solaris porting layer module
|
||||||
|
8
src/spl/linux-generic.c
Normal file
8
src/spl/linux-generic.c
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
#include "linux-generic.h"
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Generic support
|
||||||
|
*/
|
||||||
|
|
||||||
|
int p0 = 0;
|
||||||
|
EXPORT_SYMBOL(p0);
|
@ -172,9 +172,9 @@ kmem_cache_generic_shrinker(int nr_to_scan, unsigned int gfp_mask)
|
|||||||
|
|
||||||
kmem_cache_t *
|
kmem_cache_t *
|
||||||
__kmem_cache_create(char *name, size_t size, size_t align,
|
__kmem_cache_create(char *name, size_t size, size_t align,
|
||||||
int (*constructor)(void *, void *, int),
|
kmem_constructor_t constructor,
|
||||||
void (*destructor)(void *, void *),
|
kmem_destructor_t destructor,
|
||||||
void (*reclaim)(void *),
|
kmem_reclaim_t reclaim,
|
||||||
void *priv, void *vmp, int flags)
|
void *priv, void *vmp, int flags)
|
||||||
{
|
{
|
||||||
kmem_cache_t *cache;
|
kmem_cache_t *cache;
|
||||||
@ -216,6 +216,7 @@ __kmem_cache_create(char *name, size_t size, size_t align,
|
|||||||
|
|
||||||
return cache;
|
return cache;
|
||||||
}
|
}
|
||||||
|
EXPORT_SYMBOL(__kmem_cache_create);
|
||||||
|
|
||||||
/* Return codes discarded because Solaris implementation has void return */
|
/* Return codes discarded because Solaris implementation has void return */
|
||||||
void
|
void
|
||||||
@ -239,6 +240,7 @@ __kmem_cache_destroy(kmem_cache_t *cache)
|
|||||||
|
|
||||||
spin_unlock(&kmem_cache_cb_lock);
|
spin_unlock(&kmem_cache_cb_lock);
|
||||||
}
|
}
|
||||||
|
EXPORT_SYMBOL(__kmem_cache_destroy);
|
||||||
|
|
||||||
void
|
void
|
||||||
__kmem_reap(void) {
|
__kmem_reap(void) {
|
||||||
@ -246,4 +248,4 @@ __kmem_reap(void) {
|
|||||||
* shrinkers to run we just run the ones registered for this shim */
|
* shrinkers to run we just run the ones registered for this shim */
|
||||||
kmem_cache_generic_shrinker(KMC_REAP_CHUNK, GFP_KERNEL);
|
kmem_cache_generic_shrinker(KMC_REAP_CHUNK, GFP_KERNEL);
|
||||||
}
|
}
|
||||||
|
EXPORT_SYMBOL(__kmem_reap);
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
#include <sys/linux-rwlock.h>
|
#include <linux-rwlock.h>
|
||||||
|
|
||||||
int
|
int
|
||||||
rw_lock_held(krwlock_t *rwlp)
|
rw_lock_held(krwlock_t *rwlp)
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
#include <sys/linux-taskq.h>
|
#include <linux-taskq.h>
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Task queue interface
|
* Task queue interface
|
||||||
@ -58,6 +58,7 @@ __taskq_dispatch(taskq_t *tq, task_func_t func, void *priv, uint_t flags)
|
|||||||
|
|
||||||
return (taskqid_t)wq;
|
return (taskqid_t)wq;
|
||||||
}
|
}
|
||||||
|
EXPORT_SYMBOL(__taskq_dispatch);
|
||||||
|
|
||||||
/* XXX - Most args ignored until we decide if it's worth the effort
|
/* XXX - Most args ignored until we decide if it's worth the effort
|
||||||
* to emulate the solaris notion of dynamic thread pools. For
|
* to emulate the solaris notion of dynamic thread pools. For
|
||||||
@ -76,3 +77,4 @@ __taskq_create(const char *name, int nthreads, pri_t pri,
|
|||||||
|
|
||||||
return create_singlethread_workqueue(name);
|
return create_singlethread_workqueue(name);
|
||||||
}
|
}
|
||||||
|
EXPORT_SYMBOL(__taskq_create);
|
||||||
|
@ -15,7 +15,7 @@ typedef struct thread_priv_s {
|
|||||||
wait_queue_head_t tp_waitq; /* Syncronization wait queue */
|
wait_queue_head_t tp_waitq; /* Syncronization wait queue */
|
||||||
} thread_priv_t;
|
} thread_priv_t;
|
||||||
|
|
||||||
int
|
static int
|
||||||
thread_generic_wrapper(void *arg)
|
thread_generic_wrapper(void *arg)
|
||||||
{
|
{
|
||||||
thread_priv_t *tp = (thread_priv_t *)arg;
|
thread_priv_t *tp = (thread_priv_t *)arg;
|
||||||
@ -53,6 +53,7 @@ __thread_exit(void)
|
|||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
EXPORT_SYMBOL(__thread_exit);
|
||||||
|
|
||||||
/* thread_create() may block forever if it cannot create a thread or
|
/* thread_create() may block forever if it cannot create a thread or
|
||||||
* allocate memory. This is preferable to returning a NULL which Solaris
|
* allocate memory. This is preferable to returning a NULL which Solaris
|
||||||
@ -63,7 +64,6 @@ __thread_create(caddr_t stk, size_t stksize, void (*proc)(void *),
|
|||||||
{
|
{
|
||||||
thread_priv_t tp;
|
thread_priv_t tp;
|
||||||
DEFINE_WAIT(wait);
|
DEFINE_WAIT(wait);
|
||||||
kthread_t *task;
|
|
||||||
long pid;
|
long pid;
|
||||||
|
|
||||||
/* Option pp is simply ignored */
|
/* Option pp is simply ignored */
|
||||||
@ -111,3 +111,4 @@ __thread_create(caddr_t stk, size_t stksize, void (*proc)(void *),
|
|||||||
|
|
||||||
return (kthread_t *)tp.tp_task;
|
return (kthread_t *)tp.tp_task;
|
||||||
}
|
}
|
||||||
|
EXPORT_SYMBOL(__thread_create);
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
#include <sys/zfs_context.h>
|
#include <splat-ctl.h>
|
||||||
#include <sys/splat-ctl.h>
|
|
||||||
|
|
||||||
#define KZT_SUBSYSTEM_CONDVAR 0x0500
|
#define KZT_SUBSYSTEM_CONDVAR 0x0500
|
||||||
#define KZT_CONDVAR_NAME "condvar"
|
#define KZT_CONDVAR_NAME "condvar"
|
||||||
|
@ -19,13 +19,7 @@
|
|||||||
* Author: Brian Behlendorf
|
* Author: Brian Behlendorf
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <sys/zfs_context.h>
|
#include <splat-ctl.h>
|
||||||
#include <sys/splat-ctl.h>
|
|
||||||
|
|
||||||
#include <linux/version.h>
|
|
||||||
#include <linux/vmalloc.h>
|
|
||||||
#include <linux/module.h>
|
|
||||||
#include <linux/device.h>
|
|
||||||
|
|
||||||
#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,18)
|
#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,18)
|
||||||
#include <linux/devfs_fs_kernel.h>
|
#include <linux/devfs_fs_kernel.h>
|
||||||
@ -233,7 +227,7 @@ kzt_test_count(kzt_cfg_t *kcfg, unsigned long arg)
|
|||||||
{
|
{
|
||||||
kzt_subsystem_t *sub;
|
kzt_subsystem_t *sub;
|
||||||
kzt_test_t *test;
|
kzt_test_t *test;
|
||||||
int rc, i = 0;
|
int i = 0;
|
||||||
|
|
||||||
/* Subsystem ID passed as arg1 */
|
/* Subsystem ID passed as arg1 */
|
||||||
sub = kzt_subsystem_find(kcfg->cfg_arg1);
|
sub = kzt_subsystem_find(kcfg->cfg_arg1);
|
||||||
@ -259,7 +253,7 @@ kzt_test_list(kzt_cfg_t *kcfg, unsigned long arg)
|
|||||||
kzt_subsystem_t *sub;
|
kzt_subsystem_t *sub;
|
||||||
kzt_test_t *test;
|
kzt_test_t *test;
|
||||||
kzt_cfg_t *tmp;
|
kzt_cfg_t *tmp;
|
||||||
int size, rc, i = 0;
|
int size, i = 0;
|
||||||
|
|
||||||
/* Subsystem ID passed as arg1 */
|
/* Subsystem ID passed as arg1 */
|
||||||
sub = kzt_subsystem_find(kcfg->cfg_arg1);
|
sub = kzt_subsystem_find(kcfg->cfg_arg1);
|
||||||
@ -309,7 +303,6 @@ static int
|
|||||||
kzt_validate(struct file *file, kzt_subsystem_t *sub, int cmd, void *arg)
|
kzt_validate(struct file *file, kzt_subsystem_t *sub, int cmd, void *arg)
|
||||||
{
|
{
|
||||||
kzt_test_t *test;
|
kzt_test_t *test;
|
||||||
int rc = 0;
|
|
||||||
|
|
||||||
spin_lock(&(sub->test_lock));
|
spin_lock(&(sub->test_lock));
|
||||||
list_for_each_entry(test, &(sub->test_list), test_list) {
|
list_for_each_entry(test, &(sub->test_list), test_list) {
|
||||||
@ -432,7 +425,8 @@ static int
|
|||||||
kzt_ioctl(struct inode *inode, struct file *file,
|
kzt_ioctl(struct inode *inode, struct file *file,
|
||||||
unsigned int cmd, unsigned long arg)
|
unsigned int cmd, unsigned long arg)
|
||||||
{
|
{
|
||||||
int minor, rc = 0;
|
unsigned int minor = iminor(file->f_dentry->d_inode);
|
||||||
|
int rc = 0;
|
||||||
|
|
||||||
/* Ignore tty ioctls */
|
/* Ignore tty ioctls */
|
||||||
if ((cmd & 0xffffff00) == ((int)'T') << 8)
|
if ((cmd & 0xffffff00) == ((int)'T') << 8)
|
||||||
@ -588,7 +582,7 @@ static int __init
|
|||||||
kzt_init(void)
|
kzt_init(void)
|
||||||
{
|
{
|
||||||
dev_t dev;
|
dev_t dev;
|
||||||
int i, rc;
|
int rc;
|
||||||
|
|
||||||
spin_lock_init(&kzt_module_lock);
|
spin_lock_init(&kzt_module_lock);
|
||||||
INIT_LIST_HEAD(&kzt_module_list);
|
INIT_LIST_HEAD(&kzt_module_list);
|
||||||
@ -603,7 +597,7 @@ kzt_init(void)
|
|||||||
KZT_SUBSYSTEM_INIT(time);
|
KZT_SUBSYSTEM_INIT(time);
|
||||||
|
|
||||||
dev = MKDEV(KZT_MAJOR, 0);
|
dev = MKDEV(KZT_MAJOR, 0);
|
||||||
if (rc = register_chrdev_region(dev, KZT_MINORS, "kztctl"))
|
if ((rc = register_chrdev_region(dev, KZT_MINORS, "kztctl")))
|
||||||
goto error;
|
goto error;
|
||||||
|
|
||||||
/* Support for registering a character driver */
|
/* Support for registering a character driver */
|
||||||
@ -648,7 +642,6 @@ static void
|
|||||||
kzt_fini(void)
|
kzt_fini(void)
|
||||||
{
|
{
|
||||||
dev_t dev = MKDEV(KZT_MAJOR, 0);
|
dev_t dev = MKDEV(KZT_MAJOR, 0);
|
||||||
int i;
|
|
||||||
|
|
||||||
#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,18)
|
#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,18)
|
||||||
class_simple_device_remove(dev);
|
class_simple_device_remove(dev);
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
#include <sys/zfs_context.h>
|
#include <splat-ctl.h>
|
||||||
#include <sys/splat-ctl.h>
|
|
||||||
|
|
||||||
#define KZT_SUBSYSTEM_KMEM 0x0100
|
#define KZT_SUBSYSTEM_KMEM 0x0100
|
||||||
#define KZT_KMEM_NAME "kmem"
|
#define KZT_KMEM_NAME "kmem"
|
||||||
@ -229,7 +228,7 @@ kzt_kmem_test3(struct file *file, void *arg)
|
|||||||
out_free:
|
out_free:
|
||||||
if (kcd)
|
if (kcd)
|
||||||
kmem_cache_free(cache, kcd);
|
kmem_cache_free(cache, kcd);
|
||||||
out_destroy:
|
|
||||||
kmem_cache_destroy(cache);
|
kmem_cache_destroy(cache);
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
#include <sys/zfs_context.h>
|
#include <splat-ctl.h>
|
||||||
#include <sys/splat-ctl.h>
|
|
||||||
|
|
||||||
#define KZT_SUBSYSTEM_MUTEX 0x0400
|
#define KZT_SUBSYSTEM_MUTEX 0x0400
|
||||||
#define KZT_MUTEX_NAME "mutex"
|
#define KZT_MUTEX_NAME "mutex"
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
#include <sys/zfs_context.h>
|
#include <splat-ctl.h>
|
||||||
#include <sys/splat-ctl.h>
|
|
||||||
|
|
||||||
#define KZT_SUBSYSTEM_KRNG 0x0300
|
#define KZT_SUBSYSTEM_KRNG 0x0300
|
||||||
#define KZT_KRNG_NAME "krng"
|
#define KZT_KRNG_NAME "krng"
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
#include <sys/zfs_context.h>
|
#include <splat-ctl.h>
|
||||||
#include <sys/splat-ctl.h>
|
|
||||||
|
|
||||||
#define KZT_SUBSYSTEM_RWLOCK 0x0700
|
#define KZT_SUBSYSTEM_RWLOCK 0x0700
|
||||||
#define KZT_RWLOCK_NAME "rwlock"
|
#define KZT_RWLOCK_NAME "rwlock"
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
#include <sys/zfs_context.h>
|
#include <splat-ctl.h>
|
||||||
#include <sys/splat-ctl.h>
|
|
||||||
|
|
||||||
#define KZT_SUBSYSTEM_TASKQ 0x0200
|
#define KZT_SUBSYSTEM_TASKQ 0x0200
|
||||||
#define KZT_TASKQ_NAME "taskq"
|
#define KZT_TASKQ_NAME "taskq"
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
#include <sys/zfs_context.h>
|
#include <splat-ctl.h>
|
||||||
#include <sys/splat-ctl.h>
|
|
||||||
|
|
||||||
#define KZT_SUBSYSTEM_THREAD 0x0600
|
#define KZT_SUBSYSTEM_THREAD 0x0600
|
||||||
#define KZT_THREAD_NAME "thread"
|
#define KZT_THREAD_NAME "thread"
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
#include <sys/zfs_context.h>
|
#include <splat-ctl.h>
|
||||||
#include <sys/splat-ctl.h>
|
|
||||||
|
|
||||||
#define KZT_SUBSYSTEM_TIME 0x0800
|
#define KZT_SUBSYSTEM_TIME 0x0800
|
||||||
#define KZT_TIME_NAME "time"
|
#define KZT_TIME_NAME "time"
|
||||||
|
Loading…
Reference in New Issue
Block a user