On 01/30/2017 01:27 PM, Andreas Glatz wrote: > Hi > > During optimisation I found out that I have a POSIX socket() call for > opening a TCP connection that tends to switch to secondary mode, which > I expected to stay in primary mode. However, then I found a post [1], > which says that it is in fact considered normal behaviour:
A TCP socket can only be created by the regular Linux kernel, never by the Xenomai co-kernel. For this reason, you cannot expect it to keep the caller in primary mode anyway. > > "rt_dev_socket may cause a switch to secondary mode, yes, this is > perfectly normal, only sending and receiving data is guaranteed to not > cause a switch to secondary mode." > > I also saw that this post was from 2014.... I am wondering now if this > is still considered normal behaviour for the current version of > socket() (POSIX skin of Xenomai 2.4.6 on arm linux 3.0.35)? > 2.4.6 dates back to Nov 2008, by current, I assume you mean 3.x. Speaking about the latter, switching to secondary mode is a general rule applicable to any system call that creates a new resource in the Xenomai system, at the notable exception of anonymous semaphores, mutexes and convars which trigger no mode transition regardless of the calling domain. The rationale for the common behavior is based on the requirement to obtain resources from the Linux kernel to fulfill the operation on the Xenomai side. The process of allocating/creating the following resources typically involves a switch to secondary mode: - named semaphores - message queues - connections to RTDM named device - creation and possibly binding to RTDM sockets (depends on the implementation of the socket protocol) - timerfd - threads -- Philippe. _______________________________________________ Xenomai mailing list [email protected] https://xenomai.org/mailman/listinfo/xenomai
