cosmopolitan/libc/runtime
tkchia d3efa47f81
Show "screen of death" on VGA console upon program crash (#650)
* [metal] Refactoring: separate out sys_writev_vga() and _vga_init() modules

* [metal] Read VGA info from BDA before long mode entry, not after

If using a pre-existing VGA text console, the VGA initialization
code now retrieves the cursor position & character height from
the BIOS data area while still in real mode — rather than
reading from the BIOS data area only after entering long mode.

(This should help make the code more correct, if Cosmopolitan
were to support UEFI graphics output in the future.  If the
program were booted via UEFI, then the long mode IsMetal()
code would still be activated, but the BIOS data area might
not have been initialized in that case.)

This change also means that there are now a few more fields
in the `struct mman`.

* [metal] VGA console can now show "screen of death" upon a crash

There is now a new function _klog_vga(), which can be called
by kprintf() to output system messages — e.g. information about
CPU exceptions — on the VGA screen.

* [metal] CPU exception handler now dumps cr2 value
* [metal] Add demo of program crash reporting w/ bare metal VGA TTY
* [metal] Reduce size of "screen of death" code
2022-10-06 05:36:15 -07:00
..
__utmpxname.S Add finger demo to redbean and fix regression 2022-06-23 03:42:05 -07:00
abort.c Add notpossible keyword 2022-09-03 20:35:31 -07:00
arch_prctl.c Pay off more technical debt 2022-09-12 23:36:56 -07:00
brk.c Rewrite brk() and sbrk() 2022-10-01 23:11:56 -07:00
brk.internal.h Rewrite brk() and sbrk() 2022-10-01 23:11:56 -07:00
buffer.internal.h Pay off more technical debt 2022-09-12 23:36:56 -07:00
clearenv.c Pay off more technical debt 2022-09-12 23:36:56 -07:00
clktck.c Add sys_ prefix to unwrapped system calls 2022-09-13 11:20:35 -07:00
clktck.h Make major improvements to redbean and libraries 2021-04-18 12:34:15 -07:00
clone-linux.S Pay off more technical debt 2022-09-12 23:36:56 -07:00
clone-nt.S Pay off more technical debt 2022-09-12 23:36:56 -07:00
clone-openbsd.S Pay off more technical debt 2022-09-12 23:36:56 -07:00
clone.c Perform some code cleanup 2022-10-04 23:32:16 -07:00
clone.internal.h Pay off more technical debt 2022-09-12 23:36:56 -07:00
closesymboltable.c Reduce makefile dependencies by 10% 2022-06-08 20:01:28 -07:00
cosmo.S Pay off more technical debt 2022-09-12 23:36:56 -07:00
directmap.internal.h Improve signals and memory protection 2022-04-12 22:11:00 -07:00
dlfcn.h Get Fabrice Bellard's JavaScript engine to build 2021-04-09 01:06:57 -07:00
dsohandle.S Introduce --strace flag for system call tracing 2022-03-18 18:07:28 -07:00
e820.internal.h Support malloc() on bare metal 2021-02-24 00:53:24 -08:00
efimain.greg.c Fold LIBC_BITS into LIBC_INTRIN 2022-08-11 12:13:18 -07:00
enable_threads.c Pay off more technical debt 2022-09-12 23:36:56 -07:00
enable_tls.c Introduce clock_nanosleep() 2022-10-05 06:37:15 -07:00
endutent.S Make more compatibility improvements 2022-09-06 07:04:13 -07:00
endutxent.S Make more compatibility improvements 2022-09-06 07:04:13 -07:00
exit.c Pay off more technical debt 2022-09-12 23:36:56 -07:00
exit2.c Support malloc() on bare metal 2021-02-24 00:53:24 -08:00
ezmap.c Fold LIBC_BITS into LIBC_INTRIN 2022-08-11 12:13:18 -07:00
ezmap.internal.h Improve documentation 2020-12-27 07:02:35 -08:00
fegetround.c Get Fabrice Bellard's JavaScript engine to build 2021-04-09 01:06:57 -07:00
fenv.c Get Fabrice Bellard's JavaScript engine to build 2021-04-09 01:06:57 -07:00
fenv.h Get Fabrice Bellard's JavaScript engine to build 2021-04-09 01:06:57 -07:00
fesetround.c Fix issues revealed by ECMAScript test262 2021-04-10 17:15:35 -07:00
findcombinary.c Make improvements 2022-04-28 09:57:07 -07:00
finddebugbinary.c Fold LIBC_BITS into LIBC_INTRIN 2022-08-11 12:13:18 -07:00
fltrounds.c Fix issues revealed by ECMAScript test262 2021-04-10 17:15:35 -07:00
fork-nt.c Improve docs of more system calls 2022-10-02 22:14:33 -07:00
fork.c Improve docs of more system calls 2022-10-02 22:14:33 -07:00
fpathconf.c Make more compatibility improvements 2022-09-06 12:36:34 -07:00
fpreset.S Clean old .source directive out of asm code 2022-03-18 12:43:21 -07:00
free_s.c Improve locks and signals 2022-04-12 05:20:17 -07:00
ftrace-hook.S Make some systemic improvements 2022-05-18 16:52:36 -07:00
ftraceinit.greg.c Make some systemic improvements 2022-05-18 16:52:36 -07:00
ftracer.c Remove stdio lock macros from amalgamation 2022-09-10 12:03:36 -07:00
getargmax.c Make improvements 2022-04-28 09:57:07 -07:00
getdosargv.c Have execve() escape double quotes in cmd.exe's preferred style 2022-10-02 09:15:46 -07:00
getdosenviron.c Have execve() escape double quotes in cmd.exe's preferred style 2022-10-02 09:15:46 -07:00
getinterpreterexecutablename.c Add sys_ prefix to unwrapped system calls 2022-09-13 11:20:35 -07:00
getlogin.c Add sys_ prefix to unwrapped system calls 2022-09-13 11:20:35 -07:00
getlogin_r.c Add sys_ prefix to unwrapped system calls 2022-09-13 11:20:35 -07:00
getmaxfd.c Reduce Makefile dependencies by 4% 2022-05-23 15:07:01 -07:00
getmemtracksize.c Add malloc logging tool 2022-05-26 23:19:22 -07:00
getpagesize.S Clean old .source directive out of asm code 2022-03-18 12:43:21 -07:00
getresourcelimit.c Reduce makefile dependencies by 10% 2022-06-08 20:01:28 -07:00
getsymbolname.c Improve memory safety 2021-10-13 17:27:13 -07:00
getsymboltable.c Pay off more technical debt 2022-09-12 23:36:56 -07:00
getutent.S Make more compatibility improvements 2022-09-06 07:04:13 -07:00
getutid.S Make more compatibility improvements 2022-09-06 07:04:13 -07:00
getutxent.S Make more compatibility improvements 2022-09-06 07:04:13 -07:00
getutxid.S Make more compatibility improvements 2022-09-06 07:04:13 -07:00
getutxline.S Make more compatibility improvements 2022-09-06 07:04:13 -07:00
grow.c Pay off more technical debt 2022-09-12 23:36:56 -07:00
hook.greg.c Don't relocate file descriptor memory 2022-09-09 16:54:28 -07:00
inflate.c Pay off more technical debt 2022-09-12 23:36:56 -07:00
init.S Reduce build graph by another 14 percent 2022-08-17 20:01:21 -07:00
interceptflag.greg.c Improve synchronization 2022-04-15 15:31:55 -07:00
internal.h Clean up the TLS code 2022-09-10 11:49:13 -07:00
isdynamicexecutable.c Fold LIBC_BITS into LIBC_INTRIN 2022-08-11 12:13:18 -07:00
isheap.c Fix some issues and do some code cleanup 2022-05-23 10:15:53 -07:00
ismemtracked.greg.c Make some more fixups 2022-06-12 09:37:17 -07:00
jmpstack.S Improve signals and memory protection 2022-04-12 22:11:00 -07:00
ldso.c Get Fabrice Bellard's JavaScript engine to build 2021-04-09 01:06:57 -07:00
login_tty.c Introduce clock_nanosleep() 2022-10-05 06:37:15 -07:00
mapanon.c Pay off more technical debt 2022-09-12 23:36:56 -07:00
mapelfread.c Change license 2020-12-27 17:18:44 -08:00
mapshared.c Pay off more technical debt 2022-09-12 23:36:56 -07:00
mapstack.c Add phtread_setname_np() and pthread_getname_np() 2022-09-07 19:04:05 -07:00
memtrack.internal.h Rewrite brk() and sbrk() 2022-10-01 23:11:56 -07:00
memtrack64.txt Optimize memory layout 2022-09-12 04:26:52 -07:00
memtracknt.c Pay off more technical debt 2022-09-12 23:36:56 -07:00
metalprintf.greg.c Improve synchronization 2022-04-15 15:31:55 -07:00
metalprintf.internal.h Support malloc() on bare metal 2021-02-24 00:53:24 -08:00
mman.internal.h Show "screen of death" on VGA console upon program crash (#650) 2022-10-06 05:36:15 -07:00
mmap.c Fix corner case in Linux stack mappings 2022-10-03 13:43:52 -07:00
morph.greg.c Introduce clock_nanosleep() 2022-10-05 06:37:15 -07:00
mprotect-nt.greg.c Clean up some of the threading code 2022-09-08 12:31:56 -07:00
mprotect.c Fix corner case in Linux stack mappings 2022-10-03 13:43:52 -07:00
mremap.c Pay off more technical debt 2022-09-12 23:36:56 -07:00
msync-nt.c Clean up some of the threading code 2022-09-08 12:31:56 -07:00
msync.c Pay off more technical debt 2022-09-12 23:36:56 -07:00
munmap.c Pay off more technical debt 2022-09-12 23:36:56 -07:00
openexecutable.S Fix Redbean when file is read-only (#365) 2022-03-14 17:13:28 -07:00
opensymboltable.greg.c Pay off more technical debt 2022-09-12 23:36:56 -07:00
pathconf.h Make more compatibility improvements 2022-09-06 12:36:34 -07:00
pc.internal.h Start exploring graphical video modes for VGA console (#637) 2022-10-02 01:50:16 -07:00
peekall.S Add MODE=optlinux build mode (#141) 2021-10-14 19:36:49 -07:00
printargs.c Rewrite brk() and sbrk() 2022-10-01 23:11:56 -07:00
printmaps.c Clean up some of the threading code 2022-09-08 12:31:56 -07:00
progname.S Clean old .source directive out of asm code 2022-03-18 12:43:21 -07:00
runtime.h Rewrite brk() and sbrk() 2022-10-01 23:11:56 -07:00
runtime.mk Improve pthread_join() 2022-09-16 14:02:06 -07:00
setstack.S Remove more nonstandard stuff from cosmopolitan.h 2021-03-01 00:18:23 -08:00
setutent.S Make more compatibility improvements 2022-09-06 07:04:13 -07:00
setutxent.S Make more compatibility improvements 2022-09-06 07:04:13 -07:00
stack.h Optimize memory layout 2022-09-12 04:26:52 -07:00
stackchkfail.c Pay off more technical debt 2022-09-12 23:36:56 -07:00
stackchkfaillocal.c Change license 2020-12-27 17:18:44 -08:00
stackuse.c Clean up some code 2022-08-20 12:32:51 -07:00
straceinit.greg.c Pay off more technical debt 2022-09-12 23:36:56 -07:00
symbolic.h wip on intellisense (again) 2021-02-02 11:14:45 -05:00
symbols.c Pay off more technical debt 2022-09-12 23:36:56 -07:00
symbols.internal.h Fold LIBC_BITS into LIBC_INTRIN 2022-08-11 12:13:18 -07:00
sysconf.c Reduce makefile dependencies by 10% 2022-06-08 20:01:28 -07:00
sysconf.h Fix a few more Python tests 2021-08-16 23:47:47 -07:00
untrackmemoryintervals.c Make some systemic improvements 2022-05-18 16:52:36 -07:00
unwind.c Fix libunwind stubs 2022-06-26 05:29:25 -07:00
unwind.h Fix libunwind stubs 2022-06-26 05:29:25 -07:00
updwtmp.S Make more compatibility improvements 2022-09-06 07:04:13 -07:00
updwtmpx.S Make more compatibility improvements 2022-09-06 07:04:13 -07:00
utmp.h Add finger demo to redbean and fix regression 2022-06-23 03:42:05 -07:00
utmpx.h Add finger demo to redbean and fix regression 2022-06-23 03:42:05 -07:00
valist.c Remove plenty of makefile misconfigurations 2022-07-21 09:20:59 -07:00
vfork.S Improve docs of more system calls 2022-10-02 22:14:33 -07:00
warnifpowersave.c Pay off more technical debt 2022-09-12 23:36:56 -07:00
weakfree.c Pay off more technical debt 2022-09-12 23:36:56 -07:00
winargs.internal.h Add torture test for zipos file descriptors 2022-06-15 16:29:49 -07:00
winmain.greg.c Pay off more technical debt 2022-09-12 23:36:56 -07:00