Changeset cc7bbe6 for libcfa/src/stdlib.hfa
- Timestamp:
- Feb 23, 2022, 11:24:34 AM (4 years ago)
- Branches:
- ADT, ast-experimental, enum, master, pthread-emulation, qualifiedEnum
- Children:
- 08ed947
- Parents:
- f5a51db (diff), 3a038fa (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the(diff)
links above to see all the changes relative to each parent. - File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
libcfa/src/stdlib.hfa
rf5a51db rcc7bbe6 10 10 // Created On : Thu Jan 28 17:12:35 2016 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Thu Jan 13 21:34:46202213 // Update Count : 6 3612 // Last Modified On : Sat Feb 12 17:22:25 2022 13 // Update Count : 643 14 14 // 15 15 … … 18 18 #include "bits/defs.hfa" // OPTIONAL_THREAD 19 19 #include "bits/align.hfa" // libAlign 20 #include "bits/random.hfa" // prng 20 21 21 22 #include <stdlib.h> // *alloc, strto*, ato* … … 208 209 209 210 forall( TT... | { T * alloc_internal$( void *, T *, size_t, size_t, S_fill(T), TT ); } ) { 210 T * alloc_internal$( void * , T * Realloc, size_t Align, size_t Dim, S_fill(T) Fill, T_resize Resize, TT rest) {211 T * alloc_internal$( void * , T * , size_t Align, size_t Dim, S_fill(T) Fill, T_resize Resize, TT rest) { 211 212 return alloc_internal$( Resize, (T*)0p, Align, Dim, Fill, rest); 212 213 } 213 214 214 T * alloc_internal$( void * Resize, T * , size_t Align, size_t Dim, S_fill(T) Fill, S_realloc(T) Realloc, TT rest) {215 T * alloc_internal$( void * , T * , size_t Align, size_t Dim, S_fill(T) Fill, S_realloc(T) Realloc, TT rest) { 215 216 return alloc_internal$( (void*)0p, Realloc, Align, Dim, Fill, rest); 216 217 } … … 388 389 // Declaration : 389 390 // PRNG sprng = { 1009 } - set starting seed versus random seed 390 // 391 // 391 392 // Interface : 392 393 // set_seed( sprng, 1009 ) - set starting seed for ALL kernel threads versus random seed … … 410 411 411 412 void set_seed( PRNG & prng, uint32_t seed_ ); 412 uint32_t prng( PRNG & prng ) __attribute__(( warn_unused_result )); // [0,UINT_MAX]413 413 static inline { 414 void ?{}( PRNG & prng ) { set_seed( prng, rdtscl() ); }// random seed415 void ?{}( PRNG & prng, uint32_t seed ) {set_seed( prng, seed ); } // fixed seed414 void ?{}( PRNG & prng ) with( prng ) { callcnt = 0; set_seed( prng, rdtscl() ); } // random seed 415 void ?{}( PRNG & prng, uint32_t seed ) with( prng ) { callcnt = 0; set_seed( prng, seed ); } // fixed seed 416 416 uint32_t get_seed( PRNG & prng ) __attribute__(( warn_unused_result )) with( prng ) { return seed; } // get seed 417 uint32_t prng( PRNG & prng ) __attribute__(( warn_unused_result )) with( prng ) { callcnt += 1; return LCG( state ); } // [0,UINT_MAX] 417 418 uint32_t prng( PRNG & prng, uint32_t u ) __attribute__(( warn_unused_result )) { return prng( prng ) % u; } // [0,u) 418 419 uint32_t prng( PRNG & prng, uint32_t l, uint32_t u ) __attribute__(( warn_unused_result )) { return prng( prng, u - l + 1 ) + l; } // [l,u]
Note:
See TracChangeset
for help on using the changeset viewer.