mirror of
https://git.proxmox.com/git/mirror_zfs.git
synced 2024-12-26 19:19:32 +03:00
De-inline spl_kthread_create().
The function was defined as a static inline with variable arguments which causes gcc to generate errors on some distros. Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov> Signed-off-by: Tim Chase <tim@chase2k.com> Closes #346
This commit is contained in:
parent
17a527cb0f
commit
ed650dee76
@ -59,33 +59,7 @@ extern kthread_t *__thread_create(caddr_t stk, size_t stksize,
|
||||
void *args, size_t len, proc_t *pp,
|
||||
int state, pri_t pri);
|
||||
extern void __thread_exit(void);
|
||||
|
||||
/*
|
||||
* spl_kthread_create - Wrapper providing pre-3.13 semantics for
|
||||
* kthread_create() in which it is not killable and less likely
|
||||
* to return -ENOMEM.
|
||||
*/
|
||||
static inline struct task_struct *
|
||||
spl_kthread_create(int (*func)(void *), void *data, const char namefmt[], ...)
|
||||
{
|
||||
struct task_struct *tsk;
|
||||
va_list args;
|
||||
|
||||
va_start(args, namefmt);
|
||||
do {
|
||||
tsk = kthread_create_on_node(func, data,
|
||||
-1, namefmt, args);
|
||||
if (IS_ERR(tsk)) {
|
||||
if (signal_pending(current)) {
|
||||
clear_thread_flag(TIF_SIGPENDING);
|
||||
continue;
|
||||
}
|
||||
if (PTR_ERR(tsk) == -ENOMEM)
|
||||
continue;
|
||||
return (NULL);
|
||||
} else
|
||||
return (tsk);
|
||||
} while (1);
|
||||
}
|
||||
extern struct task_struct *spl_kthread_create(int (*func)(void *),
|
||||
void *data, const char namefmt[], ...);
|
||||
|
||||
#endif /* _SPL_THREAD_H */
|
||||
|
@ -137,3 +137,31 @@ __thread_create(caddr_t stk, size_t stksize, thread_func_t func,
|
||||
SRETURN((kthread_t *)tsk);
|
||||
}
|
||||
EXPORT_SYMBOL(__thread_create);
|
||||
|
||||
/*
|
||||
* spl_kthread_create - Wrapper providing pre-3.13 semantics for
|
||||
* kthread_create() in which it is not killable and less likely
|
||||
* to return -ENOMEM.
|
||||
*/
|
||||
struct task_struct *
|
||||
spl_kthread_create(int (*func)(void *), void *data, const char namefmt[], ...)
|
||||
{
|
||||
struct task_struct *tsk;
|
||||
va_list args;
|
||||
|
||||
va_start(args, namefmt);
|
||||
do {
|
||||
tsk = kthread_create(func, data, namefmt, args);
|
||||
if (IS_ERR(tsk)) {
|
||||
if (signal_pending(current)) {
|
||||
clear_thread_flag(TIF_SIGPENDING);
|
||||
continue;
|
||||
}
|
||||
if (PTR_ERR(tsk) == -ENOMEM)
|
||||
continue;
|
||||
return (NULL);
|
||||
} else
|
||||
return (tsk);
|
||||
} while (1);
|
||||
}
|
||||
EXPORT_SYMBOL(spl_kthread_create);
|
||||
|
Loading…
Reference in New Issue
Block a user