lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20061202124251.GI3078@ftp.linux.org.uk>
Date:	Sat, 2 Dec 2006 12:42:51 +0000
From:	Al Viro <viro@....linux.org.uk>
To:	Kyle Moffett <mrmacman_g4@....com>
Cc:	Linus Torvalds <torvalds@...l.org>, linux-arch@...r.kernel.org,
	linux-kernel@...r.kernel.org, gcc@....gnu.org
Subject: Re: [RFC] timers, pointers to functions and type safety

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@....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...
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ