summary refs log tree commit diff stats
path: root/lib/genode_cpp
Commit message (Collapse)AuthorAgeFilesLines
* Genode: add scheduleCallbacks to asyncdispatch (#20708)ehmry2022-10-311-0/+39
| | | | | | | | | * Genode: add native signal handler * Genode: add scheduleCallbacks to asyncdispatch This resolves some awkwardness where an RPC server may or may not use callSoon while dispatching RPC but without scheduling timers or I/O.
* [std/locks]close #7998(complete condition variables) (#17711)flywind2021-04-191-0/+5
| | | | | | * close #7998 * workaround genode * Update lib/system/syslocks.nim
* Genode platform fixes (#17521)Emery Hemingway2021-04-091-11/+9
| | | | | | | | | | | | | | | | | | | * Genode: move dyncall failures to runtime Do not use the "error" pragma to warn that dynamic library loading is not implemented, print a message at runtime and exit. * Genode: use stricter dataspace type in page allocator * Genode: remove compiler configuration from nim.cfg Self-hosting Nim is not supported on Genode and defining the cross-compilation environment can be done externally. * Genode: use new mutex API * Genode: call nim_component_construct as a C procedure * Genode: implement echo for NimStringV2
* Native access to Genode environmentEmery Hemingway2018-06-071-0/+1
| | | | | | | | | | | | | | | | | Add a 'GenodeEnv' type and a 'componentConstructHook' to the system module. The 'componentConstructHook' allows for detection of POSIX style programs that exit implicitly or native Genode components that initialize to serve RPC requests and OS signals. This hook takes a 'GenodeEnv' argument so that the environment interface is passed cleanly to application code after globals are initialized. This is an typed pointer to a C++ object, procedures for accessing the environment will be available from a Nimble library and not included in the standard library. The standard library has an internal pointer to the environment object but this is not for external use, the undocumented global environment pointer has been removed.
* balance Genode CPU pinning, deadlock at Genode exit (#6317)Emery Hemingway2017-09-161-4/+8
| | | | | | | | | | | | | * Genode: balance thread CPU affinities Genode threads are pinned by defaut to the same CPU as the initial component entrypoint thread. Thread affinities are also permanent. This patch pins new threads to CPUs in a round-robin manner. Arbitrary CPU pinning is not exposed and the 'nimPinToCpu' has no effect. * Genode: guarantee that 'quit' will not return On Genode exits are handled by whatever component is acting as parent. The caller has no guarentee that the parent implementation will halt the caller's threads, so explicitly deadlock the 'quit' procedure.
* fixup! support for the Genode OS framework (#5653)Emery Hemingway2017-04-021-1/+0
| | | Allocate thread metadata at createThread.
* support for the Genode OS framework (#5560)Emery Hemingway2017-03-312-0/+147
>=$DISK status=none # code: sectors 0-8999 # font: sectors 9000-10079 (1080 sectors = space enough for 16k glyphs (1080 * 512 / 34 bytes per glyph)) export FONT=9000 # keep this sync'd with boot.subx # debug: sector 10080 onwards export DEBUG=10080 ## Code cat $* [0-9]*.mu |linux/mu > a.subx cat boot.subx mu-init.subx [0-9]*.subx a.subx |linux/braces > a.braces cat a.braces |linux/calls > a.calls cat a.calls |linux/sigils > a.sigils cat a.sigils |linux/tests > a.tests # no assort since baremetal SubX doesn't have segments yet cat a.tests |linux/dquotes > a.dquotes cat a.dquotes |linux/pack > a.pack cat a.pack |linux/survey_baremetal > labels cat a.pack |linux/labels_baremetal labels > a.survey cat a.survey |linux/hex > a.bin dd if=a.bin of=code.img conv=notrunc status=none if [ `wc -c < a.bin` -ge 492544 ] # 15 tracks * 63 sectors per track * 512 bytes per sector (keep this sync'd with boot.subx) then echo "a.bin won't all be loaded on boot" exit 1 fi if [ `wc -c < a.bin` -ge 492544 ] # 15 tracks * 63 sectors per track * 512 bytes per sector then echo "a.bin will overwrite BIOS/Video memory; you'll need to adjust boot.subx to load code to some other non-contiguous area of memory" exit 1 fi if [ `wc -c < a.bin` -ge $(($FONT*512)) ] then echo "a.bin will overwrite font in disk" exit 1 fi ## Latter half of disk is for debug info if [ `wc -c < labels` -ge 1048576 ] # 8 reads * 256 sectors * 512 bytes per sector then echo "labels won't all be loaded on abort" exit 1 fi if [ `wc -l < labels` -gt 20480 ] # 0x5000 stream capacity in abort.subx then echo "abort will go into infinite regress" exit 1 fi dd if=labels of=code.img seek=$DEBUG conv=notrunc status=none # keep this sync'd with abort.subx ## Font data at another well-defined location cat font.subx |sed 's,/[^ ]*,,' |linux/hex > a.font if [ `wc -c < a.font` -ge 262144 ] # 0x200 sectors * 512 bytes per sector (keep this sync'd with boot.subx) then echo "font won't all be loaded on boot" exit 1 fi if [ `wc -c < a.font` -ge 14680064 ] # 0x00e00000 = 0x00f00000 - 0x00100000 then echo "font is so large it overlaps the ISA memory hole; see https://wiki.osdev.org/Memory_Map_(x86)" exit 1 fi if [ `wc -c < a.font` -ge $(( ($DEBUG - $FONT) * 512 )) ] then echo "font will overwrite debug info in disk" exit 1 fi dd if=a.font of=code.img seek=$FONT conv=notrunc status=none