From: Al Viro <viro@ftp.linux.org.uk>
To: Kyle Moffett <mrmacman_g4@mac.com>
Cc: Linus Torvalds <torvalds@osdl.org>,
linux-arch@vger.kernel.org, linux-kernel@vger.kernel.org,
gcc@gcc.gnu.org
Subject: Re: [RFC] timers, pointers to functions and type safety
Date: Sat, 2 Dec 2006 12:42:51 +0000 [thread overview]
Message-ID: <20061202124251.GI3078@ftp.linux.org.uk> (raw)
In-Reply-To: <6911A3DA-83C4-4BE9-8553-3E960026BF51@mac.com>
On Sat, Dec 02, 2006 at 04:23:32AM -0500, Kyle Moffett wrote:
> On Dec 01, 2006, at 12:21:49, Al Viro wrote:
> >And that's where it gets interesting. It would be very nice to get to
> >the following situation:
> > * callbacks are void (*)(void *)
> > * data is void *
> > * instances can take void * or pointer to object type
> > * a macro SETUP_TIMER(timer, func, data) sets callback and data
> >and checks if func(data) would be valid.
>
> This is where a very limited form of C++ templates would do nicely;
> you could define something like the following:
>
> template <typename T>
> static inline void setup_timer(struct timer_list *timer,
> void (*function)(T *), T *data)
> {
> timer->function = (void (*)(void *))function;
> timer->data = (void *)data;
> init_timer(timer);
> }
>
> Any attempts to call it with mismatched "function" and "data"
> arguments would display an "Unable to find matching template" error
> from the compiler.
>
> Unfortunately you can't get simple templated functions without
> opening the whole barrel of monkeys involved with C++ support;
Fortunately, you can get all checks done by gcc without involving C++ (or
related flamewars). See original post for a way to do it in a macro
and for fsck sake, leave gcc@gcc.gnu.org out of it.
Folks, please trim the Cc. My apologies for cross-posting in the first place,
should've double-posted instead and manually forwarded relevant followups...
next prev parent reply other threads:[~2006-12-02 12:42 UTC|newest]
Thread overview: 39+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-12-01 17:21 [RFC] timers, pointers to functions and type safety Al Viro
2006-12-02 6:29 ` Daniel Berlin
2006-12-02 12:36 ` Al Viro
2006-12-02 9:23 ` Kyle Moffett
2006-12-02 12:42 ` Al Viro [this message]
2006-12-02 20:53 ` Kyle Moffett
2006-12-02 10:47 ` Arnd Bergmann
2006-12-02 12:59 ` Thomas Gleixner
2006-12-02 14:05 ` Al Viro
2006-12-02 14:45 ` Thomas Gleixner
2006-12-02 16:02 ` Matthew Wilcox
2006-12-02 18:06 ` Thomas Gleixner
2006-12-02 18:19 ` Al Viro
2006-12-02 18:27 ` Thomas Gleixner
2006-12-02 18:40 ` Al Viro
2006-12-02 18:48 ` Al Viro
2006-12-02 21:43 ` Roman Zippel
2006-12-02 21:59 ` Al Viro
2006-12-02 22:13 ` Roman Zippel
2006-12-02 22:40 ` Al Viro
2006-12-02 23:06 ` Roman Zippel
2006-12-03 10:21 ` Pavel Machek
2006-12-03 11:27 ` Russell King
2006-12-03 15:21 ` Roman Zippel
2006-12-03 21:01 ` Pavel Machek
2006-12-03 22:52 ` Roman Zippel
2006-12-03 23:15 ` Pavel Machek
2006-12-04 11:14 ` David Howells
2006-12-04 12:16 ` Russell King
2006-12-04 13:03 ` David Howells
2006-12-04 13:29 ` Russell King
2006-12-04 14:17 ` David Howells
2006-12-04 14:22 ` Russell King
2006-12-04 11:48 ` Ingo Molnar
2006-12-04 12:22 ` David Howells
2006-12-06 0:24 ` Al Viro
2006-12-06 10:20 ` David Howells
2006-12-12 9:59 ` Ingo Molnar
2006-12-02 21:32 ` Roman Zippel
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20061202124251.GI3078@ftp.linux.org.uk \
--to=viro@ftp.linux.org.uk \
--cc=gcc@gcc.gnu.org \
--cc=linux-arch@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mrmacman_g4@mac.com \
--cc=torvalds@osdl.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.