[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
RE: [Gm2] two versions of DeviceTablePtrValue
From: |
Martin Kalbfuß |
Subject: |
RE: [Gm2] two versions of DeviceTablePtrValue |
Date: |
Sun, 06 Jun 2010 00:16:46 +0200 |
I only need one did for all channels of my module? I thought every
channel needs its own did.
Am Samstag, den 05.06.2010, 10:04 -0400 schrieb Breeden, Thomas (tmb):
> Yes, the "CAST(IOLink.DeviceTablePtr, cid)" does not look so good.
>
> Using "IOLink.DeviceTablePtrValue (cid, MyDid)" to get the pointer should not
> be
> a problem in your custom stream implementation, since your module is the
> one that does the "IOLink.AllocateDeviceId (MyDid)" on initialization, and
> knows
> what the value of MyDid is.
>
> However, I don't see how one could implement IOChan procedures without
> using the CAST(), since something like IOChan's
> PROCEDURE RawWrite(cid:ChanId; from:ADDRESS; locsToWrite:CARDINAL);
> does not have the DeviceId associated with the passed ChanId.
>
> If seems like it must assume that the ChanId is the DeviceTablePtr in order
> to find the
> correct device callback routine:
> did := CAST(IOLink.DeviceTablePtr, cid);
> did^.doRawWrite(did, from, locsToWrite);
>
> I suspect that Rick Sutcliffe would be the best person to explain the
> architecture
> here.
>
> regards,
>
> Tom
> address@hidden
>
> > From: gm2-bounces On Behalf Of Martin Kalbfuß address@hidden
> > Sent: Saturday, June 05, 2010 7:30 AM
> > To: GNU Modula-2
> > Subject: Re: [Gm2] two versions of DeviceTablePtrValue
> >
> > I still wonder how to implement your own channel the right way. There's
> > no ISO conform way. to obtain the did out of the cid, because
> > DeviceTablePtrValue needs the did as parameter.
> >
> > To implement an open/close pair for your custom stream like
> >
> > OpenMyChannel(VAR cid : IOChan.ChanId);
> > CloseMyCannel(VAR cid : IOChan.ChanId);
> >
> > you have to store the did externally in an array or something similar.
> > Do you think that's the right way to do it?
>
> > From: gm2-bounces On Behalf Of Martin Kalbfuß address@hidden
> > Sent: Friday, June 04, 2010 6:32 PM
> > To: GNU Modula-2
> > Subject: RE: [Gm2] iso streams
> >
> > Many thanks,
> >
> > I wonder, that there's no default implementation of
> > such a stream.
> >
> > I had a look at your code. I've seen, that you did a cast
> >
> > p := SYSTEM.CAST(IOLink.DeviceTablePtr, cid);
> >
> > Is this standard conform? There is a function to get the table.
>
> _______________________________________________
> gm2 mailing list
> address@hidden
> http://lists.nongnu.org/mailman/listinfo/gm2
- [Gm2] two versions of DeviceTablePtrValue, Martin Kalbfuß, 2010/06/05
- Re: [Gm2] two versions of DeviceTablePtrValue, Martin Kalbfuß, 2010/06/05
- Re: [Gm2] two versions of DeviceTablePtrValue, Gaius Mulley, 2010/06/05
- Re: [Gm2] two versions of DeviceTablePtrValue, Martin Kalbfuß, 2010/06/05
- Re: [Gm2] two versions of DeviceTablePtrValue, Gaius Mulley, 2010/06/05
- RE: [Gm2] two versions of DeviceTablePtrValue, Breeden, Thomas (tmb), 2010/06/05
- Re: [Gm2] two versions of DeviceTablePtrValue, Gaius Mulley, 2010/06/05
- RE: [Gm2] two versions of DeviceTablePtrValue,
Martin Kalbfuß <=
- RE: [Gm2] two versions of DeviceTablePtrValue, Breeden, Thomas (tmb), 2010/06/07
- Re: [Gm2] two versions of DeviceTablePtrValue, Fischlin Andreas, 2010/06/06