Hi, I was looking at using the rt_printf / rt_fprintf for doing deferred logging and I have a few questions.
1) I was reading through the source and I noticed there is no locking of the buffer write_pos between tasks during the initial snprint into the buffer. Is the rt_printf service thread safe? There are calls to xnarch_read_memory_barrier() and xnarch_write_memory_barrier(), but I'm assuming they are for SMP and IO ordering although I'm not 100% on what the barriers imply as I'm fairly new to this kind of hardware. 2) Can the service be called from Linux tasks and Xenomai tasks? We were trying to get away with a common logging interface (wrapping the service) which would allow writing to different streams. If it can't be called from a Linux process then we will have an issue if we try to write to the same stream from different write tasks. 3) Why is there multiple buffers allowing multiple FIFO's. I've read the code and can't really see how the extra buffers are used from a users perspective (I can see how the service prints / manages them). It appears that whatever buffer you create with rt_print_init or rt_auto_init is the buffer that get's used for writing too. Is there a way to select the buffer you want to write to? Also a call to rt_print_init causes a pre-existing buffer to be written to io from within the callers context and then creates a new buffer / ring buffer, so that no matter what you are always writing to the head of the linked list of buffers. How do I get access to an old buffer once it has been printed? Is there something I'm missing? I really think I must be missing something, sorry if these are obvious questions. Thanks Dan Adams
_______________________________________________ Xenomai-help mailing list [email protected] https://mail.gna.org/listinfo/xenomai-help
