I understand that a RT_PIPE is the preferred way to move data between a rt user task and a standard Linux process, but I have a large amount of data to move per second and I would like to minimize the number of times that the data is copied.
My rt user task performs several tasks that need to be time deterministic. I also want to store a history of its activity in a standard Linux file. Adequate buffering is available so that the file writing and management does not need to be done in real time. Ideally, I would like to share a block of memory (~128KB) between the rt user task and a standard Linux process which performs the file activities. The documentation indicates that many API calls are available to "user tasks", but I assume that unless "Linux process" is explicitly mentioned (as in the case of "pipe") these references apply only to rt user tasks. Am I correct? Is there a shared memory mechanism that works between a rt user task and a standard Linux process? Is there a way to operate a RT_PIPE in a zero copy mode? That is, the rt user task constructs the message in the in the same buffer that is made accessible a standard Linux process to perform a fwrite() from it. Also, what what exactly does the poolsize parameter of pipe_create module do? I assume that it is specified in units of bytes. My message size is 16KB and a message will be sent about every 140 milliseconds. I expect that no more than 2 or 3 messages will queue up before the "standard Linux process" can consume them, but for safety I want to allow for 8 (128KB). Will a poolsize of 128KB sufice or is the pool also consumed by other invisible things too? Regards, Bob Feretich _______________________________________________ Xenomai-help mailing list [email protected] https://mail.gna.org/listinfo/xenomai-help
