diff --git a/kernel/kpm/kpm.c b/kernel/kpm/kpm.c index bc5530e9..da5f517f 100644 --- a/kernel/kpm/kpm.c +++ b/kernel/kpm/kpm.c @@ -71,10 +71,12 @@ int sukisu_kpm_list(void __user* out, unsigned int bufferSize) { return -1; } -void sukisu_kpm_print_list(void) { +int sukisu_kpm_control(void __user* name, void __user* args) { + return -1; } -void sukisu_kpm_vesion(void) { +int sukisu_kpm_version(void __user* out, unsigned int bufferSize) { + return -1; } EXPORT_SYMBOL(sukisu_kpm_load_module_path); @@ -82,8 +84,8 @@ EXPORT_SYMBOL(sukisu_kpm_unload_module); EXPORT_SYMBOL(sukisu_kpm_num); EXPORT_SYMBOL(sukisu_kpm_info); EXPORT_SYMBOL(sukisu_kpm_list); -EXPORT_SYMBOL(sukisu_kpm_print_list); EXPORT_SYMBOL(sukisu_kpm_version); +EXPORT_SYMBOL(sukisu_kpm_control); int sukisu_handle_kpm(unsigned long arg3, unsigned long arg4, unsigned long arg5) @@ -123,8 +125,8 @@ int sukisu_handle_kpm(unsigned long arg3, unsigned long arg4, unsigned long arg5 return sukisu_kpm_info((const char*) &kernel_name_buffer, (char __user*) arg5); } else if(arg3 == SUKISU_KPM_LIST) { return sukisu_kpm_list((char __user*) arg4, (unsigned int) arg5); - } else if(arg3 == SUKISU_KPM_PRINT) { - sukisu_kpm_print_list(); + } else if(arg3 == SUKISU_KPM_VERSION) { + return sukisu_kpm_version((char __user*) arg4, (unsigned int) arg5); } return 0; } diff --git a/kernel/kpm/kpm.h b/kernel/kpm/kpm.h index 0f558683..83145f97 100644 --- a/kernel/kpm/kpm.h +++ b/kernel/kpm/kpm.h @@ -10,44 +10,35 @@ int sukisu_is_kpm_control_code(unsigned long arg2); // 控制代码 -// prctl(xxx, xxx, 1, "PATH", "ARGS") +// prctl(xxx, 28, "PATH", "ARGS") // success return 0, error return -N #define SUKISU_KPM_LOAD 28 -// prctl(xxx, xxx, 2, "NAME") +// prctl(xxx, 29, "NAME") // success return 0, error return -N #define SUKISU_KPM_UNLOAD 29 -// num = prctl(xxx, xxx, 3) +// num = prctl(xxx, 30) // error return -N // success return +num or 0 #define SUKISU_KPM_NUM 30 -// prctl(xxx, xxx, 4, Buffer, BufferSize) +// prctl(xxx, 31, Buffer, BufferSize) // success return +out, error return -N #define SUKISU_KPM_LIST 31 -// prctl(xxx, xxx, 5, "NAME", Buffer[256]) +// prctl(xxx, 32, "NAME", Buffer[256]) // success return +out, error return -N #define SUKISU_KPM_INFO 32 -// prctl(xxx, xxx, 6, "NAME", "ARGS") +// prctl(xxx, 33, "NAME", "ARGS") // success return KPM's result value // error return -N #define SUKISU_KPM_CONTROL 33 -// prctl(xxx, xxx, 7) -// success will printf to stdout and return 0 -// error will return -1 -#define SUKISU_KPM_PRINT 34 - -#define SUKISU_KPM_VERSION 35 - - -/* A64 instructions are always 32 bits. */ -#define AARCH64_INSN_SIZE 4 - -#define AARCH64_INSN_IMM_MOVNZ AARCH64_INSN_IMM_MAX -#define AARCH64_INSN_IMM_MOVK AARCH64_INSN_IMM_16 +// prctl(xxx, 34, buffer, bufferSize) +// success return KPM's result value +// error return -N +#define SUKISU_KPM_VERSION 34 #endif \ No newline at end of file