Hi, Matt, Thanks for your answer. The ' CAmkES ' branch of libsel4muslcsys implements these functions: +#if !defined(ARCH_IA32) [__NR_socket] = sys_socket, [__NR_bind] = sys_bind, [__NR_connect] = sys_connect, [__NR_listen] = sys_listen, [__NR_accept] = sys_accept, [__NR_setsockopt] = sys_setsockopt, +#endif I think that these are also needed in 'master' branch, for socket operation is a normal function of OS. Xilong Pei Tongji University 2015/5/29 -----邮件原件----- 发件人: Matthew Fernandez [mailto:matthew.fernandez@nicta.com.au] 发送时间: 2015年5月29日 14:07 收件人: "Pei.XiLong(裴喜龙)"; devel@sel4.systems 主题: Re: [seL4] why do there are some differences between camkes branch and master branch in lib seL4/libsel4muslcsys Hi Xilong Pei, I'm not sure if Siwei is subscribed to this mailing list, but I can answer your question. The library libsel4muslcsys is the glue between your operating system and libc. The 'master' branch of libsel4muslcsys is intended for seL4 root tasks (processes that are intended to run as the initial userspace program in an seL4 system), while the 'camkes' branch is for CAmkES components. The two environments are sufficiently different that this glue needs to vary. For example, the libc call `abort` eventually calls `sel4_abort`, which differs on these branches. For root tasks it halts the system if possible or otherwise enters an infinite loop [0]. However, when CAmkES components call `abort` they should not halt the system because they do not know what other components may still be running. The CAmkES implementation [1] uses the caller's thread capability to suspend itself. This implementation is not appropriate for root tasks because their thread capability is not available via the same mechanism as CAmkES components. Similarly, a process that needs to operate in an environment that differs from that of the root task or CAmkES components would likely require a third, different libsel4muslcsys implementation. Part of the reason for these unexpected variations in libc support is that many mechanisms that are often included in monolithic kernels are provided by userspace in a microkernel-based system. Matt [0]: https://github.com/seL4/libsel4muslcsys/blob/master/src/sys_exit.c#L17-L25 [1]: https://github.com/seL4/libsel4muslcsys/blob/camkes/src/sys_exit.c#L20-30 On 29/05/15 15:48, Pei.XiLong(裴喜龙) wrote:
Hi, Siwei Zhuang, Why do there are some differences between camkes branch and master branch in lib seL4/libsel4muslcsys? The lib seL4/libsel4muslcsys is the foundation of libmuslc, it shoud be a libc for any seL4 program, and there should be no diference among any branches. https://github.com/seL4/libsel4muslcsys/commits/camkes
Xilong Pei Tongji University 2015/5/29
_______________________________________________ Devel mailing list Devel@sel4.systems https://sel4.systems/lists/listinfo/devel
________________________________ The information in this e-mail may be confidential and subject to legal professional privilege and/or copyright. National ICT Australia Limited accepts no liability for any damage caused by this email or its attachments.