mirror of
https://git.proxmox.com/git/mirror_zfs.git
synced 2026-05-22 10:37:35 +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:
@@ -1,10 +1,11 @@
|
||||
#ifndef _LINUX_CALLB_H
|
||||
#define _LINUX_CALLB_H
|
||||
#ifndef _SOLARIS_CALLB_H
|
||||
#define _SOLARIS_CALLB_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#include <linux/module.h>
|
||||
#include <linux-mutex.h>
|
||||
|
||||
#define DEBUG_CALLB
|
||||
@@ -41,5 +42,5 @@ typedef struct callb_cpr {
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* _LINUX_CALLB_H */
|
||||
#endif /* _SOLARIS_CALLB_H */
|
||||
|
||||
|
||||
@@ -1,10 +1,11 @@
|
||||
#ifndef _LINUX_CONDVAR_H
|
||||
#define _LINUX_CONDVAR_H
|
||||
#ifndef _SOLARIS_CONDVAR_H
|
||||
#define _SOLARIS_CONDVAR_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#include <linux/module.h>
|
||||
#include <linux/wait.h>
|
||||
|
||||
/* 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)
|
||||
wake_up_all(&cvp->cv_event);
|
||||
}
|
||||
#endif /* _LINUX_CONDVAR_H */
|
||||
#endif /* _SOLARIS_CONDVAR_H */
|
||||
|
||||
@@ -1,10 +1,11 @@
|
||||
#ifndef _LINUX_CRED_H
|
||||
#define _LINUX_CRED_H
|
||||
#ifndef _SOLARIS_CRED_H
|
||||
#define _SOLARIS_CRED_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#include <linux/module.h>
|
||||
#include <linux/types.h>
|
||||
|
||||
/* XXX - Portions commented out because we really just want to have the type
|
||||
@@ -36,5 +37,5 @@ typedef struct cred {
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* _LINUX_CRED_H */
|
||||
#endif /* _SOLARIS_CRED_H */
|
||||
|
||||
|
||||
@@ -1,10 +1,12 @@
|
||||
#ifndef _LINUX_GENERIC_H
|
||||
#define _LINUX_GENERIC_H
|
||||
#ifndef _SOLARIS_GENERIC_H
|
||||
#define _SOLARIS_GENERIC_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#include <linux/module.h>
|
||||
|
||||
/* Missing defines.
|
||||
*/
|
||||
#define INT32_MAX INT_MAX
|
||||
@@ -14,7 +16,7 @@ extern "C" {
|
||||
#define MAXNAMELEN 256
|
||||
#define MAXPATHLEN PATH_MAX
|
||||
#define __va_list va_list
|
||||
#define _KERNEL 1
|
||||
#define _KERNEL __KERNEL__
|
||||
#define max_ncpus 64
|
||||
|
||||
/* 0..MAX_PRIO-1: Process priority
|
||||
@@ -63,10 +65,10 @@ extern "C" {
|
||||
|
||||
/* Missing globals
|
||||
*/
|
||||
static int p0 = 0;
|
||||
extern int p0;
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* _LINUX_GENERIC_H */
|
||||
#endif /* _SOLARIS_GENERIC_H */
|
||||
|
||||
+13
-10
@@ -1,5 +1,5 @@
|
||||
#ifndef _LINUX_KMEM_H
|
||||
#define _LINUX_KMEM_H
|
||||
#ifndef _SOLARIS_KMEM_H
|
||||
#define _SOLARIS_KMEM_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
@@ -8,6 +8,7 @@ extern "C" {
|
||||
#undef DEBUG_KMEM
|
||||
#undef DEBUG_KMEM_UNIMPLEMENTED
|
||||
|
||||
#include <linux/module.h>
|
||||
#include <linux/slab.h>
|
||||
#include <linux/mm.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_reclaim_t)(void *);
|
||||
|
||||
kmem_cache_t *
|
||||
extern kmem_cache_t *
|
||||
__kmem_cache_create(char *name, size_t size, size_t align,
|
||||
int (*constructor)(void *, void *, int),
|
||||
void (*destructor)(void *, void *),
|
||||
void (*reclaim)(void *),
|
||||
kmem_constructor_t constructor,
|
||||
kmem_destructor_t destructor,
|
||||
kmem_reclaim_t reclaim,
|
||||
void *priv, void *vmp, int flags);
|
||||
|
||||
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) \
|
||||
__kmem_cache_create(name,size,align,ctor,dtor,rclm,priv,vmp,flags)
|
||||
@@ -163,11 +167,10 @@ __kmem_cache_destroy(kmem_cache_t *cache);
|
||||
#define kmem_cache_alloc(cache, flags) kmem_cache_alloc(cache, flags)
|
||||
#define kmem_cache_free(cache, ptr) kmem_cache_free(cache, ptr)
|
||||
#define kmem_cache_reap_now(cache) kmem_cache_shrink(cache)
|
||||
#define kmem_reap() __kmem_reap()
|
||||
|
||||
#define kmem_reap() __kmem_reap()
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* _LINUX_KMEM_H */
|
||||
#endif /* _SOLARIS_KMEM_H */
|
||||
|
||||
@@ -1,10 +1,11 @@
|
||||
#ifndef _LINUX_KSTAT_H
|
||||
#define _LINUX_KSTAT_H
|
||||
#ifndef _SOLARIS_KSTAT_H
|
||||
#define _SOLARIS_KSTAT_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#include <linux/module.h>
|
||||
#include <linux-types.h>
|
||||
|
||||
/* XXX - The minimum functionality here is stubbed out but nothing works. */
|
||||
@@ -132,5 +133,5 @@ kstat_delete(kstat_t *ksp)
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* _LINUX_KSTAT_H */
|
||||
#endif /* _SOLARIS_KSTAT_H */
|
||||
|
||||
|
||||
@@ -1,10 +1,12 @@
|
||||
#ifndef _LINUX_MUTEX_H
|
||||
#define _LINUX_MUTEX_H
|
||||
#ifndef _SOLARIS_MUTEX_H
|
||||
#define _SOLARIS_MUTEX_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#include <linux/module.h>
|
||||
|
||||
/* See the "Big Theory Statement" in solaris mutex.c.
|
||||
*
|
||||
* Spin mutexes apparently aren't needed by zfs so we assert
|
||||
@@ -19,7 +21,7 @@ extern "C" {
|
||||
|
||||
#define KM_MAGIC 0x42424242
|
||||
#define KM_POISON 0x84
|
||||
|
||||
|
||||
typedef struct {
|
||||
int km_magic;
|
||||
char *km_name;
|
||||
@@ -115,4 +117,4 @@ mutex_owner(kmutex_t *mp)
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* _LINUX_MUTEX_H */
|
||||
#endif /* _SOLARIS_MUTEX_H */
|
||||
|
||||
@@ -1,10 +1,11 @@
|
||||
#ifndef _LINUX_RANDOM_H
|
||||
#define _LINUX_RANDOM_H
|
||||
#ifndef _SOLARIS_RANDOM_H
|
||||
#define _SOLARIS_RANDOM_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#include <linux/module.h>
|
||||
#include <linux/random.h>
|
||||
|
||||
/* FIXME:
|
||||
@@ -34,4 +35,4 @@ random_get_pseudo_bytes(uint8_t *ptr, size_t len)
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* _LINUX_RANDOM_H */
|
||||
#endif /* _SOLARIS_RANDOM_H */
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
#ifndef _LINUX_RWLOCK_H
|
||||
#define _LINUX_RWLOCK_H
|
||||
#ifndef _SOLARIS_RWLOCK_H
|
||||
#define _SOLARIS_RWLOCK_H
|
||||
|
||||
#include <linux/module.h>
|
||||
#include <linux/slab.h>
|
||||
#include <linux/rwsem.h>
|
||||
#include <asm/current.h>
|
||||
@@ -32,7 +33,7 @@ typedef struct {
|
||||
int rw_magic;
|
||||
char *rw_name;
|
||||
struct rw_semaphore rw_sem;
|
||||
struct task_struct *rw_owner; /* holder of the write lock */
|
||||
struct task_struct *rw_owner; /* holder of the write lock */
|
||||
} krwlock_t;
|
||||
|
||||
static __inline__ void
|
||||
@@ -196,11 +197,11 @@ rw_tryupgrade(krwlock_t *rwlp)
|
||||
* read lock and reacquire it for writing since
|
||||
* we know there are no waiters */
|
||||
up_read(&rwlp->rw_sem);
|
||||
|
||||
|
||||
/* returns 1 if success, 0 if contention */
|
||||
result = down_write_trylock(&rwlp->rw_sem);
|
||||
|
||||
/* Check if upgrade failed. Should not ever happen
|
||||
|
||||
/* Check if upgrade failed. Should not ever happen
|
||||
* if we got to this point */
|
||||
BUG_ON(!result);
|
||||
BUG_ON(rwlp->rw_owner != NULL);
|
||||
@@ -220,4 +221,4 @@ rw_owner(krwlock_t *rwlp)
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* _LINUX_RWLOCK_H */
|
||||
#endif /* _SOLARIS_RWLOCK_H */
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#ifndef _LINUX_TASKQ_H
|
||||
#define _LINUX_TASKQ_H
|
||||
#ifndef _SOLARIS_TASKQ_H
|
||||
#define _SOLARIS_TASKQ_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
@@ -19,6 +19,7 @@ extern "C" {
|
||||
* forces us to implement dynamic workqueues. Which is all very doable
|
||||
* with a little effort.
|
||||
*/
|
||||
#include <linux/module.h>
|
||||
#include <linux/workqueue.h>
|
||||
#include <linux/gfp.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 /* _LINUX_TASKQ_H */
|
||||
#endif /* _SOLARIS_TASKQ_H */
|
||||
|
||||
@@ -1,10 +1,11 @@
|
||||
#ifndef _LINUX_THREAD_H
|
||||
#define _LINUX_THREAD_H
|
||||
#ifndef _SOLARIS_THREAD_H
|
||||
#define _SOLARIS_THREAD_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#include <linux/module.h>
|
||||
#include <linux/mm.h>
|
||||
#include <linux/spinlock.h>
|
||||
#include <linux-types.h>
|
||||
@@ -35,14 +36,15 @@ typedef struct proc_s {
|
||||
int foo;
|
||||
} 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,
|
||||
size_t len, proc_t *pp, int state,
|
||||
pri_t pri);
|
||||
extern void __thread_exit(void);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* _LINUX_THREAD_H */
|
||||
#endif /* _SOLARIS_THREAD_H */
|
||||
|
||||
|
||||
@@ -1,7 +1,5 @@
|
||||
#ifndef _TIME_H
|
||||
#define _TIME_H
|
||||
|
||||
#pragma ident "%Z%%M% %I% %E% SMI" /* SVr4.0 1.16 */
|
||||
#ifndef _SOLARIS_TIME_H
|
||||
#define _SOLARIS_TIME_H
|
||||
|
||||
/*
|
||||
* Structure returned by gettimeofday(2) system call,
|
||||
@@ -12,6 +10,7 @@
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#include <linux/module.h>
|
||||
#include <linux/time.h>
|
||||
#include <linux-types.h>
|
||||
|
||||
@@ -61,4 +60,4 @@ gethrestime_sec(void)
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* _TIME_H */
|
||||
#endif /* _SOLARIS_TIME_H */
|
||||
|
||||
@@ -1,10 +1,11 @@
|
||||
#ifndef _LINUX_TIMER_H
|
||||
#define _LINUX_TIMER_H
|
||||
#ifndef _SOLARIS_TIMER_H
|
||||
#define _SOLARIS_TIMER_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#include <linux/module.h>
|
||||
#include <linux/sched.h>
|
||||
#include <linux/timer.h>
|
||||
|
||||
@@ -17,5 +18,5 @@ extern "C" {
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* _LINUX_TIMER_H */
|
||||
#endif /* _SOLARIS_TIMER_H */
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#ifndef _LINUX_TYPES_H
|
||||
#define _LINUX_TYPES_H
|
||||
#ifndef _SOLARIS_TYPES_H
|
||||
#define _SOLARIS_TYPES_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
@@ -24,4 +24,4 @@ typedef short pri_t;
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* _LINUX_TYPES_H */
|
||||
#endif /* _SOLARIS_TYPES_H */
|
||||
|
||||
+60
-13
@@ -1,11 +1,40 @@
|
||||
#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/uaccess.h>
|
||||
#include <linux/list.h>
|
||||
#endif /* _KERNEL */
|
||||
#include <stdarg.h>
|
||||
|
||||
#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_SIZE 64
|
||||
@@ -70,7 +99,7 @@ typedef struct kzt_cmd {
|
||||
#define KZT_TEST_UNKNOWN 0xFFF
|
||||
|
||||
|
||||
#ifdef _KERNEL
|
||||
#ifdef __KERNEL__
|
||||
#define KZT_SUBSYSTEM_INIT(type) \
|
||||
({ kzt_subsystem_t *_sub_; \
|
||||
\
|
||||
@@ -79,7 +108,7 @@ typedef struct kzt_cmd {
|
||||
printk(KERN_ERR "Error initializing: " #type "\n"); \
|
||||
} else { \
|
||||
spin_lock(&kzt_module_lock); \
|
||||
list_add_tail(&(_sub_->subsystem_list), \
|
||||
list_add_tail(&(_sub_->subsystem_list), \
|
||||
&kzt_module_list); \
|
||||
spin_unlock(&kzt_module_lock); \
|
||||
} \
|
||||
@@ -92,10 +121,10 @@ typedef struct kzt_cmd {
|
||||
_id_ = kzt_##type##_id(); \
|
||||
spin_lock(&kzt_module_lock); \
|
||||
list_for_each_entry_safe(_sub_, _tmp_, &kzt_module_list, \
|
||||
subsystem_list) { \
|
||||
subsystem_list) { \
|
||||
if (_sub_->desc.id == _id_) { \
|
||||
list_del_init(&(_sub_->subsystem_list)); \
|
||||
spin_unlock(&kzt_module_lock); \
|
||||
spin_unlock(&kzt_module_lock); \
|
||||
kzt_##type##_fini(_sub_); \
|
||||
spin_lock(&kzt_module_lock); \
|
||||
_flag_ = 1; \
|
||||
@@ -128,7 +157,7 @@ typedef struct kzt_cmd {
|
||||
|
||||
#define KZT_TEST_FINI(sub, tid) \
|
||||
({ kzt_test_t *_test_, *_tmp_; \
|
||||
int _flag_ = 0; \
|
||||
int _flag_ = 0; \
|
||||
\
|
||||
spin_lock(&((sub)->test_lock)); \
|
||||
list_for_each_entry_safe(_test_, _tmp_, \
|
||||
@@ -141,7 +170,7 @@ typedef struct kzt_cmd {
|
||||
spin_unlock(&((sub)->test_lock)); \
|
||||
\
|
||||
if (!_flag_) \
|
||||
printk(KERN_ERR "Error finalizing: " #tid "\n"); \
|
||||
printk(KERN_ERR "Error finalizing: " #tid "\n"); \
|
||||
})
|
||||
|
||||
typedef int (*kzt_test_func_t)(struct file *, void *);
|
||||
@@ -181,7 +210,7 @@ typedef struct kzt_info {
|
||||
spin_lock(&_info_->info_lock); \
|
||||
\
|
||||
/* Don't allow the kernel to start a write in the red zone */ \
|
||||
if ((int)(_info_->info_head - _info_->info_buffer) > \
|
||||
if ((int)(_info_->info_head - _info_->info_buffer) > \
|
||||
(KZT_INFO_BUFFER_SIZE -KZT_INFO_BUFFER_REDZONE)) { \
|
||||
_rc_ = -EOVERFLOW; \
|
||||
} else { \
|
||||
@@ -206,6 +235,24 @@ kzt_subsystem_t * kzt_taskq_init(void);
|
||||
kzt_subsystem_t * kzt_thread_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 */
|
||||
|
||||
Reference in New Issue
Block a user