xref: /rust-libc-0.2.174/src/fuchsia/x86_64.rs (revision c04c92ed)
1 use crate::off_t;
2 use crate::prelude::*;
3 
4 pub type wchar_t = i32;
5 pub type nlink_t = u64;
6 pub type blksize_t = c_long;
7 pub type __u64 = c_ulonglong;
8 
9 s! {
10     pub struct stat {
11         pub st_dev: crate::dev_t,
12         pub st_ino: crate::ino_t,
13         pub st_nlink: crate::nlink_t,
14         pub st_mode: crate::mode_t,
15         pub st_uid: crate::uid_t,
16         pub st_gid: crate::gid_t,
17         __pad0: c_int,
18         pub st_rdev: crate::dev_t,
19         pub st_size: off_t,
20         pub st_blksize: crate::blksize_t,
21         pub st_blocks: crate::blkcnt_t,
22         pub st_atime: crate::time_t,
23         pub st_atime_nsec: c_long,
24         pub st_mtime: crate::time_t,
25         pub st_mtime_nsec: c_long,
26         pub st_ctime: crate::time_t,
27         pub st_ctime_nsec: c_long,
28         __unused: [c_long; 3],
29     }
30 
31     pub struct stat64 {
32         pub st_dev: crate::dev_t,
33         pub st_ino: crate::ino64_t,
34         pub st_nlink: crate::nlink_t,
35         pub st_mode: crate::mode_t,
36         pub st_uid: crate::uid_t,
37         pub st_gid: crate::gid_t,
38         __pad0: c_int,
39         pub st_rdev: crate::dev_t,
40         pub st_size: off_t,
41         pub st_blksize: crate::blksize_t,
42         pub st_blocks: crate::blkcnt64_t,
43         pub st_atime: crate::time_t,
44         pub st_atime_nsec: c_long,
45         pub st_mtime: crate::time_t,
46         pub st_mtime_nsec: c_long,
47         pub st_ctime: crate::time_t,
48         pub st_ctime_nsec: c_long,
49         __reserved: [c_long; 3],
50     }
51 
52     pub struct mcontext_t {
53         __private: [u64; 32],
54     }
55 
56     pub struct ipc_perm {
57         pub __ipc_perm_key: crate::key_t,
58         pub uid: crate::uid_t,
59         pub gid: crate::gid_t,
60         pub cuid: crate::uid_t,
61         pub cgid: crate::gid_t,
62         pub mode: crate::mode_t,
63         pub __seq: c_int,
64         __unused1: c_long,
65         __unused2: c_long,
66     }
67 }
68 
69 s_no_extra_traits! {
70     pub struct ucontext_t {
71         pub uc_flags: c_ulong,
72         pub uc_link: *mut ucontext_t,
73         pub uc_stack: crate::stack_t,
74         pub uc_mcontext: mcontext_t,
75         pub uc_sigmask: crate::sigset_t,
76         __private: [u8; 512],
77     }
78 }
79 
80 cfg_if! {
81     if #[cfg(feature = "extra_traits")] {
82         impl PartialEq for ucontext_t {
83             fn eq(&self, other: &ucontext_t) -> bool {
84                 self.uc_flags == other.uc_flags
85                     && self.uc_link == other.uc_link
86                     && self.uc_stack == other.uc_stack
87                     && self.uc_mcontext == other.uc_mcontext
88                     && self.uc_sigmask == other.uc_sigmask
89                     && self
90                         .__private
91                         .iter()
92                         .zip(other.__private.iter())
93                         .all(|(a, b)| a == b)
94             }
95         }
96         impl Eq for ucontext_t {}
97         impl hash::Hash for ucontext_t {
98             fn hash<H: hash::Hasher>(&self, state: &mut H) {
99                 self.uc_flags.hash(state);
100                 self.uc_link.hash(state);
101                 self.uc_stack.hash(state);
102                 self.uc_mcontext.hash(state);
103                 self.uc_sigmask.hash(state);
104                 self.__private.hash(state);
105             }
106         }
107     }
108 }
109 
110 // offsets in user_regs_structs, from sys/reg.h
111 pub const R15: c_int = 0;
112 pub const R14: c_int = 1;
113 pub const R13: c_int = 2;
114 pub const R12: c_int = 3;
115 pub const RBP: c_int = 4;
116 pub const RBX: c_int = 5;
117 pub const R11: c_int = 6;
118 pub const R10: c_int = 7;
119 pub const R9: c_int = 8;
120 pub const R8: c_int = 9;
121 pub const RAX: c_int = 10;
122 pub const RCX: c_int = 11;
123 pub const RDX: c_int = 12;
124 pub const RSI: c_int = 13;
125 pub const RDI: c_int = 14;
126 pub const ORIG_RAX: c_int = 15;
127 pub const RIP: c_int = 16;
128 pub const CS: c_int = 17;
129 pub const EFLAGS: c_int = 18;
130 pub const RSP: c_int = 19;
131 pub const SS: c_int = 20;
132 pub const FS_BASE: c_int = 21;
133 pub const GS_BASE: c_int = 22;
134 pub const DS: c_int = 23;
135 pub const ES: c_int = 24;
136 pub const FS: c_int = 25;
137 pub const GS: c_int = 26;
138 
139 pub const MAP_32BIT: c_int = 0x0040;
140 
141 pub const SIGSTKSZ: size_t = 8192;
142 pub const MINSIGSTKSZ: size_t = 2048;
143