correct placement and add size check

This commit is contained in:
greggameplayer 2018-05-23 12:34:42 +02:00 committed by GitHub
parent f217d6c66f
commit 8c648b59cd
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -59,17 +59,25 @@ private:
Create = 0xC0080101, Create = 0xC0080101,
FromId = 0xC0080103, FromId = 0xC0080103,
Alloc = 0xC0200104, Alloc = 0xC0200104,
Free = 0xC0180105,
Param = 0xC00C0109, Param = 0xC00C0109,
GetId = 0xC008010E, GetId = 0xC008010E,
Free = 0xC0180105,
}; };
struct IocCreateParams { struct IocCreateParams {
// Input // Input
u32_le size; u32_le size;
// Output // Output
u32_le handle; u32_le handle;
}; };
static_assert(sizeof(IocCreateParams) == 8, "IocCreateParams has wrong size");
struct IocFromIdParams {
// Input
u32_le id;
// Output
u32_le handle;
};
static_assert(sizeof(IocFromIdParams) == 8, "IocFromIdParams has wrong size");
struct IocAllocParams { struct IocAllocParams {
// Input // Input
@ -81,28 +89,7 @@ private:
INSERT_PADDING_BYTES(7); INSERT_PADDING_BYTES(7);
u64_le addr; u64_le addr;
}; };
static_assert(sizeof(IocAllocParams) == 32, "IocAllocParams has wrong size");
struct IocGetIdParams {
// Output
u32_le id;
// Input
u32_le handle;
};
struct IocFromIdParams {
// Input
u32_le id;
// Output
u32_le handle;
};
struct IocParamParams {
// Input
u32_le handle;
u32_le type;
// Output
u32_le value;
};
struct IocFreeParams { struct IocFreeParams {
u32_le handle; u32_le handle;
@ -113,6 +100,23 @@ private:
}; };
static_assert(sizeof(IocFreeParams) == 24, "IocFreeParams has wrong size"); static_assert(sizeof(IocFreeParams) == 24, "IocFreeParams has wrong size");
struct IocParamParams {
// Input
u32_le handle;
u32_le param;
// Output
u32_le result;
};
static_assert(sizeof(IocParamParams) == 12, "IocParamParams has wrong size");
struct IocGetIdParams {
// Output
u32_le id;
// Input
u32_le handle;
};
static_assert(sizeof(IocGetIdParams) == 8, "IocGetIdParams has wrong size");
u32 IocCreate(const std::vector<u8>& input, std::vector<u8>& output); u32 IocCreate(const std::vector<u8>& input, std::vector<u8>& output);
u32 IocAlloc(const std::vector<u8>& input, std::vector<u8>& output); u32 IocAlloc(const std::vector<u8>& input, std::vector<u8>& output);
u32 IocGetId(const std::vector<u8>& input, std::vector<u8>& output); u32 IocGetId(const std::vector<u8>& input, std::vector<u8>& output);