|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Minios-devel] [UNIKRAFT PATCH] lib/ukboot: fflush() after banner is printed
> On 29 Jan 2020, at 11:34, Simon Kuenzer <simon.kuenzer@xxxxxxxxx> wrote:
>
> On 29.01.20 10:46, Gaulthier Gain wrote:
>> Hi Simon,
>> I tested with musl. Now, we can see the "Unikraft banner" however
>> application output is not displayed.
>> I think that we need to fix this issue in the musl implementation.
>
> I tested that doing fflush to stdout and stderr in the application works,
> too. The issue with putting an fflush after calling main() is that we can't
> know what it does with the file descriptors. Probably, the fix is to do an
> fflush() in helloworld app or to get musl somehow flush the buffers on
> Unikernel exit. It anyways surprises me that the fflush does not happen
> automatically on '\n' with this musl port. Is msul behaving the same when on
> Linux?
I’ll investigate on Linux.
> However, independent of all this, I still think this patch alone makes sense
> since it is ensuring the order when the banner is printed during boot. Since
> uk_pr_* variants suppose to bypass the normal libc printing system, we may
> have different behavior between printf and uk_pr_* that could cause
> interleaved or out-of-order output.
In that case, effectively it makes sense.
>
>> Gaulthier
>>> On 27 Jan 2020, at 10:16, Simon Kuenzer <simon.kuenzer@xxxxxxxxx> wrote:
>>>
>>> For the case that a libc is adding buffering `stdout`, we are flushing
>>> `stdout` after printing the "Welcome to Unirkaft" banner. This is to
>>> make sure that the output stays in order and does not get mixed with
>>> the kernel and debug output.
>>>
>>> Signed-off-by: Simon Kuenzer <simon.kuenzer@xxxxxxxxx>
>>> ---
>>> lib/ukboot/boot.c | 1 +
>>> 1 file changed, 1 insertion(+)
>>>
>>> diff --git a/lib/ukboot/boot.c b/lib/ukboot/boot.c
>>> index 3f5046ca..9bd15ca8 100644
>>> --- a/lib/ukboot/boot.c
>>> +++ b/lib/ukboot/boot.c
>>> @@ -100,6 +100,7 @@ static void main_thread_func(void *arg)
>>> printf("\\_,_/_//_/_/_/\\_\\/_/ \\_,_/_/ \\__/\n");
>>> printf("%35s\n",
>>> STRINGIFY(UK_CODENAME) " " STRINGIFY(UK_FULLVERSION));
>>> + fflush(stdout);
>>> #endif
>>> /*
>>> * Application
>>> --
>>> 2.20.1
>>>
_______________________________________________
Minios-devel mailing list
Minios-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/minios-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |