Add some typedefs to make it clearer when we passing a function,
Add fm_panic define Add another bad atomic hack (need to do this right) git-svn-id: https://outreach.scidac.gov/svn/spl/trunk@35 7e1ea52c-4ff2-0310-8f11-9dd32ca42a1c
This commit is contained in:
parent
4098c921b6
commit
51f443a074
|
@ -10,6 +10,7 @@ extern "C" {
|
||||||
* get by for now since I'm only working on real 64bit systems but
|
* get by for now since I'm only working on real 64bit systems but
|
||||||
* this will need to be addressed properly.
|
* this will need to be addressed properly.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static __inline__ void
|
static __inline__ void
|
||||||
atomic_inc_64(volatile uint64_t *target)
|
atomic_inc_64(volatile uint64_t *target)
|
||||||
{
|
{
|
||||||
|
@ -22,6 +23,14 @@ atomic_dec_64(volatile uint64_t *target)
|
||||||
(*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
|
static __inline__ uint64_t
|
||||||
atomic_add_64(volatile uint64_t *target, uint64_t delta)
|
atomic_add_64(volatile uint64_t *target, uint64_t delta)
|
||||||
{
|
{
|
||||||
|
|
|
@ -13,4 +13,6 @@ extern void cmn_err(int, const char *, ...);
|
||||||
extern void vcmn_err(int, const char *, __va_list);
|
extern void vcmn_err(int, const char *, __va_list);
|
||||||
extern void vpanic(const char *, __va_list);
|
extern void vpanic(const char *, __va_list);
|
||||||
|
|
||||||
|
#define fm_panic panic
|
||||||
|
|
||||||
#endif /* SPL_CMN_ERR_H */
|
#endif /* SPL_CMN_ERR_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) \
|
#define taskq_create(name, thr, pri, min, max, flags) \
|
||||||
__taskq_create(name, thr, pri, min, max, flags)
|
__taskq_create(name, thr, pri, min, max, flags)
|
||||||
#define taskq_dispatch(tq, func, priv, 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_destroy(tq) destroy_workqueue(tq)
|
||||||
#define taskq_wait(tq) flush_workqueue(tq)
|
#define taskq_wait(tq) flush_workqueue(tq)
|
||||||
#define taskq_member(tq, kthr) 1 /* XXX -Just be true */
|
#define taskq_member(tq, kthr) 1 /* XXX -Just be true */
|
||||||
|
|
|
@ -26,14 +26,16 @@ extern "C" {
|
||||||
#define TS_WAIT 0x20 /* No clean linux mapping */
|
#define TS_WAIT 0x20 /* No clean linux mapping */
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
typedef void (*thread_func_t)(void *);
|
||||||
|
|
||||||
#define thread_create(stk, stksize, func, arg, len, pp, state, pri) \
|
#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)
|
arg, len, pp, state, pri)
|
||||||
#define thread_exit() __thread_exit()
|
#define thread_exit() __thread_exit()
|
||||||
#define curthread get_current()
|
#define curthread get_current()
|
||||||
|
|
||||||
extern kthread_t *__thread_create(caddr_t stk, size_t stksize,
|
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,
|
size_t len, int *pp, int state,
|
||||||
pri_t pri);
|
pri_t pri);
|
||||||
extern void __thread_exit(void);
|
extern void __thread_exit(void);
|
||||||
|
|
|
@ -59,7 +59,7 @@ EXPORT_SYMBOL(__thread_exit);
|
||||||
* allocate memory. This is preferable to returning a NULL which Solaris
|
* allocate memory. This is preferable to returning a NULL which Solaris
|
||||||
* style callers likely never check for... since it can't fail. */
|
* style callers likely never check for... since it can't fail. */
|
||||||
kthread_t *
|
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)
|
void *args, size_t len, int *pp, int state, pri_t pri)
|
||||||
{
|
{
|
||||||
thread_priv_t tp;
|
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
|
* 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(). */
|
* added to ensure the callee can use the data safely until wake_up(). */
|
||||||
tp.tp_magic = TP_MAGIC;
|
tp.tp_magic = TP_MAGIC;
|
||||||
tp.tp_func = proc;
|
tp.tp_func = func;
|
||||||
tp.tp_args = args;
|
tp.tp_args = args;
|
||||||
tp.tp_len = len;
|
tp.tp_len = len;
|
||||||
tp.tp_state = state;
|
tp.tp_state = state;
|
||||||
|
|
Loading…
Reference in New Issue