On Monday 05 November 2007, Johannes Stezenbach wrote: > On Mon, Nov 05, 2007, Steven Toth wrote: > > Johannes Stezenbach wrote: > >> > >> struct dvb_tuning_param p[3] = { > >> { .id = MODULATION, .val = MOD_8VSB }, > >> { .id = FREQUENCY, .val = 591250000 }, > >> { .id = 0 } > >> }; > >> ioctl(fd, DVB_TUNE, p); > > > > > > You can't reliably pass in variably length arrays into the kernel, or none > > of the other kernel wide drivers do, they need to be fixed length for > > sanity reasons. > > Of course you can have variable length args to ioctl(). It's > just that you can't let dvb_usercopy() do the work anymore but > have to call copy_from_user() yourself, but I would favor a simple, > generic API anytime over one with unnecessary, arbitrary > limits, so IMHO it's worth the little extra effort. > > #define DVB_TUNE _IOC(_IOC_WRITE,'o',82,0) > > plus > > > diff -r 1acfe4149714 linux/drivers/media/dvb/dvb-core/dvbdev.c > --- a/linux/drivers/media/dvb/dvb-core/dvbdev.c Mon Nov 05 10:30:39 2007 -0200 > +++ b/linux/drivers/media/dvb/dvb-core/dvbdev.c Mon Nov 05 18:23:41 2007 +0100 > @@ -362,9 +362,11 @@ int dvb_usercopy(struct inode *inode, st > case _IOC_READ: /* some v4l ioctls are marked wrong ... */ > case _IOC_WRITE: > case (_IOC_WRITE | _IOC_READ): > - if (_IOC_SIZE(cmd) <= sizeof(sbuf)) { > + if (_IOC_SIZE(cmd) == 0) > + parg = arg; > + else if (_IOC_SIZE(cmd) <= sizeof(sbuf)) > parg = sbuf; > - } else { > + else { > /* too big to allocate from stack */ > mbuf = kmalloc(_IOC_SIZE(cmd),GFP_KERNEL); > if (NULL == mbuf) > > (untested) > > (BTW, the majority of ioctls don't encode the argument size, this > feature was invented just a few years ago; see man ioctl_list) > > Or you could encode the lenght seperately like e.g. > I2C_RDWR does with its struct i2c_rdwr_ioctl_data argument. > It's a matter of taste, not sanity or security. > > > > 1) I've made minor changes to dvb_core to interpret these messages and > > handle the ioctl. No changes have been made to the frontend drivers. > > > > 2) Adding support for s2 _inside_ the kernel will mean adding a single > > method to dvb_frontend_ops which allows the dvb_core to notify a new S2 > > driver. The goal here is to minimize these changes also. I haven't > > demonstrated that code here, becuse I felt it was more important to show > > the impact to the userland API/ABI, knowing that DVB-S2 and other advanced > > types (including analog) would naturally fit well within this model. > > > > 3) This applies to all devs. I welcome all feedback, for sure the sytax > > might need some cleanup, but please don't shoot the idea down when it's > > only had 6-8 hours work of engineering behind it. It's proof of concept. It > > doesn't contain any of Manu's code so I don't feel bound politically or > > technically. I think given another 4-5 hours I could show the HVR4000 > > working, and demonstrate many of the userland signal/statistic API's. > > > > At this stage I'm looking for a "Yes, in principle we like the idea, but > > show me how you do feature XYZ" from other devs. At which point I'll flush > > out more code this would probably lead to an RFC for your approval. > > > Seems like no one is interested. > > > BTW, since every DVB-S2 demod is also a DVB-S demod, why does > no one split the DVB-S parts of their driver for merging > first? It would make the users happy as it would change the > state from "card not supported" to "card works for 95% of existing > transponders". (Dunno how this fits into this thread but...) > hi everybody, what are we doing now? imho we are discussing a new change to the dvb-s2 api again. although i do like this ioctl approach for further enhancements of the api, i must admit that things that are already done have to be done again. iirc, there is a multiproto version of szap, vdr, ... although, existing drivers e.g. stb0899 must be rewritten/patched to handle the new iotcl. at least i do not know what this will mean to the rework and test scenario, on both sides. this means if we take multiproto from manu - what has steven got to do, and, if we take stevens approach, whats on manus side. i would really appreciate to get a working compromise instead of starting this api extension all over again for the X time since Nov. 2005 when - iirc felix domke and me - started the discussion. "Yes, in principle I like the idea" but someday we must get an end to the implementation and merge it. best regards marcel _______________________________________________ linux-dvb mailing list linux-dvb@xxxxxxxxxxx http://www.linuxtv.org/cgi-bin/mailman/listinfo/linux-dvb