@@ -254,53 +254,61 @@ mod os {
254
254
mod os {
255
255
use libc;
256
256
257
- // size of the type minus width of the magic int field
257
+ // size of the type minus width of the magic and alignment field
258
258
#[ cfg( target_arch = "x86_64" ) ]
259
- const __PTHREAD_MUTEX_SIZE__: usize = 48 - 4 ;
259
+ const __PTHREAD_MUTEX_SIZE__: usize = 48 - 4 - 8 ;
260
260
261
261
#[ cfg( target_arch = "x86_64" ) ]
262
- const __PTHREAD_COND_SIZE__ : usize = 40 - 4 ;
262
+ const __PTHREAD_MUTEXATTR_SIZE__ : usize = 16 - 8 ; // no magic field
263
263
264
264
#[ cfg( target_arch = "x86_64" ) ]
265
- const __PTHREAD_RWLOCK_SIZE__: usize = 64 - 4 ;
265
+ const __PTHREAD_COND_SIZE__: usize = 40 - 4 - 8 ;
266
+
267
+ #[ cfg( target_arch = "x86_64" ) ]
268
+ const __PTHREAD_RWLOCK_SIZE__: usize = 64 - 4 - 8 ;
266
269
267
270
const _PTHREAD_MUTEX_MAGIC_INIT: libc:: c_uint = 0x33330003 ;
268
271
const _PTHREAD_COND_MAGIC_INIT: libc:: c_uint = 0x55550005 ;
269
272
const _PTHREAD_RWLOCK_MAGIC_INIT: libc:: c_uint = 0x99990009 ;
270
273
271
- // note the actual structs are smaller
272
-
273
- #[ repr( C , packed) ]
274
+ #[ repr( C ) ]
274
275
pub struct pthread_mutex_t {
275
276
__magic : libc:: c_uint ,
276
277
__opaque : [ u8 ; __PTHREAD_MUTEX_SIZE__] ,
278
+ __align : libc:: c_longlong ,
277
279
}
278
- #[ repr( C , packed ) ]
280
+ #[ repr( C ) ]
279
281
pub struct pthread_mutexattr_t {
280
- __opaque : [ u8 ; 16 ] ,
282
+ __opaque : [ u8 ; __PTHREAD_MUTEXATTR_SIZE__] ,
283
+ __align : libc:: c_longlong ,
281
284
}
282
- #[ repr( C , packed ) ]
285
+ #[ repr( C ) ]
283
286
pub struct pthread_cond_t {
284
287
__magic : libc:: c_uint ,
285
288
__opaque : [ u8 ; __PTHREAD_COND_SIZE__] ,
289
+ __align : libc:: c_longlong ,
286
290
}
287
- #[ repr( C , packed ) ]
291
+ #[ repr( C ) ]
288
292
pub struct pthread_rwlock_t {
289
293
__magic : libc:: c_uint ,
290
294
__opaque : [ u8 ; __PTHREAD_RWLOCK_SIZE__] ,
295
+ __align : libc:: c_longlong ,
291
296
}
292
297
293
298
pub const PTHREAD_MUTEX_INITIALIZER : pthread_mutex_t = pthread_mutex_t {
294
299
__magic : _PTHREAD_MUTEX_MAGIC_INIT,
295
300
__opaque : [ 0 ; __PTHREAD_MUTEX_SIZE__] ,
301
+ __align : 0 ,
296
302
} ;
297
303
pub const PTHREAD_COND_INITIALIZER : pthread_cond_t = pthread_cond_t {
298
304
__magic : _PTHREAD_COND_MAGIC_INIT,
299
305
__opaque : [ 0 ; __PTHREAD_COND_SIZE__] ,
306
+ __align : 0 ,
300
307
} ;
301
308
pub const PTHREAD_RWLOCK_INITIALIZER : pthread_rwlock_t = pthread_rwlock_t {
302
309
__magic : _PTHREAD_RWLOCK_MAGIC_INIT,
303
310
__opaque : [ 0 ; __PTHREAD_RWLOCK_SIZE__] ,
311
+ __align : 0 ,
304
312
} ;
305
313
306
314
pub const PTHREAD_MUTEX_RECURSIVE : libc:: c_int = 2 ;
0 commit comments