blob: bb2d1371faa68529a77bab2b1bb63cd137bdfae9 [file] [log] [blame]
/**
* D header file for GNU/Linux.
*
* License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0)
* Authors: Nemanja Boric
*/
module core.sys.linux.sys.eventfd;
version (linux):
extern (C):
@nogc:
nothrow:
version (ARM) version = ARM_Any;
version (AArch64) version = ARM_Any;
version (HPPA) version = HPPA_Any;
version (MIPS32) version = MIPS_Any;
version (MIPS64) version = MIPS_Any;
version (PPC) version = PPC_Any;
version (PPC64) version = PPC_Any;
version (RISCV32) version = RISCV_Any;
version (RISCV64) version = RISCV_Any;
version (S390) version = IBMZ_Any;
version (SPARC) version = SPARC_Any;
version (SPARC64) version = SPARC_Any;
version (SystemZ) version = IBMZ_Any;
version (X86) version = X86_Any;
version (X86_64) version = X86_Any;
import core.stdc.stdint: uint64_t;
/// Type for the event counter
alias uint64_t eventfd_t;
/* Return file descriptor for generic event channel. Set initial
value to count. */
int eventfd (uint count, int flags);
/* Read event counter and possibly wait for events. */
int eventfd_read (int fd, eventfd_t* value);
/* Increment event counter. */
int eventfd_write (int fd, eventfd_t value);
version (CRuntime_UClibc)
{
version (MIPS_Any)
{
enum EFD_SEMAPHORE = 1;
enum EFD_CLOEXEC = 0x80000; // octal!02000000
enum EFD_NONBLOCK = 0x80; // octal!00000200
}
else version (SPARC_Any)
{
enum EFD_SEMAPHORE = 1;
enum EFD_CLOEXEC = 0x400000;
enum EFD_NONBLOCK = 0x004000;
}
else
{
enum EFD_SEMAPHORE = 1;
enum EFD_CLOEXEC = 0x80000; // octal!02000000
enum EFD_NONBLOCK = 0x800; // octal!00004000
}
}
else version (X86_Any)
{
enum EFD_SEMAPHORE = 1;
enum EFD_CLOEXEC = 0x80000; // octal!2000000
enum EFD_NONBLOCK = 0x800; // octal!4000
}
else version (HPPA_Any)
{
enum EFD_SEMAPHORE = 1;
enum EFD_CLOEXEC = 0x200000; // octal!10000000
enum EFD_NONBLOCK = 0x10004; // octal!00200004
}
else version (MIPS_Any)
{
enum EFD_SEMAPHORE = 1;
enum EFD_CLOEXEC = 0x80000; // octal!2000000
enum EFD_NONBLOCK = 0x80; // octal!200
}
else version (PPC_Any)
{
enum EFD_SEMAPHORE = 1;
enum EFD_CLOEXEC = 0x80000; // octal!2000000
enum EFD_NONBLOCK = 0x800; // octal!4000
}
else version (ARM_Any)
{
enum EFD_SEMAPHORE = 1;
enum EFD_CLOEXEC = 0x80000; // octal!2000000
enum EFD_NONBLOCK = 0x800; // octal!4000
}
else version (RISCV_Any)
{
enum EFD_SEMAPHORE = 1;
enum EFD_CLOEXEC = 0x80000; // octal!2000000
enum EFD_NONBLOCK = 0x800; // octal!4000
}
else version (SPARC_Any)
{
enum EFD_SEMAPHORE = 1;
enum EFD_CLOEXEC = 0x80000; // octal!2000000
enum EFD_NONBLOCK = 0x800; // octal!4000
}
else version (IBMZ_Any)
{
enum EFD_SEMAPHORE = 1;
enum EFD_CLOEXEC = 0x80000; // octal!2000000
enum EFD_NONBLOCK = 0x800; // octal!4000
}
else version (LoongArch64)
{
enum EFD_SEMAPHORE = 1;
enum EFD_CLOEXEC = 0x80000; // octal!2000000
enum EFD_NONBLOCK = 0x800; // octal!4000
}
else
static assert(0, "unimplemented");