Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • libcfa/src/concurrency/thread.cfa

    rcd5b58f r25ef81d  
    1010// Created On       : Tue Jan 17 12:27:26 2017
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sat Feb 12 15:24:18 2022
    13 // Update Count     : 66
     12// Last Modified On : Sun Dec 11 20:56:54 2022
     13// Update Count     : 102
    1414//
    1515
     
    2626#include "invoke.h"
    2727
    28 extern uint32_t __global_random_seed, __global_random_prime, __global_random_mask;
     28extern size_t __global_random_seed;
     29extern size_t __global_random_prime;
     30extern bool __global_random_mask;
    2931
    3032#pragma GCC visibility push(default)
     
    4648        rdy_link.next = 0p;
    4749        rdy_link.ts   = MAX;
     50        user_link.next = 0p;
     51        user_link.prev = 0p;
     52        cltr_link.next = 0p;
     53        cltr_link.prev = 0p;
    4854        preferred = ready_queue_new_preferred();
    4955        last_proc = 0p;
    50         random_state = __global_random_mask ? __global_random_prime : __global_random_prime ^ rdtscl();
     56        PRNG_SET_SEED( random_state, __global_random_mask ? __global_random_prime : __global_random_prime ^ rdtscl() );
    5157        #if defined( __CFA_WITH_VERIFY__ )
    5258                executing = 0p;
     
    176182//-----------------------------------------------------------------------------
    177183bool migrate( thread$ * thrd, struct cluster & cl ) {
    178 
    179184        monitor$ * tmon = get_monitor(thrd);
    180185        monitor$ * __monitors[] = { tmon };
    181186        monitor_guard_t __guard = { __monitors, 1 };
    182 
    183 
    184187        {
    185188                // if nothing needs to be done, return false
     
    221224
    222225//-----------------------------------------------------------------------------
    223 #define GENERATOR LCG
    224 
    225 void set_seed( uint32_t seed ) {
    226         uint32_t & state = active_thread()->random_state;
    227         state = __global_random_seed = seed;
    228         GENERATOR( state );
    229         __global_random_prime = state;
     226
     227void set_seed( size_t seed ) {
     228        PRNG_STATE_T & state = active_thread()->random_state;
     229        PRNG_SET_SEED( state, seed );
     230        __global_random_seed = seed;
     231        __global_random_prime = seed;
    230232        __global_random_mask = true;
    231233} // set_seed
    232234
    233 uint32_t prng( void ) {                                                                 // [0,UINT_MAX]
    234         uint32_t & state = active_thread()->random_state;
    235         return GENERATOR( state );
     235size_t prng( void ) {                                                                   // [0,UINT_MAX]
     236        return PRNG_NAME( active_thread()->random_state );
    236237} // prng
    237238
Note: See TracChangeset for help on using the changeset viewer.