thread_recursion
# define thread_recursion(mp,fn,args) fn(mp,args)
thread_recursion(struct message *mp, int (*fn)(struct message *, void *), void *args)