@@ -92,14 +92,12 @@ use ptr;
92
92
use task;
93
93
use vec;
94
94
95
- #[ doc( hidden) ]
96
95
static SPIN_COUNT : uint = 0 ;
97
96
98
97
macro_rules! move_it (
99
98
{ $x: expr } => ( unsafe { let y = * ptr:: addr_of( & ( $x) ) ; y } )
100
99
)
101
100
102
- #[ doc( hidden) ]
103
101
#[ deriving( Eq ) ]
104
102
enum State {
105
103
Empty ,
@@ -124,7 +122,6 @@ pub fn BufferHeader() -> BufferHeader {
124
122
}
125
123
126
124
// This is for protocols to associate extra data to thread around.
127
- #[ doc( hidden) ]
128
125
pub struct Buffer < T > {
129
126
header : BufferHeader ,
130
127
data : T ,
@@ -185,13 +182,11 @@ pub impl PacketHeader {
185
182
}
186
183
}
187
184
188
- #[ doc( hidden) ]
189
185
pub struct Packet < T > {
190
186
header : PacketHeader ,
191
187
mut payload : Option < T > ,
192
188
}
193
189
194
- #[ doc( hidden) ]
195
190
pub trait HasBuffer {
196
191
fn set_buffer ( & self , b : * libc:: c_void ) ;
197
192
}
@@ -202,14 +197,12 @@ impl<T:Owned> HasBuffer for Packet<T> {
202
197
}
203
198
}
204
199
205
- #[ doc( hidden) ]
206
200
pub fn mk_packet < T : Owned > ( ) -> Packet < T > {
207
201
Packet {
208
202
header : PacketHeader ( ) ,
209
203
payload : None ,
210
204
}
211
205
}
212
- #[ doc( hidden) ]
213
206
fn unibuffer < T > ( ) -> ~Buffer < Packet < T > > {
214
207
let b = ~Buffer {
215
208
header : BufferHeader ( ) ,
@@ -225,7 +218,6 @@ fn unibuffer<T>() -> ~Buffer<Packet<T>> {
225
218
b
226
219
}
227
220
228
- #[ doc( hidden) ]
229
221
pub fn packet < T > ( ) -> * Packet < T > {
230
222
let b = unibuffer ( ) ;
231
223
let p = ptr:: addr_of ( & ( b. data ) ) ;
@@ -234,7 +226,6 @@ pub fn packet<T>() -> *Packet<T> {
234
226
p
235
227
}
236
228
237
- #[ doc( hidden) ]
238
229
pub fn entangle_buffer < T : Owned , Tstart : Owned > (
239
230
buffer : ~Buffer < T > ,
240
231
init : & fn ( * libc:: c_void , x : & T ) -> * Packet < Tstart > )
@@ -245,30 +236,6 @@ pub fn entangle_buffer<T:Owned,Tstart:Owned>(
245
236
( SendPacketBuffered ( p) , RecvPacketBuffered ( p) )
246
237
}
247
238
248
- // If I call the rusti versions directly from a polymorphic function,
249
- // I get link errors. This is a bug that needs investigated more.
250
- #[ doc( hidden) ]
251
- pub fn atomic_xchng_rel ( dst : & mut int , src : int ) -> int {
252
- unsafe {
253
- intrinsics:: atomic_xchg_rel ( dst, src)
254
- }
255
- }
256
-
257
- #[ doc( hidden) ]
258
- pub fn atomic_add_acq ( dst : & mut int , src : int ) -> int {
259
- unsafe {
260
- intrinsics:: atomic_xadd_acq ( dst, src)
261
- }
262
- }
263
-
264
- #[ doc( hidden) ]
265
- pub fn atomic_sub_rel ( dst : & mut int , src : int ) -> int {
266
- unsafe {
267
- intrinsics:: atomic_xsub_rel ( dst, src)
268
- }
269
- }
270
-
271
- #[ doc( hidden) ]
272
239
pub fn swap_task ( dst : & mut * rust_task , src : * rust_task ) -> * rust_task {
273
240
// It might be worth making both acquire and release versions of
274
241
// this.
@@ -277,11 +244,9 @@ pub fn swap_task(dst: &mut *rust_task, src: *rust_task) -> *rust_task {
277
244
}
278
245
}
279
246
280
- #[ doc( hidden) ]
281
247
#[ allow( non_camel_case_types) ]
282
248
pub type rust_task = libc:: c_void ;
283
249
284
- #[ doc( hidden) ]
285
250
pub mod rustrt {
286
251
use libc;
287
252
use super :: rust_task;
@@ -303,7 +268,6 @@ pub mod rustrt {
303
268
}
304
269
}
305
270
306
- #[ doc( hidden) ]
307
271
fn wait_event( this : * rust_task ) -> * libc:: c_void {
308
272
unsafe {
309
273
let mut event = ptr:: null ( ) ;
@@ -316,21 +280,18 @@ fn wait_event(this: *rust_task) -> *libc::c_void {
316
280
}
317
281
}
318
282
319
- #[doc(hidden)]
320
283
fn swap_state_acq(dst: &mut State, src: State) -> State {
321
284
unsafe {
322
285
transmute(intrinsics::atomic_xchg_acq(transmute(dst), src as int))
323
286
}
324
287
}
325
288
326
- #[doc(hidden)]
327
289
fn swap_state_rel(dst: &mut State, src: State) -> State {
328
290
unsafe {
329
291
transmute(intrinsics::atomic_xchg_rel(transmute(dst), src as int))
330
292
}
331
293
}
332
294
333
- #[doc(hidden)]
334
295
pub unsafe fn get_buffer<T>(p: *PacketHeader) -> ~Buffer<T> {
335
296
transmute((*p).buf_header())
336
297
}
@@ -348,7 +309,7 @@ impl<T> ::ops::Drop for BufferResource<T> {
348
309
let b = move_it!(self.buffer);
349
310
//let p = ptr::addr_of(*b);
350
311
//error!(" drop %?", p);
351
- let old_count = atomic_sub_rel (&mut b.header.ref_count, 1);
312
+ let old_count = intrinsics::atomic_xsub_rel (&mut b.header.ref_count, 1);
352
313
//let old_count = atomic_xchng_rel(b.header.ref_count, 0);
353
314
if old_count == 1 {
354
315
// The new count is 0.
@@ -365,15 +326,14 @@ impl<T> ::ops::Drop for BufferResource<T> {
365
326
fn BufferResource<T>(b: ~Buffer<T>) -> BufferResource<T> {
366
327
//let p = ptr::addr_of(*b);
367
328
//error!(" take %?", p);
368
- atomic_add_acq (&mut b.header.ref_count, 1);
329
+ unsafe { intrinsics::atomic_xadd_acq (&mut b.header.ref_count, 1) } ;
369
330
370
331
BufferResource {
371
332
// tjc: ????
372
333
buffer: b
373
334
}
374
335
}
375
336
376
- #[doc(hidden)]
377
337
pub fn send<T,Tbuffer>(p: SendPacketBuffered<T,Tbuffer>, payload: T) -> bool {
378
338
let header = p.header();
379
339
let p_ = p.unwrap();
@@ -550,7 +510,6 @@ pub fn peek<T:Owned,Tb:Owned>(p: &RecvPacketBuffered<T, Tb>) -> bool {
550
510
}
551
511
}
552
512
553
- #[doc(hidden)]
554
513
fn sender_terminate<T:Owned>(p: *Packet<T>) {
555
514
let p = unsafe { &*p };
556
515
match swap_state_rel(&mut p.header.state, Terminated) {
@@ -581,7 +540,6 @@ fn sender_terminate<T:Owned>(p: *Packet<T>) {
581
540
}
582
541
}
583
542
584
- #[doc(hidden)]
585
543
fn receiver_terminate<T:Owned>(p: *Packet<T>) {
586
544
let p = unsafe { &*p };
587
545
match swap_state_rel(&mut p.header.state, Terminated) {
@@ -675,7 +633,6 @@ message.
675
633
*/
676
634
pub type SendPacket<T> = SendPacketBuffered<T, Packet<T>>;
677
635
678
- #[doc(hidden)]
679
636
pub fn SendPacket<T>(p: *Packet<T>) -> SendPacket<T> {
680
637
SendPacketBuffered(p)
681
638
}
@@ -746,7 +703,6 @@ pub impl<T,Tbuffer> SendPacketBuffered<T,Tbuffer> {
746
703
/// message.
747
704
pub type RecvPacket<T> = RecvPacketBuffered<T, Packet<T>>;
748
705
749
- #[doc(hidden)]
750
706
pub fn RecvPacket<T>(p: *Packet<T>) -> RecvPacket<T> {
751
707
RecvPacketBuffered(p)
752
708
}
@@ -814,7 +770,6 @@ pub fn RecvPacketBuffered<T,Tbuffer>(p: *Packet<T>)
814
770
}
815
771
}
816
772
817
- #[doc(hidden)]
818
773
pub fn entangle<T>() -> (SendPacket<T>, RecvPacket<T>) {
819
774
let p = packet();
820
775
(SendPacket(p), RecvPacket(p))
@@ -863,7 +818,6 @@ pub fn select2<A:Owned,Ab:Owned,B:Owned,Bb:Owned>(
863
818
}
864
819
}
865
820
866
- #[doc(hidden)]
867
821
pub trait Selectable {
868
822
fn header(&self) -> *PacketHeader;
869
823
}
0 commit comments