diff options
| author | Colin Percival <cperciva@FreeBSD.org> | 2021-09-25 03:20:33 +0000 |
|---|---|---|
| committer | Colin Percival <cperciva@FreeBSD.org> | 2021-09-25 03:23:49 +0000 |
| commit | 0a35c4b3cab563e3ab1bf5b7b49bf26e0bb7cb04 (patch) | |
| tree | a845c10773441d5d67857f74215b2d1501ddbf0f | |
| parent | 242923eb848a94d657344c2ff45c4f15433cdf3c (diff) | |
| download | src-0a35c4b3cab563e3ab1bf5b7b49bf26e0bb7cb04.tar.gz src-0a35c4b3cab563e3ab1bf5b7b49bf26e0bb7cb04.zip | |
loader printf: Profile with TSLOG
Now that the loader tslog code doesn't call printf, we can profile
printf using TSLOG. On an EC2 c5.xlarge instance, we spend roughly
45 ms here (out of roughly 500 ms), presumably due to the time spent
writing output to the console.
MFC after: 1 week
Sponsored by: https://www.patreon.com/cperciva
| -rw-r--r-- | stand/libsa/printf.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/stand/libsa/printf.c b/stand/libsa/printf.c index 1602a2dc519d..4de547b644dd 100644 --- a/stand/libsa/printf.c +++ b/stand/libsa/printf.c @@ -271,6 +271,7 @@ kvprintf(char const *fmt, kvprintf_fn_t *func, void *arg, int radix, va_list ap) char padc; int stop = 0, retval = 0; + TSENTER(); num = 0; if (!func) d = (char *) arg; @@ -287,8 +288,10 @@ kvprintf(char const *fmt, kvprintf_fn_t *func, void *arg, int radix, va_list ap) padc = ' '; width = 0; while ((ch = (u_char)*fmt++) != '%' || stop) { - if (ch == '\0') + if (ch == '\0') { + TSEXIT(); return (retval); + } PCHAR(ch); } percent = fmt - 1; |
