Ignore:
File:
1 edited

Legend:

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

    r25ef81d rcd5b58f  
    1010// Created On       : Tue Jan 17 12:27:26 2017
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sun Dec 11 20:56:54 2022
    13 // Update Count     : 102
     12// Last Modified On : Sat Feb 12 15:24:18 2022
     13// Update Count     : 66
    1414//
    1515
     
    2626#include "invoke.h"
    2727
    28 extern size_t __global_random_seed;
    29 extern size_t __global_random_prime;
    30 extern bool __global_random_mask;
     28extern uint32_t __global_random_seed, __global_random_prime, __global_random_mask;
    3129
    3230#pragma GCC visibility push(default)
     
    4846        rdy_link.next = 0p;
    4947        rdy_link.ts   = MAX;
    50         user_link.next = 0p;
    51         user_link.prev = 0p;
    52         cltr_link.next = 0p;
    53         cltr_link.prev = 0p;
    5448        preferred = ready_queue_new_preferred();
    5549        last_proc = 0p;
    56         PRNG_SET_SEED( random_state, __global_random_mask ? __global_random_prime : __global_random_prime ^ rdtscl() );
     50        random_state = __global_random_mask ? __global_random_prime : __global_random_prime ^ rdtscl();
    5751        #if defined( __CFA_WITH_VERIFY__ )
    5852                executing = 0p;
     
    182176//-----------------------------------------------------------------------------
    183177bool migrate( thread$ * thrd, struct cluster & cl ) {
     178
    184179        monitor$ * tmon = get_monitor(thrd);
    185180        monitor$ * __monitors[] = { tmon };
    186181        monitor_guard_t __guard = { __monitors, 1 };
     182
     183
    187184        {
    188185                // if nothing needs to be done, return false
     
    224221
    225222//-----------------------------------------------------------------------------
    226 
    227 void 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;
     223#define GENERATOR LCG
     224
     225void 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;
    232230        __global_random_mask = true;
    233231} // set_seed
    234232
    235 size_t prng( void ) {                                                                   // [0,UINT_MAX]
    236         return PRNG_NAME( active_thread()->random_state );
     233uint32_t prng( void ) {                                                                 // [0,UINT_MAX]
     234        uint32_t & state = active_thread()->random_state;
     235        return GENERATOR( state );
    237236} // prng
    238237
Note: See TracChangeset for help on using the changeset viewer.