Files
clang-p2996/libc/spec/gnu_ext.td
michaelrj-google 9f3854a01f [reland][libc] add epoll_wait functions (#79635)
The epoll_wait functions are syscall wrappers that were requested by
upstream users. This patch adds them, as well as their header and types.

The tests are currently incomplete since they require epoll_create to
properly test epoll_wait. That will be added in a followup patch since
this one is already very large.
2024-01-30 10:07:47 -08:00

289 lines
7.0 KiB
TableGen

def CpuSetT : NamedType<"cpu_set_t">;
def CpuSetPtr : PtrType<CpuSetT>;
def ConstCpuSetPtr : ConstType<CpuSetPtr>;
def QSortRCompareT : NamedType<"__qsortrcompare_t">;
def StructHsearchData : NamedType<"struct hsearch_data">;
def StructHsearchDataPtr : PtrType<StructHsearchData>;
def GnuExtensions : StandardSpec<"GNUExtensions"> {
NamedType CookieIOFunctionsT = NamedType<"cookie_io_functions_t">;
HeaderSpec CType = HeaderSpec<
"ctype.h",
[], // Macros
[], // Types
[], // Enumerations
[
FunctionSpec<
"toascii",
RetValSpec<IntType>,
[ArgSpec<IntType>]
>,
]
>;
HeaderSpec Math = HeaderSpec<
"math.h",
[], // Macros
[], // Types
[], // Enumerations
[
FunctionSpec<
"sincosf",
RetValSpec<VoidType>,
[ArgSpec<FloatType>, ArgSpec<FloatPtr>, ArgSpec<FloatPtr>]
>,
FunctionSpec<"exp10", RetValSpec<DoubleType>, [ArgSpec<DoubleType>]>,
FunctionSpec<"exp10f", RetValSpec<FloatType>, [ArgSpec<FloatType>]>,
]
>;
HeaderSpec Sched = HeaderSpec<
"sched.h",
[], // Macros
[PidT, SizeTType, CpuSetT], // Types
[], // Enumerations
[
FunctionSpec<
"sched_getaffinity",
RetValSpec<IntType>,
[ArgSpec<PidT>, ArgSpec<SizeTType>, ArgSpec<CpuSetPtr>]
>,
FunctionSpec<
"sched_setaffinity",
RetValSpec<IntType>,
[ArgSpec<PidT>, ArgSpec<SizeTType>, ArgSpec<ConstCpuSetPtr>]
>,
]
>;
HeaderSpec String = HeaderSpec<
"string.h",
[], // Macros
[], // Types
[], // Enumerations
[
FunctionSpec<
"memmem",
RetValSpec<VoidPtr>,
[ArgSpec<ConstVoidPtr>, ArgSpec<SizeTType>, ArgSpec<ConstVoidPtr>, ArgSpec<SizeTType>]
>,
FunctionSpec<
"memrchr",
RetValSpec<VoidPtr>,
[ArgSpec<ConstVoidPtr>, ArgSpec<IntType>, ArgSpec<SizeTType>]
>,
FunctionSpec<
"strerror_r",
RetValSpec<CharPtr>,
[ArgSpec<IntType>, ArgSpec<CharPtr>, ArgSpec<SizeTType>]
>,
FunctionSpec<
"strcasestr",
RetValSpec<CharPtr>,
[ArgSpec<ConstCharPtr>, ArgSpec<ConstCharPtr>]
>,
FunctionSpec<
"strchrnul",
RetValSpec<CharPtr>,
[ArgSpec<ConstCharPtr>, ArgSpec<IntType>]
>,
]
>;
HeaderSpec Search = HeaderSpec<
"search.h",
[], // Macros
[
StructHsearchData
],
[], // Enumerations
[
FunctionSpec<
"hcreate_r",
RetValSpec<IntType>,
[
ArgSpec<SizeTType>,
ArgSpec<StructHsearchDataPtr>
]
>,
FunctionSpec<
"hdestroy_r",
RetValSpec<VoidType>,
[
ArgSpec<StructHsearchDataPtr>
]
>,
FunctionSpec<
"hsearch_r",
RetValSpec<IntType>,
[
ArgSpec<EntryType>,
ArgSpec<ActionType>,
ArgSpec<EntryTypePtrPtr>,
ArgSpec<StructHsearchDataPtr>
]
>,
]
>;
HeaderSpec FEnv = HeaderSpec<
"fenv.h",
[], // Macros
[], // Types
[], // Enumerations
[
FunctionSpec<
"fedisableexcept",
RetValSpec<IntType>,
[ArgSpec<IntType>]
>,
FunctionSpec<
"feenableexcept",
RetValSpec<IntType>,
[ArgSpec<IntType>]
>,
FunctionSpec<
"fegetexcept",
RetValSpec<IntType>,
[]
>
]
>;
HeaderSpec StdIO = HeaderSpec<
"stdio.h",
[], // Macros
[CookieIOFunctionsT], // Types
[], // Enumerations
[
FunctionSpec<
"clearerr_unlocked",
RetValSpec<VoidType>,
[ArgSpec<FILEPtr>]
>,
FunctionSpec<
"feof_unlocked",
RetValSpec<IntType>,
[ArgSpec<FILEPtr>]
>,
FunctionSpec<
"ferror_unlocked",
RetValSpec<IntType>,
[ArgSpec<FILEPtr>]
>,
FunctionSpec<
"fopencookie",
RetValSpec<FILEPtr>,
[ArgSpec<VoidPtr>, ArgSpec<ConstCharPtr>, ArgSpec<CookieIOFunctionsT>]
>,
FunctionSpec<
"fread_unlocked",
RetValSpec<SizeTType>,
[ArgSpec<VoidRestrictedPtr>,
ArgSpec<SizeTType>,
ArgSpec<SizeTType>,
ArgSpec<FILERestrictedPtr>]
>,
FunctionSpec<
"fwrite_unlocked",
RetValSpec<SizeTType>,
[ArgSpec<ConstVoidRestrictedPtr>,
ArgSpec<SizeTType>,
ArgSpec<SizeTType>,
ArgSpec<FILERestrictedPtr>]
>,
FunctionSpec<
"fgetc_unlocked",
RetValSpec<IntType>,
[ArgSpec<FILEPtr>]
>,
]
>;
HeaderSpec StdLib = HeaderSpec<
"stdlib.h",
[], // Macros
[QSortRCompareT], // Types
[], // Enumerations
[
FunctionSpec<
"qsort_r",
RetValSpec<VoidType>,
[ArgSpec<VoidPtr>, ArgSpec<SizeTType>, ArgSpec<SizeTType>, ArgSpec<QSortRCompareT>, ArgSpec<VoidPtr>]
>,
]
>;
HeaderSpec PThread = HeaderSpec<
"pthread.h",
[], // Macros
[], // Types
[], // Enumerations
[
FunctionSpec<
"pthread_setname_np",
RetValSpec<IntType>,
[ArgSpec<PThreadTType>, ArgSpec<ConstCharPtr>]
>,
FunctionSpec<
"pthread_getname_np",
RetValSpec<IntType>,
[ArgSpec<PThreadTType>, ArgSpec<CharPtr>, ArgSpec<SizeTType>]
>,
]
>;
HeaderSpec SysAuxv = HeaderSpec<
"sys/auxv.h",
[], // Macros
[], // Types
[], // Enumerations
[
//TODO: Add getauxval here
] // Functions
>;
HeaderSpec SendFile = HeaderSpec<
"sys/sendfile.h",
[], // Macros
[OffTType, SizeTType, SSizeTType,], // Types
[], // Enumerations
[
FunctionSpec<
"sendfile",
RetValSpec<SSizeTType>,
[ArgSpec<IntType>, ArgSpec<IntType>, ArgSpec<OffTPtr>, ArgSpec<SizeTType>]
>,
]
>;
HeaderSpec UniStd = HeaderSpec<
"unistd.h",
[], // Macros
[], // Types
[], // Enumerations
[
FunctionSpec<
"dup2",
RetValSpec<IntType>,
[ArgSpec<IntType>, ArgSpec<IntType>, ArgSpec<IntType>]
>,
]
>;
let Headers = [
CType,
FEnv,
Math,
PThread,
Sched,
SendFile,
SysAuxv,
StdIO,
StdLib,
String,
Search,
UniStd,
];
}