diff --git a/headers/private/kernel/ksyscalls.h b/headers/private/kernel/ksyscalls.h index 59764cb560..f57c6ba00e 100644 --- a/headers/private/kernel/ksyscalls.h +++ b/headers/private/kernel/ksyscalls.h @@ -24,10 +24,17 @@ typedef struct syscall_parameter_info { type_code type; } syscall_parameter_info; +typedef struct syscall_return_type_info { + int size; + int used_size; + type_code type; +} syscall_return_type_info; + typedef struct extended_syscall_info { - const char* name; - int parameter_count; - syscall_parameter_info parameters[MAX_SYSCALL_PARAMETERS]; + const char* name; + int parameter_count; + syscall_return_type_info return_type; + syscall_parameter_info parameters[MAX_SYSCALL_PARAMETERS]; } extended_syscall_info; diff --git a/src/tools/gensyscalls/gensyscalls.cpp b/src/tools/gensyscalls/gensyscalls.cpp index 77bfe4a5a3..557e2160ac 100644 --- a/src/tools/gensyscalls/gensyscalls.cpp +++ b/src/tools/gensyscalls/gensyscalls.cpp @@ -419,6 +419,14 @@ public: file << "\t{" << endl; file << "\t\t\"" << syscall->Name() << "\", " << paramCount << "," << endl; + + // return type + Type* returnType = syscall->ReturnType(); + file << "\t\t{ " << returnType->Size() << ", " + << returnType->UsedSize() << ", " + << _GetTypeCode(returnType) << " }," << endl; + + // parameters file << "\t\t{" << endl; for (int k = 0; k < paramCount; k++) {