[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 |