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
복사