Jan Kiszka wrote:
> Steven Kauffmann wrote:
>> Hi
>>
>> When looking at the rtdm examples tut01-skeleton en tut02-skeleton, I have a
>> question about the context_size in the rtdm_device struct.
>>
>> In tut01-skeleton-drv.c, the context_size = sizeof(buffer_t), in the other
>> example context_size = 0. Both drivers uses the
>> rtdm_safe_copy_to_user/rtdm_safe_copy_from_user functions to write/read data
>> from buffer_t(kernel space) to user_space. So I don't understand why the
>> context_size in tut02 is different than in tut01. Or is the context_size
>> only important if we open the driver several times from one or more
>> user_space programs?
> 
> The context size is important in case you want to attach some data to
> each opened instance of a device. Hmm, but this is something neither
> tut01 nor tut02 deals with optimally. tut02 cannot use a context-based
> buffer, because it uses two device instances (opened by two instances of
> the user space program) to transfer the data. But tut01 could use some
> global buffer as well without loosing a feature.
> 
> Philippe (trem), could you rework tut01 and make it use a global buffer
> instead? Then some tut03 would be nice to explain what per context, per
> device, and global data means. I've seen confusion about this fairly
> often, so a dedicated tutorial would be great.
> 
> Thanks,
> Jan
> 
Hi

I've used per device buffer in tut01 and global buffer in tut02 to show
the difference between them. But it seems that it's not very clear. And
as the tut01 is just here as first rtdm example, it should be as simple
as possible.

So yes, using global buffer in tut01 and tut02 could be done, and I will
add a tut03 to show the context.

tutorial index :
- tut01 : first rtdm program
you can read and write in this device (tut01-skeleton-drv01). All data
are global, so I two program read it, they will read the same thing.

- tut02 : show synchronization
you can only read in the device (tut02-skeleton-drv01) if a write has
been done before (by this program or another program). data and
semaphore are global.

- tut03 : show device context
we can use tut01, and just put data to context. So a program can't read
data written by another program. For example, P1 and P2 two programs.

with tut01, the sequence is :
P1 : write "I'm P1" to tut01-skeleton-drv01
P2 : write "I'm P2" to tut01-skeleton-drv01
P1 : read  "I'm P2" from tut01-skeleton-drv01
P2 : read  "I'm P2" from tut01-skeleton-drv01

with tut03, the sequence is :
P1 : write "I'm P1" to tut03-skeleton-drv01
P2 : write "I'm P2" to tut03-skeleton-drv01
P1 : read  "I'm P1" from tut03-skeleton-drv01
P2 : read  "I'm P2" from tut03-skeleton-drv01


I'm on the right way ?

If yes, I'll do it ASAP.

regards,
Philippe


_______________________________________________
Xenomai-help mailing list
[email protected]
https://mail.gna.org/listinfo/xenomai-help

Reply via email to