summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--include/sys/atomic.h9
-rw-r--r--include/sys/cmn_err.h2
-rw-r--r--include/sys/taskq.h2
-rw-r--r--include/sys/thread.h6
-rw-r--r--modules/spl/spl-thread.c4
5 files changed, 18 insertions, 5 deletions
diff --git a/include/sys/atomic.h b/include/sys/atomic.h
index ae2130331..1f2a4780b 100644
--- a/include/sys/atomic.h
+++ b/include/sys/atomic.h
@@ -10,6 +10,7 @@ extern "C" {
* get by for now since I'm only working on real 64bit systems but
* this will need to be addressed properly.
*/
+
static __inline__ void
atomic_inc_64(volatile uint64_t *target)
{
@@ -22,6 +23,14 @@ atomic_dec_64(volatile uint64_t *target)
(*target)--;
}
+static __inline__ uint32_t
+atomic_add_32(volatile uint32_t *target, int32_t delta)
+{
+ uint32_t rc = *target;
+ *target += delta;
+ return rc;
+}
+
static __inline__ uint64_t
atomic_add_64(volatile uint64_t *target, uint64_t delta)
{
diff --git a/include/sys/cmn_err.h b/include/sys/cmn_err.h
index c76e4f465..62417e83e 100644
--- a/include/sys/cmn_err.h
+++ b/include/sys/cmn_err.h
@@ -13,4 +13,6 @@ extern void cmn_err(int, const char *, ...);
extern void vcmn_err(int, const char *, __va_list);
extern void vpanic(const char *, __va_list);
+#define fm_panic panic
+
#endif /* SPL_CMN_ERR_H */
diff --git a/include/sys/taskq.h b/include/sys/taskq.h
index fd4af1232..811b99557 100644
--- a/include/sys/taskq.h
+++ b/include/sys/taskq.h
@@ -75,7 +75,7 @@ extern taskq_t *__taskq_create(const char *, int, pri_t, int, int, uint_t);
#define taskq_create(name, thr, pri, min, max, flags) \
__taskq_create(name, thr, pri, min, max, flags)
#define taskq_dispatch(tq, func, priv, flags) \
- __taskq_dispatch(tq, func, priv, flags)
+ __taskq_dispatch(tq, (task_func_t)func, priv, flags)
#define taskq_destroy(tq) destroy_workqueue(tq)
#define taskq_wait(tq) flush_workqueue(tq)
#define taskq_member(tq, kthr) 1 /* XXX -Just be true */
diff --git a/include/sys/thread.h b/include/sys/thread.h
index 44e2902a6..c7b104374 100644
--- a/include/sys/thread.h
+++ b/include/sys/thread.h
@@ -26,14 +26,16 @@ extern "C" {
#define TS_WAIT 0x20 /* No clean linux mapping */
#endif
+typedef void (*thread_func_t)(void *);
+
#define thread_create(stk, stksize, func, arg, len, pp, state, pri) \
- __thread_create(stk, stksize, (void (*)(void *))func, \
+ __thread_create(stk, stksize, (thread_func_t)func, \
arg, len, pp, state, pri)
#define thread_exit() __thread_exit()
#define curthread get_current()
extern kthread_t *__thread_create(caddr_t stk, size_t stksize,
- void (*func)(void *), void *args,
+ thread_func_t func, void *args,
size_t len, int *pp, int state,
pri_t pri);
extern void __thread_exit(void);
diff --git a/modules/spl/spl-thread.c b/modules/spl/spl-thread.c
index e6dca2300..a2c72f051 100644
--- a/modules/spl/spl-thread.c
+++ b/modules/spl/spl-thread.c
@@ -59,7 +59,7 @@ EXPORT_SYMBOL(__thread_exit);
* allocate memory. This is preferable to returning a NULL which Solaris
* style callers likely never check for... since it can't fail. */
kthread_t *
-__thread_create(caddr_t stk, size_t stksize, void (*proc)(void *),
+__thread_create(caddr_t stk, size_t stksize, thread_func_t func,
void *args, size_t len, int *pp, int state, pri_t pri)
{
thread_priv_t tp;
@@ -77,7 +77,7 @@ __thread_create(caddr_t stk, size_t stksize, void (*proc)(void *),
* we're passing a stack address to a new thread but correct locking was
* added to ensure the callee can use the data safely until wake_up(). */
tp.tp_magic = TP_MAGIC;
- tp.tp_func = proc;
+ tp.tp_func = func;
tp.tp_args = args;
tp.tp_len = len;
tp.tp_state = state;