Search

ARM 환경에서 시스템 콜 추가하기

Tags

1. 시스템 콜 테이블 등록하기

ARM64 - include/uapi/asm-generic/unistd.h
+__SYSCALL(__NR_sys_print_hello, sys_print_hello)

2. 시스템 콜 헤더 파일에 등록하기

ARM64 - include/linux/syscalls.h

3. 시스템 호출 구현하기

ARM64 - kernel/sys.c —> 이건 무시된듯
/linux-5.15.120/kernel/sys_print_hello.c
Java
복사

4. 과제 2-1

/home/os/syscall_reverse_number.c
#include <stdio.h> #include <linux/unistd.h> int main(void){ chat input[MAX_LENGTH]; char *output; while(true){ printf("Input : "); if (!fgets(input, MAX_LENGTH, stdin)) { break; // EOF detected } // Remove newline character size_t len = strlen(input); if (len > 0 && input[len - 1] == '\n') { input[len - 1] = '\0'; } // If input is empty, break out of the loop if (strlen(input) == 0) { break; } output = syscall(450, ); if (strcmp(output, "error") == 0) { free(output); // Free dynamically allocated memory continue; } // Remove leading zeros int startIndex = 0; while (output[startIndex] == '0' && startIndex < strlen(output)) { startIndex++; } printf("Output : %s\n", &output[startIndex]); free(output); // Free dynamically allocated memory } }
Java
복사
/linux-5.15.120/kernel/sys_reverse_number.c
Java
복사

Reference