extern void ksocknal_queue_tx_locked(struct ksock_tx *tx, struct ksock_conn *conn);
extern void ksocknal_txlist_done(struct lnet_ni *ni, struct list_head *txlist,
int error);
-extern int ksocknal_thread_start(int (*fn)(void *arg), void *arg, char *name);
+#define ksocknal_thread_start(fn, data, namefmt, arg...) \
+ ({ \
+ struct task_struct *__task = kthread_run(fn, data, \
+ namefmt, ##arg); \
+ if (!IS_ERR(__task)) \
+ atomic_inc(&ksocknal_data.ksnd_nthreads); \
+ PTR_ERR_OR_ZERO(__task); \
+ })
+
extern void ksocknal_thread_fini(void);
extern void ksocknal_launch_all_connections_locked(struct ksock_peer_ni *peer_ni);
extern struct ksock_conn_cb *ksocknal_find_connectable_conn_cb_locked(struct ksock_peer_ni *peer_ni);