      1
      2
      3
      4
      5
      6
      7
      8
      9
     10
     11
     12
     13
     14
     15
     16
     17
     18
     19
     20
     21
     22
     23
     24
     25
     26
     27
     28
     29
     30
     31
     32
     33
     34
     35
     36
     37
     38
     39
     40
     41
     42
     43
     44
     45
     46
     47
     48
     49
     50
     51
     52
     53
     54
     55
     56
     57
     58
     59
     60
     61
     62
     63
     64
     65
     66
     67
     68
     69
     70
     71
     72
     73
     74
     75
     76
     77
     78
     79
     80
     81
     82
     83
     84
     85
     86
     87
     88
     89
     90
     91
     92
     93
     94
     95
     96
     97
     98
     99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136

    //! x86_64-specific definitions for 64-bit linux-like values

    pub type c_char = i8;
    pub type wchar_t = i32;
    pub type nlink_t = u64;
    pub type blksize_t = i64;
    pub type greg_t = i64;

    s! {
        pub struct stat {
            pub st_dev: ::dev_t,
            pub st_ino: ::ino_t,
            pub st_nlink: ::nlink_t,
            pub st_mode: ::mode_t,
            pub st_uid: ::uid_t,
            pub st_gid: ::gid_t,
            __pad0: ::c_int,
            pub st_rdev: ::dev_t,
            pub st_size: ::off_t,
            pub st_blksize: ::blksize_t,
            pub st_blocks: ::blkcnt_t,
            pub st_atime: ::time_t,
            pub st_atime_nsec: ::c_long,
            pub st_mtime: ::time_t,
            pub st_mtime_nsec: ::c_long,
            pub st_ctime: ::time_t,
            pub st_ctime_nsec: ::c_long,
            __unused: [::c_long; 3],
        }

        pub struct stat64 {
            pub st_dev: ::dev_t,
            pub st_ino: ::ino64_t,
            pub st_nlink: ::nlink_t,
            pub st_mode: ::mode_t,
            pub st_uid: ::uid_t,
            pub st_gid: ::gid_t,
            __pad0: ::c_int,
            pub st_rdev: ::dev_t,
            pub st_size: ::off_t,
            pub st_blksize: ::blksize_t,
            pub st_blocks: ::blkcnt64_t,
            pub st_atime: ::time_t,
            pub st_atime_nsec: ::c_long,
            pub st_mtime: ::time_t,
            pub st_mtime_nsec: ::c_long,
            pub st_ctime: ::time_t,
            pub st_ctime_nsec: ::c_long,
            __reserved: [::c_long; 3],
        }

        pub struct pthread_attr_t {
            __size: [u64; 7]
        }

        pub struct _libc_fpxreg {
            pub significand: [u16; 4],
            pub exponent: u16,
            __private: [u16; 3],
        }

        pub struct _libc_xmmreg {
            pub element: [u32; 4],
        }

        pub struct _libc_fpstate {
            pub cwd: u16,
            pub swd: u16,
            pub ftw: u16,
            pub fop: u16,
            pub rip: u64,
            pub rdp: u64,
            pub mxcsr: u32,
            pub mxcr_mask: u32,
            pub _st: [_libc_fpxreg; 8],
            pub _xmm: [_libc_xmmreg; 16],
            __private: [u64; 12],
        }

        pub struct mcontext_t {
            pub gregs: [greg_t; 23],
            pub fpregs: *mut _libc_fpstate,
            __private: [u64; 8],
        }

        pub struct ucontext_t {
            pub uc_flags: ::c_ulong,
            pub uc_link: *mut ucontext_t,
            pub uc_stack: ::stack_t,
            pub uc_mcontext: mcontext_t,
            pub uc_sigmask: ::sigset_t,
            __private: [u8; 512],
        }
    }

    pub const __SIZEOF_PTHREAD_MUTEX_T: usize = 40;
    pub const __SIZEOF_PTHREAD_MUTEXATTR_T: usize = 4;

    pub const O_DIRECT: ::c_int = 0x4000;
    pub const O_DIRECTORY: ::c_int = 0x10000;
    pub const O_NOFOLLOW: ::c_int = 0x20000;

    pub const MAP_LOCKED: ::c_int = 0x02000;
    pub const MAP_NORESERVE: ::c_int = 0x04000;
    pub const MAP_32BIT: ::c_int = 0x0040;

    pub const EDEADLOCK: ::c_int = 35;

    pub const SO_PEERCRED: ::c_int = 17;
    pub const SO_RCVLOWAT: ::c_int = 18;
    pub const SO_SNDLOWAT: ::c_int = 19;
    pub const SO_RCVTIMEO: ::c_int = 20;
    pub const SO_SNDTIMEO: ::c_int = 21;

    pub const FIOCLEX: ::c_ulong = 0x5451;
    pub const FIONBIO: ::c_ulong = 0x5421;

    pub const PTRACE_GETFPREGS: ::c_uint = 14;
    pub const PTRACE_SETFPREGS: ::c_uint = 15;
    pub const PTRACE_GETFPXREGS: ::c_uint = 18;
    pub const PTRACE_SETFPXREGS: ::c_uint = 19;
    pub const PTRACE_GETREGS: ::c_uint = 12;
    pub const PTRACE_SETREGS: ::c_uint = 13;

    pub const SYS_gettid: ::c_long = 186;
    pub const SYS_perf_event_open: ::c_long = 298;

    extern {
        pub fn getcontext(ucp: *mut ucontext_t) -> ::c_int;
        pub fn setcontext(ucp: *const ucontext_t) -> ::c_int;
        pub fn makecontext(ucp: *mut ucontext_t,
                           func:  extern fn (),
                           argc: ::c_int, ...);
        pub fn swapcontext(uocp: *mut ucontext_t,
                           ucp: *const ucontext_t) -> ::c_int;
    }

# Help

## Keyboard Shortcuts

?
  Show this help dialog
S
  Focus the search field
⇤
  Move up in search results
⇥
  Move down in search results
⏎
  Go to active search result
+
  Collapse/expand all sections

## Search Tricks

Prefix searches with a type followed by a colon (e.g. `fn:`) to restrict the search to a given type.

Accepted types are: `fn`, `mod`, `struct`, `enum`, `trait`, `type`, `macro`, and `const`.

Search functions by type signature (e.g. `vec -> usize` or `* -> vec`)