1 /// L4Re specifics 2 /// This module contains definitions required by various L4Re libc backends. 3 /// Some of them are formally not part of the libc, but are a dependency of the 4 /// libc and hence we should provide them here. 5 6 pub type l4_umword_t = ::c_ulong; // Unsigned machine word. 7 pub type pthread_t = *mut ::c_void; 8 9 s! { 10 /// CPU sets. 11 pub struct l4_sched_cpu_set_t { 12 // from the L4Re docs 13 /// Combination of granularity and offset. 14 /// 15 /// The granularity defines how many CPUs each bit in map describes. 16 /// The offset is the numer of the first CPU described by the first 17 /// bit in the bitmap. 18 /// offset must be a multiple of 2^graularity. 19 /// 20 /// | MSB | LSB | 21 /// | ---------------- | ------------------- | 22 /// | 8bit granularity | 24bit offset .. | 23 gran_offset: l4_umword_t , 24 /// Bitmap of CPUs. 25 map: l4_umword_t , 26 } 27 } 28 29 #[cfg(target_os = "l4re")] 30 #[allow(missing_debug_implementations)] 31 pub struct pthread_attr_t { 32 pub __detachstate: ::c_int, 33 pub __schedpolicy: ::c_int, 34 pub __schedparam: super::__sched_param, 35 pub __inheritsched: ::c_int, 36 pub __scope: ::c_int, 37 pub __guardsize: ::size_t, 38 pub __stackaddr_set: ::c_int, 39 pub __stackaddr: *mut ::c_void, // better don't use it 40 pub __stacksize: ::size_t, 41 // L4Re specifics 42 pub affinity: l4_sched_cpu_set_t, 43 pub create_flags: ::c_uint, 44 } 45 46 // L4Re requires a min stack size of 64k; that isn't defined in uClibc, but 47 // somewhere in the core libraries. uClibc wants 16k, but that's not enough. 48 pub const PTHREAD_STACK_MIN: usize = 65536; 49