mirror of
https://github.com/cirosantilli/linux-kernel-module-cheat.git
synced 2026-01-25 11:11:35 +01:00
userland: move getchar from cpp-cheat
This commit is contained in:
19
README.adoc
19
README.adoc
@@ -3785,6 +3785,25 @@ Simulated exit code not 0! Exit code is 1
|
||||
|
||||
which we parse in link:run[] and then exit with the correct result ourselves...
|
||||
|
||||
==== gem5 syscall emulation mode program stdin
|
||||
|
||||
gem5 shows its own stdout to terminal, and does not allow you to type stdin to programs.
|
||||
|
||||
Instead, you must pass stdin non-interactively with the through a file with the `--se.py --input` option, e.g.:
|
||||
|
||||
....
|
||||
printf a > f
|
||||
./run --emulator gem5 --userland userland/c/getchar.c --static -- --input f
|
||||
....
|
||||
|
||||
leads to gem5 output:
|
||||
|
||||
....
|
||||
enter a character: you entered: a
|
||||
....
|
||||
|
||||
Source: link:userland/c/getchar.c[]
|
||||
|
||||
==== User mode vs full system benchmark
|
||||
|
||||
Let's see if user mode runs considerably faster than full system or not.
|
||||
|
||||
@@ -75,6 +75,7 @@ path_properties_tree = PrefixTree({
|
||||
'c': PrefixTree({
|
||||
'assert_fail.c': PrefixTree(value=PathProperties(exit_status=1)),
|
||||
'false.c': PrefixTree(value=PathProperties(exit_status=1)),
|
||||
'getchar.c': PrefixTree(value=PathProperties(interactive=True)),
|
||||
'infinite_loop.c': PrefixTree(value=PathProperties(more_than_1s=True)),
|
||||
}),
|
||||
'kernel_modules': PrefixTree(value=PathProperties(requires_kernel_modules=True)),
|
||||
|
||||
21
userland/c/getchar.c
Normal file
21
userland/c/getchar.c
Normal file
@@ -0,0 +1,21 @@
|
||||
/* Get on character from stdin, and then print it back out.
|
||||
*
|
||||
* Same as getc(stdin).
|
||||
*
|
||||
* You have to press enter for the character to go through:
|
||||
* https://stackoverflow.com/questions/1798511/how-to-avoid-pressing-enter-with-getchar
|
||||
*
|
||||
* Used at:
|
||||
* https://stackoverflow.com/questions/556405/what-do-real-user-and-sys-mean-in-the-output-of-time1/53937376#53937376
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
int main(void) {
|
||||
char c;
|
||||
printf("enter a character: ");
|
||||
c = getchar();
|
||||
printf("you entered: %c\n", c);
|
||||
return EXIT_SUCCESS;
|
||||
}
|
||||
Reference in New Issue
Block a user