Hi Garrett, Artem and all, >> So I see three options to get my implementation done at the moment: >> >> 1) Use one driver, change the stream ops by modifying the qinfos at >> open time (as above) >> 2) Use one driver and two modules, somehow pushing the modules over >> the driver in the stream (have not found out yet how to do this) >> 3) Use one driver and change all stream functions into "proxies" >> > [...] > > (Garrett) > > When I've been faced with this problem, I've chosen option #3. It > doesn't violate any DDI, and has minimal overhead cost.
I've now got option #1 running (not final, but in principle it works) and the good news is that it looks like this was even allowed: http://cvs.opensolaris.org/source/xref/onnv/onnv-gate/usr/src/uts/common/sys/stream.h#71 71 * - q_qinfo: can be modified before qprocson(). My main trouble today was that my driver should to be a client of both usbser and gldv3 (mac) and gldv3 drivers want minor #0, which originally was taken by usbser. After I modified usbser to use only higher minors, I was able to at least plumb a gldv3 interface AND use the serials at the same time. I'll see how it goes, but the issue of other interfaces making assumptions which conflict with each other will probably remain, so I guess I will come back to option #2 later. Option #3 is not as nice as thought, because in my case - it does not solve the minor number conflicts (while option #2 would) - gldv3 and usbser use different STREAMS module_info settings, so I really should have differnt q_qinfos anyway. Thanks for listening and thanks again to Garret and Artem for their thoughts and help. It is very much appreciated. Nils _______________________________________________ driver-discuss mailing list [email protected] http://mail.opensolaris.org/mailman/listinfo/driver-discuss
