Monero
Classes | Macros | Typedefs | Functions | Variables
rx-slow-hash.c File Reference
#include <assert.h>
#include <stddef.h>
#include <stdint.h>
#include <stdbool.h>
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <limits.h>
#include "randomx.h"
#include "c_threads.h"
#include "hash-ops.h"
#include "misc_log_ex.h"
Include dependency graph for rx-slow-hash.c:

Classes

struct  rx_state
 
struct  seedinfo
 

Macros

#define RX_LOGCAT   "randomx"
 
#define THREADV   __thread
 
#define SEEDHASH_EPOCH_BLOCKS   2048 /* Must be same as BLOCKS_SYNCHRONIZING_MAX_COUNT in cryptonote_config.h */
 
#define SEEDHASH_EPOCH_LAG   64
 

Typedefs

typedef struct rx_state rx_state
 
typedef struct seedinfo seedinfo
 

Functions

static void local_abort (const char *msg)
 
static int disabled_flags (void)
 
static int enabled_flags (void)
 
static int is_power_of_2 (uint64_t n)
 
static int get_seedhash_epoch_lag (void)
 
static unsigned int get_seedhash_epoch_blocks (void)
 
void rx_reorg (const uint64_t split_height)
 
uint64_t rx_seedheight (const uint64_t height)
 
void rx_seedheights (const uint64_t height, uint64_t *seedheight, uint64_t *nextheight)
 
static CTHR_THREAD_RTYPE rx_seedthread (void *arg)
 
static void rx_initdata (randomx_cache *rs_cache, const int miners, const uint64_t seedheight)
 
void rx_slow_hash (const uint64_t mainheight, const uint64_t seedheight, const char *seedhash, const void *data, size_t length, char *hash, int miners, int is_alt)
 
void rx_slow_hash_allocate_state (void)
 
void rx_slow_hash_free_state (void)
 
void rx_stop_mining (void)
 

Variables

static CTHR_MUTEX_TYPE rx_mutex = CTHR_MUTEX_INIT
 
static CTHR_MUTEX_TYPE rx_dataset_mutex = CTHR_MUTEX_INIT
 
static rx_state rx_s [2] = {{CTHR_MUTEX_INIT,{0},0,0},{CTHR_MUTEX_INIT,{0},0,0}}
 
static randomx_dataset * rx_dataset
 
static int rx_dataset_nomem
 
static uint64_t rx_dataset_height
 
static THREADV randomx_vm * rx_vm = NULL
 

Macro Definition Documentation

◆ RX_LOGCAT

#define RX_LOGCAT   "randomx"

◆ SEEDHASH_EPOCH_BLOCKS

#define SEEDHASH_EPOCH_BLOCKS   2048 /* Must be same as BLOCKS_SYNCHRONIZING_MAX_COUNT in cryptonote_config.h */

◆ SEEDHASH_EPOCH_LAG

#define SEEDHASH_EPOCH_LAG   64

◆ THREADV

#define THREADV   __thread

Typedef Documentation

◆ rx_state

typedef struct rx_state rx_state

◆ seedinfo

typedef struct seedinfo seedinfo

Function Documentation

◆ disabled_flags()

static int disabled_flags ( void  )
inlinestatic

◆ enabled_flags()

static int enabled_flags ( void  )
inlinestatic

◆ get_seedhash_epoch_blocks()

static unsigned int get_seedhash_epoch_blocks ( void  )
static

◆ get_seedhash_epoch_lag()

static int get_seedhash_epoch_lag ( void  )
static

◆ is_power_of_2()

static int is_power_of_2 ( uint64_t  n)
inlinestatic

◆ local_abort()

static void local_abort ( const char *  msg)
static

◆ rx_initdata()

static void rx_initdata ( randomx_cache *  rs_cache,
const int  miners,
const uint64_t  seedheight 
)
static

◆ rx_reorg()

void rx_reorg ( const uint64_t  split_height)

◆ rx_seedheight()

uint64_t rx_seedheight ( const uint64_t  height)

◆ rx_seedheights()

void rx_seedheights ( const uint64_t  height,
uint64_t *  seedheight,
uint64_t *  nextheight 
)

◆ rx_seedthread()

static CTHR_THREAD_RTYPE rx_seedthread ( void *  arg)
static

◆ rx_slow_hash()

void rx_slow_hash ( const uint64_t  mainheight,
const uint64_t  seedheight,
const char *  seedhash,
const void *  data,
size_t  length,
char *  hash,
int  miners,
int  is_alt 
)

◆ rx_slow_hash_allocate_state()

void rx_slow_hash_allocate_state ( void  )

◆ rx_slow_hash_free_state()

void rx_slow_hash_free_state ( void  )

◆ rx_stop_mining()

void rx_stop_mining ( void  )

Variable Documentation

◆ rx_dataset

randomx_dataset* rx_dataset
static

◆ rx_dataset_height

uint64_t rx_dataset_height
static

◆ rx_dataset_mutex

CTHR_MUTEX_TYPE rx_dataset_mutex = CTHR_MUTEX_INIT
static

◆ rx_dataset_nomem

int rx_dataset_nomem
static

◆ rx_mutex

CTHR_MUTEX_TYPE rx_mutex = CTHR_MUTEX_INIT
static

◆ rx_s

rx_state rx_s[2] = {{CTHR_MUTEX_INIT,{0},0,0},{CTHR_MUTEX_INIT,{0},0,0}}
static

◆ rx_vm

THREADV randomx_vm* rx_vm = NULL
static