2 * Copyright 2004-2009, Ingo Weinhold, ingo_weinhold@gmx.de.
3 * Distributed under the terms of the MIT License.
9 extern const char* const kReturnTypeAlignmentType
;
10 extern const char* const kParameterAlignmentType
;
11 extern const int kReturnTypeAlignmentSize
;
12 extern const int kParameterAlignmentSize
;
18 Type(const char* name
, int size
,
20 const char* alignmentTypeName
);
23 const char* TypeName() const { return fName
; }
24 int Size() const { return fSize
; }
25 int UsedSize() const { return fUsedSize
; }
26 const char* AlignmentTypeName() const
27 { return fAlignmentType
; }
33 const char* fAlignmentType
;
37 class Parameter
: public Type
{
39 Parameter(const char* typeName
,
40 const char* parameterName
, int size
,
41 int usedSize
, int offset
,
42 const char* alignmentTypeName
);
45 const char* ParameterName() const { return fParameterName
; }
46 int Offset() const { return fOffset
; }
49 const char* fParameterName
;
56 Syscall(const char* name
,
57 const char* kernelName
);
60 const char* Name() const { return fName
; }
61 const char* KernelName() const { return fKernelName
; }
62 Type
* ReturnType() const { return fReturnType
; }
64 int CountParameters() const;
65 Parameter
* ParameterAt(int index
) const;
66 Parameter
* LastParameter() const;
68 void SetReturnType(int size
, const char* name
);
69 Type
* SetReturnType(const char* name
, int size
,
71 const char* alignmentTypeName
);
72 void AddParameter(int size
, const char* typeName
,
73 const char* parameterName
);
74 Parameter
* AddParameter(const char* typeName
,
75 const char* parameterName
, int size
,
76 int usedSize
, int offset
,
77 const char* alignmentTypeName
);
80 struct ParameterVector
;
83 const char* fKernelName
;
85 ParameterVector
* fParameters
;
94 static SyscallVector
* Create();
96 int CountSyscalls() const;
97 Syscall
* SyscallAt(int index
) const;
99 Syscall
* CreateSyscall(const char* name
,
100 const char* kernelName
);
103 struct _SyscallVector
;
105 _SyscallVector
* fSyscalls
;
108 extern SyscallVector
* create_syscall_vector();
111 #endif // GENSYSCALLS_H