diff options
author | Daniel Mueller <deso@posteo.net> | 2017-09-16 08:42:30 -0700 |
---|---|---|
committer | Daniel Mueller <deso@posteo.net> | 2017-09-16 08:42:30 -0700 |
commit | bcaabae7c22d27fdbb07ea6009a6f4a9c3672fa2 (patch) | |
tree | e7470179e1bfb3fff279450e402ddcaf038ae086 /libc/src/unix/uclibc/x86_64/l4re.rs | |
parent | ab3c2a935b1ba655de2f3fec35da2c14b69966dc (diff) | |
download | nitrocli-bcaabae7c22d27fdbb07ea6009a6f4a9c3672fa2.tar.gz nitrocli-bcaabae7c22d27fdbb07ea6009a6f4a9c3672fa2.tar.bz2 |
Update libc crate to 0.2.30
Import subrepo libc/:libc at 3520512a8c9cb55661910318a6fb169a75c02a59
Diffstat (limited to 'libc/src/unix/uclibc/x86_64/l4re.rs')
-rw-r--r-- | libc/src/unix/uclibc/x86_64/l4re.rs | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/libc/src/unix/uclibc/x86_64/l4re.rs b/libc/src/unix/uclibc/x86_64/l4re.rs new file mode 100644 index 0000000..f047a82 --- /dev/null +++ b/libc/src/unix/uclibc/x86_64/l4re.rs @@ -0,0 +1,46 @@ +/// L4Re specifics +/// This module contains definitions required by various L4Re libc backends. +/// Some of them are formally not part of the libc, but are a dependency of the +/// libc and hence we should provide them here. + +pub type l4_umword_t = ::c_ulong; // Unsigned machine word. + +s! { + /// CPU sets. + pub struct l4_sched_cpu_set_t { + // from the L4Re docs + /// Combination of granularity and offset. + /// + /// The granularity defines how many CPUs each bit in map describes. + /// The offset is the numer of the first CPU described by the first + /// bit in the bitmap. + /// offset must be a multiple of 2^graularity. + /// + /// | MSB | LSB | + /// | ---------------- | ------------------- | + /// | 8bit granularity | 24bit offset .. | + gran_offset: l4_umword_t , + /// Bitmap of CPUs. + map: l4_umword_t , + } +} + +#[cfg(target_os = "l4re")] +pub struct pthread_attr_t { + pub __detachstate: ::c_int, + pub __schedpolicy: ::c_int, + pub __schedparam: super::__sched_param, + pub __inheritsched: ::c_int, + pub __scope: ::c_int, + pub __guardsize: ::size_t, + pub __stackaddr_set: ::c_int, + pub __stackaddr: *mut ::c_void, // better don't use it + pub __stacksize: ::size_t, + // L4Re specifics + pub affinity: l4_sched_cpu_set_t, + pub create_flags: ::c_uint, +} + +// L4Re requires a min stack size of 64k; that isn't defined in uClibc, but +// somewhere in the core libraries. uClibc wants 16k, but that's not enough. +pub const PTHREAD_STACK_MIN: usize = 65536; |