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() {
|
int main() {
|
||||||
#if defined(__x86_64__) || defined(__aarch64__) || defined(__mips__)
|
|
||||||
uint64_t pid = fork();
|
uint64_t pid = fork();
|
||||||
|
|
||||||
|
// Print the pid in hex
|
||||||
char msg[17] = {' '};
|
char msg[17] = {' '};
|
||||||
msg[16] = '\n';
|
msg[16] = '\n';
|
||||||
for(int i = 0; i < 16; ++i) {
|
for(int i = 0; i < 16; ++i) {
|
||||||
@ -15,12 +16,23 @@ int main() {
|
|||||||
msg[i] = c;
|
msg[i] = c;
|
||||||
}
|
}
|
||||||
write(STDIO, msg, 17);
|
write(STDIO, msg, 17);
|
||||||
#else
|
|
||||||
char *msg = "Hello World!\n";
|
// Child process exits
|
||||||
write(STDIO, msg, 13);
|
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
|
#endif
|
||||||
|
|
||||||
return 69;
|
return 69;
|
||||||
}
|
}
|
||||||
|
|
||||||
void __libc_start_main() {exit(main());}
|
void __libc_start_main() {exit(main());}
|
||||||
|
|
||||||
void _start() {
|
void _start() {
|
||||||
@ -30,19 +42,3 @@ void _start() {
|
|||||||
void __start() {
|
void __start() {
|
||||||
_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 STDIO 1
|
||||||
#define STDERR 2
|
#define STDERR 2
|
||||||
intptr_t write(int32_t fd, const void* buf, intptr_t size);
|
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();
|
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
|
#endif // !MINIMALSYS_H
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user