Add read to buildtest and sys.h

This commit is contained in:
Lucas Schumacher 2025-04-14 13:09:45 -04:00
parent d64176ea7e
commit a72a47e0a3
2 changed files with 26 additions and 22 deletions

View File

@ -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
View File

@ -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