Re: [PATCH 0/6] RFC: Typesafe callbacks

!MAILaRCHIVE_VOTE_RePLACE
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
To: Rusty Russell <rusty@...>
Cc: Linus Torvalds <torvalds@...>, Andrew Morton <akpm@...>, <linux-kernel@...>, Jeff Garzik <jeff@...>
Date: Sunday, January 20, 2008 - 8:56 am

Rusty Russell wrote:

I wasn't too convinced with only irq handler conversion but with other
things converted, I'm liking it very much.  I really like the timer
conversion as casting between void * and unsigned long is annoying.
Possible improvements.

* Passing NULL as data to callback which takes non-void pointer
  triggers warning.  I think this should be allowed.  Something like
  the following?

* Allowing non-pointer integral types which fit into pointer would be
  nice.  It's often convenient to pass integers to simple callbacks.

The following macro kinda-sorta achieves the above two but it doesn't
consider promotion of integer types and thus is too strict.  There
gotta be some way.

#define kthread_create(threadfn, data, namefmt...) ({		\
	int (*_threadfn)(typeof(data));				\
	void *_data;						\
	_threadfn = __builtin_choose_expr(!__builtin_types_compatible_p(typeof(data), typeof(NULL)), \
			(threadfn), (void *)(threadfn));	\
	_data = __builtin_choose_expr(sizeof(data) <= sizeof(void *), \
			(void *)(unsigned long)data, (void *)data); \
	__kthread_create((void *)_threadfn, _data, namefmt);	\
})

Thanks.

-- 
tejun
--
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
[PATCH 0/6] RFC: Typesafe callbacks, Rusty Russell, (Sun Jan 20, 5:46 am)
Re: [PATCH 0/6] RFC: Typesafe callbacks, Tejun Heo, (Sun Jan 20, 8:56 am)
Re: [PATCH 0/6] RFC: Typesafe callbacks, Tejun Heo, (Sun Jan 20, 9:00 am)
Re: [PATCH 0/6] RFC: Typesafe callbacks, Rusty Russell, (Sun Jan 20, 6:17 pm)
Re: [PATCH 0/6] RFC: Typesafe callbacks, Rusty Russell, (Mon Jan 21, 7:33 am)
Re: [PATCH 0/6] RFC: Typesafe callbacks, Tejun Heo, (Mon Jan 21, 8:38 am)
Re: [PATCH 0/6] RFC: Typesafe callbacks, Rusty Russell, (Mon Jan 21, 7:27 pm)
Re: [PATCH 0/6] RFC: Typesafe callbacks, Andi Kleen, (Tue Jan 22, 12:20 am)
Re: [PATCH 0/6] RFC: Typesafe callbacks, Linus Torvalds, (Mon Jan 21, 7:57 pm)
Re: [PATCH 0/6] RFC: Typesafe callbacks, Rusty Russell, (Tue Jan 22, 3:16 am)
Re: [PATCH 0/6] RFC: Typesafe callbacks, Linus Torvalds, (Tue Jan 22, 11:53 am)
[PATCH 1/6] typesafe: Convert stop_machine and callers, Rusty Russell, (Sun Jan 20, 5:47 am)
[PATCH 2/6] typesafe: kthread_create and kthread_run, Rusty Russell, (Sun Jan 20, 5:48 am)
Re: [PATCH 2/6] typesafe: kthread_create and kthread_run, Jan Engelhardt, (Sun Jan 20, 7:25 am)
Re: [PATCH 2/6] typesafe: kthread_create and kthread_run, Johannes Weiner, (Sun Jan 20, 12:24 pm)
Re: [PATCH 2/6] typesafe: kthread_create and kthread_run, Rusty Russell, (Sun Jan 20, 6:04 pm)
[PATCH 3/6] typesafe: convert kthread users, Rusty Russell, (Sun Jan 20, 5:50 am)
[PATCH 5/6] typesafe: request_irq and devm_request_irq, Rusty Russell, (Sun Jan 20, 5:54 am)
[PATCH 6/6] typesafe: timers, Rusty Russell, (Sun Jan 20, 5:57 am)