Add read to buildtest and sys.h
This commit is contained in:
parent
d64176ea7e
commit
a72a47e0a3
36
buildtest.c
36
buildtest.c
@ -3,8 +3,9 @@
|
||||
|
||||
|
||||
int main() {
|
||||
#if defined(__x86_64__) || defined(__aarch64__) || defined(__mips__)
|
||||
uint64_t pid = fork();
|
||||
|
||||
// Print the pid in hex
|
||||
char msg[17] = {' '};
|
||||
msg[16] = '\n';
|
||||
for(int i = 0; i < 16; ++i) {
|
||||
@ -15,12 +16,23 @@ int main() {
|
||||
msg[i] = c;
|
||||
}
|
||||
write(STDIO, msg, 17);
|
||||
#else
|
||||
char *msg = "Hello World!\n";
|
||||
write(STDIO, msg, 13);
|
||||
|
||||
// Child process exits
|
||||
if(pid == 0) return 0;
|
||||
//TODO: wait on child to remove zombie process
|
||||
|
||||
#if defined(__x86_64__)
|
||||
// Test the read syscall
|
||||
#define INPUT_BUFFER_LEN 4096
|
||||
char input_buffer[INPUT_BUFFER_LEN] = {0};
|
||||
write(STDIO, "Enter some text:", 16);
|
||||
intptr_t n_read = read(STDIO, input_buffer, INPUT_BUFFER_LEN);
|
||||
write(STDIO, input_buffer, n_read);
|
||||
#endif
|
||||
|
||||
return 69;
|
||||
}
|
||||
|
||||
void __libc_start_main() {exit(main());}
|
||||
|
||||
void _start() {
|
||||
@ -30,19 +42,3 @@ void _start() {
|
||||
void __start() {
|
||||
_start();
|
||||
}
|
||||
/*
|
||||
#if defined(__x86_64__)
|
||||
printf("Compiled for x86_64 architecture\n");
|
||||
#elif defined(__i386__)
|
||||
printf("Compiled for x86 architecture\n");
|
||||
#elif defined(__arm__)
|
||||
printf("Compiled for ARM architecture\n");
|
||||
#elif defined(__aarch64__)
|
||||
printf("Compiled for ARM64 architecture\n");
|
||||
#elif defined(__mips__)
|
||||
printf("Compiled for ARM architecture\n");
|
||||
#else
|
||||
printf("Unknown architecture\n");
|
||||
#endif
|
||||
*/
|
||||
|
||||
|
||||
10
sys.h
10
sys.h
@ -6,7 +6,15 @@ void exit(int8_t status);
|
||||
#define STDIO 1
|
||||
#define STDERR 2
|
||||
intptr_t write(int32_t fd, const void* buf, intptr_t size);
|
||||
//intptr_t read(int32_t fd, const void* buf, intptr_t size);
|
||||
#if defined(__x86_64__)
|
||||
intptr_t read(int32_t fd, const void* buf, intptr_t size);
|
||||
#endif
|
||||
|
||||
uint32_t fork();
|
||||
|
||||
// Provide memset for clang
|
||||
void *memset(void* s, int c, unsigned long n) {
|
||||
int8_t* mem = s;
|
||||
for(long int i = 0; i < n; ++i) mem[i] = c;
|
||||
}
|
||||
#endif // !MINIMALSYS_H
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user