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:[email protected]]
发送时间: 2015年5月29日 14:07
收件人: "Pei.XiLong(裴喜龙)"; [email protected]
主题: 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
> [email protected]
> 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.
_______________________________________________
Devel mailing list
[email protected]
https://sel4.systems/lists/listinfo/devel