Skip to content

Type aliases

include/types/types.h View source View on GitHub

Time units

ct_strong_int(time_ns, TIME_NS, uint64_t, UINT64_MAX) (4 declarations) source
§ typedef enum : uint64_t time_ns_t
§ TIME_NS_MIN = 0
§ TIME_NS_ZERO = 0
§ TIME_NS_MAX = 0xffffffffffffffff
ct_strong_int(time_us, TIME_US, uint64_t, UINT64_MAX) (4 declarations) source
§ typedef enum : uint64_t time_us_t
§ TIME_US_MIN = 0
§ TIME_US_ZERO = 0
§ TIME_US_MAX = 0xffffffffffffffff
ct_strong_int(time_ms, TIME_MS, uint64_t, UINT64_MAX) (4 declarations) source
§ typedef enum : uint64_t time_ms_t
§ TIME_MS_MIN = 0
§ TIME_MS_ZERO = 0
§ TIME_MS_MAX = 0xffffffffffffffff
ct_strong_int(time_s, TIME_S, uint64_t, UINT64_MAX) (4 declarations) source
§ typedef enum : uint64_t time_s_t
§ TIME_S_MIN = 0
§ TIME_S_ZERO = 0
§ TIME_S_MAX = 0xffffffffffffffff
typedef uint64_t timestamp_t
source

Frequency

ct_strong_int(freq_hz, FREQ_HZ, uint64_t, UINT64_MAX) (4 declarations) source
§ typedef enum : uint64_t freq_hz_t
§ FREQ_HZ_MIN = 0
§ FREQ_HZ_ZERO = 0
§ FREQ_HZ_MAX = 0xffffffffffffffff
ct_strong_int(freq_khz, FREQ_KHZ, uint64_t, UINT64_MAX) (4 declarations) source
§ typedef enum : uint64_t freq_khz_t
§ FREQ_KHZ_MIN = 0
§ FREQ_KHZ_ZERO = 0
§ FREQ_KHZ_MAX = 0xffffffffffffffff
ct_strong_int(freq_mhz, FREQ_MHZ, uint64_t, UINT64_MAX) (4 declarations) source
§ typedef enum : uint64_t freq_mhz_t
§ FREQ_MHZ_MIN = 0
§ FREQ_MHZ_ZERO = 0
§ FREQ_MHZ_MAX = 0xffffffffffffffff
ct_strong_int(freq_ghz, FREQ_GHZ, uint64_t, UINT64_MAX) (4 declarations) source
§ typedef enum : uint64_t freq_ghz_t
§ FREQ_GHZ_MIN = 0
§ FREQ_GHZ_ZERO = 0
§ FREQ_GHZ_MAX = 0xffffffffffffffff
ct_strong_int(sz_kib, SZ_KIB, size_t, SIZE_MAX) (4 declarations) source
Size (binary/IEC units, powers of 1024)
§ typedef enum : size_t sz_kib_t
§ SZ_KIB_MIN = 0
§ SZ_KIB_ZERO = 0
§ SZ_KIB_MAX = 0xffffffffffffffff
ct_strong_int(sz_mib, SZ_MIB, size_t, SIZE_MAX) (4 declarations) source
§ typedef enum : size_t sz_mib_t
§ SZ_MIB_MIN = 0
§ SZ_MIB_ZERO = 0
§ SZ_MIB_MAX = 0xffffffffffffffff
ct_strong_int(sz_gib, SZ_GIB, size_t, SIZE_MAX) (4 declarations) source
§ typedef enum : size_t sz_gib_t
§ SZ_GIB_MIN = 0
§ SZ_GIB_ZERO = 0
§ SZ_GIB_MAX = 0xffffffffffffffff
ct_strong_int(sz_tib, SZ_TIB, size_t, SIZE_MAX) (4 declarations) source
§ typedef enum : size_t sz_tib_t
§ SZ_TIB_MIN = 0
§ SZ_TIB_ZERO = 0
§ SZ_TIB_MAX = 0xffffffffffffffff
ct_strong_int(sz_kb, SZ_KB, size_t, SIZE_MAX) (4 declarations) source
Size (decimal/SI units, powers of 1000)
§ typedef enum : size_t sz_kb_t
§ SZ_KB_MIN = 0
§ SZ_KB_ZERO = 0
§ SZ_KB_MAX = 0xffffffffffffffff
ct_strong_int(sz_mb, SZ_MB, size_t, SIZE_MAX) (4 declarations) source
§ typedef enum : size_t sz_mb_t
§ SZ_MB_MIN = 0
§ SZ_MB_ZERO = 0
§ SZ_MB_MAX = 0xffffffffffffffff
ct_strong_int(sz_gb, SZ_GB, size_t, SIZE_MAX) (4 declarations) source
§ typedef enum : size_t sz_gb_t
§ SZ_GB_MIN = 0
§ SZ_GB_ZERO = 0
§ SZ_GB_MAX = 0xffffffffffffffff
ct_strong_int(sz_tb, SZ_TB, size_t, SIZE_MAX) (4 declarations) source
§ typedef enum : size_t sz_tb_t
§ SZ_TB_MIN = 0
§ SZ_TB_ZERO = 0
§ SZ_TB_MAX = 0xffffffffffffffff
ct_strong_int(sz_b, SZ_B, size_t, SIZE_MAX) (4 declarations) source

Bytes

§ typedef enum : size_t sz_b_t
§ SZ_B_MIN = 0
§ SZ_B_ZERO = 0
§ SZ_B_MAX = 0xffffffffffffffff

Aliases over UNIX identifiers

ct_strong_int(inode, INODE, uint32_t, UINT32_MAX) (4 declarations) source
§ typedef enum : uint32_t inode_t
§ INODE_MIN = 0
§ INODE_ZERO = 0
§ INODE_MAX = 0xffffffff
typedef uint16_t mode_t
source
typedef uint32_t gid_t
source
typedef uint32_t uid_t
source
typedef struct stack_depot_record * stack_handle_t
source

For stack depot: someday will become uint32_t

Refcount

typedef atomic_uint32_t refcount_t
source
typedef atomic_uint32_t mapcount_t
source

Addresses and memory

ct_strong_int(paddr, PADDR, uintptr_t, UINTPTR_MAX) (4 declarations) source
§ typedef enum : uintptr_t paddr_t
§ PADDR_MIN = 0
§ PADDR_ZERO = 0
§ PADDR_MAX = 0xffffffffffffffff
ct_strong_int(vaddr, VADDR, uintptr_t, UINTPTR_MAX) (4 declarations) source
§ typedef enum : uintptr_t vaddr_t
§ VADDR_MIN = 0
§ VADDR_ZERO = 0
§ VADDR_MAX = 0xffffffffffffffff
ct_strong_int(pfn, PFN, uintptr_t, UINTPTR_MAX) (4 declarations) source
§ typedef enum : uintptr_t pfn_t
§ PFN_MIN = 0
§ PFN_ZERO = 0
§ PFN_MAX = 0xffffffffffffffff
ct_strong_int(pgoff, PGOFF, uintptr_t, UINTPTR_MAX) (4 declarations) source
§ typedef enum : uintptr_t pgoff_t
§ PGOFF_MIN = 0
§ PGOFF_ZERO = 0
§ PGOFF_MAX = 0xffffffffffffffff
ct_strong_int(iova, IOVA, uintptr_t, UINTPTR_MAX) (4 declarations) source
§ typedef enum : uintptr_t iova_t
§ IOVA_MIN = 0
§ IOVA_ZERO = 0
§ IOVA_MAX = 0xffffffffffffffff
ct_strong_int(pte, PTE, uint64_t, UINT64_MAX) (4 declarations) source
§ typedef enum : uint64_t pte_t
§ PTE_MIN = 0
§ PTE_ZERO = 0
§ PTE_MAX = 0xffffffffffffffff
typedef uint64_t page_flags_t
source

Processor topology and threading

typedef uint8_t irq_t
source
typedef int8_t cpu_perf_t
source
ct_strong_int(cpu_id, CPU_ID, size_t, SIZE_MAX) (4 declarations) source
§ typedef enum : size_t cpu_id_t
§ CPU_ID_MIN = 0
§ CPU_ID_ZERO = 0
§ CPU_ID_MAX = 0xffffffffffffffff
ct_strong_int(domain_id, DOMAIN_ID, size_t, SIZE_MAX) (4 declarations) source
§ typedef enum : size_t domain_id_t
§ DOMAIN_ID_MIN = 0
§ DOMAIN_ID_ZERO = 0
§ DOMAIN_ID_MAX = 0xffffffffffffffff
ct_strong_int(numa_node, NUMA_NODE, size_t, SIZE_MAX) (4 declarations) source
§ typedef enum : size_t numa_node_t
§ NUMA_NODE_MIN = 0
§ NUMA_NODE_ZERO = 0
§ NUMA_NODE_MAX = 0xffffffffffffffff
ct_strong_int(thread_id, THREAD_ID, size_t, SIZE_MAX) (4 declarations) source
§ typedef enum : size_t thread_id_t
§ THREAD_ID_MIN = 0
§ THREAD_ID_ZERO = 0
§ THREAD_ID_MAX = 0xffffffffffffffff
typedef int32_t nice_t
source
typedef uint32_t thread_prio_t
source

Other types

typedef int64_t fx32_32_t
source
typedef ptrdiff_t ssize_t
source

Larger types

typedef __int128_t int128_t
source
typedef __uint128_t uint128_t
source
typedef struct { … } any_fn_t
source
#define any_fn_erase(addr)
source
Expansion
#define any_fn_erase(addr) \
    ((any_fn_t) {.erased = (typeof(((any_fn_t *) 0)->erased)) (addr)})
#define any_fn_from(fn)
source

Constant expression for a function in static init

Expansion
#define any_fn_from(fn) \
    any_fn_erase( \
        (uintptr_t) (fn) + \
        ct_expr_assert_zero(ct_is_fn_ptr(fn), "`" #fn "` is not a function"))
#define any_fn_to(any, T)
source
Expansion
#define any_fn_to(any, T) \
    (ct_typecheck(any_fn_t, any), \
     (T) ((uintptr_t) (any).erased + \
          ct_expr_assert_zero(ct_is_fn_ptr((T) 0), \
                              "`" #T "` is not a function pointer type")))
#define any_fn_eq(a, b)
source
Expansion
#define any_fn_eq(a, b) \
    (ct_typecheck(any_fn_t, a), ct_typecheck(any_fn_t, b), \
     (a).erased == (b).erased)
#define any_fn_is_null(any)
source
Expansion
#define any_fn_is_null(any) (ct_typecheck(any_fn_t, any), (any).erased == NULL)
#define any_fn_to_data(any)
source

Sneak it through a void * data slot, which is ok on our targets

Expansion
#define any_fn_to_data(any) \
    (ct_typecheck(any_fn_t, any), (void *) (uintptr_t) (any).erased)
#define any_fn_from_data(ptr)
source
Expansion
#define any_fn_from_data(ptr) \
    (ct_typecheck(void *, ptr), any_fn_erase((uintptr_t) (ptr)))
#define CPU_PERF_MAX INT8_MAX
source
#define CPU_PERF_MIN INT8_MIN
source
#define MODE_MAX UINT16_MAX
source
#define MODE_MIN 0
source
#define GID_MAX UINT32_MAX
source
#define GID_MIN 0
source
#define UID_MAX UINT32_MAX
source
#define UID_MIN 0
source
#define STACK_HANDLE_MAX UINT32_MAX
source
#define STACK_HANDLE_MIN 0
source
#define REFCOUNT_MAX UINT32_MAX
source
#define REFCOUNT_MIN 0
source
#define CPU_ID_NONE CPU_ID_MAX
source
#define DOMAIN_ID_NONE DOMAIN_ID_MAX
source
#define THREAD_ID_NONE THREAD_ID_MAX
source
#define PAGE_FLAGS_MAX UINT64_MAX
source
#define PAGE_FLAGS_MIN 0
source
#define THREAD_PRIO_MAX UINT32_MAX
source
#define THREAD_PRIO_MIN 0
source
#define FX32_32_MAX INT64_MAX
source
#define FX32_32_MIN INT64_MIN
source
#define NICE_MAX 19
source
#define NICE_MIN -20
source
#define SSIZE_MAX ((ssize_t) (SIZE_MAX >> 1))
source
#define SSIZE_MIN ((ssize_t) (-SSIZE_MAX - 1))
source
#define INT128_MAX ((int128_t) (~((uint128_t) 0ULL) >> 1))
source

Shift has to come after the complement, because complementing the shifted zero yields all ones, turning it into -1

#define INT128_MIN ((int128_t) (-INT128_MAX - 1))
source
#define UINT128_MAX ((uint128_t) (~((uint128_t) 0ULL)))
source
#define UINT128_MIN ((uint128_t) 0ULL)
source