STAR
Cal STAR — firmware, DAQ server, and engine design
Loading...
Searching...
No Matches
test_emmc_log.c File Reference
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "emmc_log.h"
Include dependency graph for test_emmc_log.c:

Go to the source code of this file.

Classes

struct  disk_t
struct  rec_t
struct  image_t

Macros

#define CHECK(condition)
#define DATA_START   64U
#define CHUNKS   4U
#define BS   EMMC_BLOCK_SIZE

Functions

static void disk_new (disk_t *d, uint32_t capacity)
static void disk_power_cycle (disk_t *d)
static emmc_status_t f_start (void *ctx, uint32_t *count)
static emmc_status_t f_read (void *ctx, uint32_t lba, void *buf, uint32_t count, uint32_t budget)
static emmc_status_t f_write (void *ctx, uint32_t lba, const void *buf, uint32_t count, uint32_t budget)
static void f_lock (void *ctx)
static void f_unlock (void *ctx)
static emmc_log_config_t config (void)
static void log_new (emmc_log_t *log, disk_t *d)
static void drain (emmc_log_t *log, uint32_t now)
static uint32_t ref_crc (const uint8_t *p, size_t n)
static uint32_t rd32 (const uint8_t *p)
static void decode (const disk_t *d)
static void test_crc (void)
static void test_no_io_before_arm (void)
static void fill_payload (uint8_t *p, unsigned i)
static void test_session_roundtrip (void)
static void test_sessions_and_remount (void)
static void test_flight_keeps_recording (void)
static void test_flush_interval (void)
static void test_backpressure (void)
static void test_torn_write (void)
static void test_torn_write_hole (void)
static void test_stale_epoch (void)
static void test_start_failure (void)
static void test_write_retry (void)
static void test_full (void)
static void test_invalid_init (void)
int main (void)

Variables

static const emmc_port_t port = {f_start, f_read, f_write, f_lock, f_unlock}
static emmc_log_chunk_t chunks [CHUNKS]
static uint8_t scratch [BS]
static image_t img

Macro Definition Documentation

◆ BS

#define BS   EMMC_BLOCK_SIZE

Definition at line 24 of file test_emmc_log.c.

◆ CHECK

#define CHECK ( condition)

◆ CHUNKS

#define CHUNKS   4U

Definition at line 23 of file test_emmc_log.c.

Referenced by log_new(), and test_backpressure().

◆ DATA_START

#define DATA_START   64U

Definition at line 22 of file test_emmc_log.c.

Function Documentation

◆ config()

emmc_log_config_t config ( void )
static

◆ decode()

◆ disk_new()

◆ disk_power_cycle()

void disk_power_cycle ( disk_t * d)
static

◆ drain()

◆ f_lock()

void f_lock ( void * ctx)
static

Definition at line 112 of file test_emmc_log.c.

References CHECK, disk_t::lock_depth, and disk_t::locks.

◆ f_read()

emmc_status_t f_read ( void * ctx,
uint32_t lba,
void * buf,
uint32_t count,
uint32_t budget )
static

◆ f_start()

emmc_status_t f_start ( void * ctx,
uint32_t * count )
static

◆ f_unlock()

void f_unlock ( void * ctx)
static

Definition at line 119 of file test_emmc_log.c.

References CHECK, and disk_t::lock_depth.

◆ f_write()

emmc_status_t f_write ( void * ctx,
uint32_t lba,
const void * buf,
uint32_t count,
uint32_t budget )
static

◆ fill_payload()

void fill_payload ( uint8_t * p,
unsigned i )
static

Definition at line 249 of file test_emmc_log.c.

References p.

Referenced by test_session_roundtrip().

◆ log_new()

◆ main()

◆ rd32()

uint32_t rd32 ( const uint8_t * p)
static

Definition at line 161 of file test_emmc_log.c.

References p.

Referenced by decode(), and test_torn_write_hole().

◆ ref_crc()

uint32_t ref_crc ( const uint8_t * p,
size_t n )
static

Definition at line 150 of file test_emmc_log.c.

References p.

Referenced by decode(), test_crc(), and test_torn_write_hole().

◆ test_backpressure()

◆ test_crc()

void test_crc ( void )
static

Definition at line 222 of file test_emmc_log.c.

References b, CHECK, emmc_log_crc32(), and ref_crc().

Referenced by main().

◆ test_flight_keeps_recording()

◆ test_flush_interval()

◆ test_full()

◆ test_invalid_init()

void test_invalid_init ( void )
static

◆ test_no_io_before_arm()

◆ test_session_roundtrip()

◆ test_sessions_and_remount()

◆ test_stale_epoch()

◆ test_start_failure()

◆ test_torn_write()

◆ test_torn_write_hole()

◆ test_write_retry()

Variable Documentation

◆ chunks

emmc_log_chunk_t chunks[CHUNKS]
static

Definition at line 127 of file test_emmc_log.c.

◆ img

◆ port

const emmc_port_t port = {f_start, f_read, f_write, f_lock, f_unlock}
static

Definition at line 125 of file test_emmc_log.c.

◆ scratch

uint8_t scratch[BS]
static

Definition at line 128 of file test_emmc_log.c.

Referenced by anonymous_namespace{test_lc_linear_fit.cpp}::a_model_change_refits_without_a_capture(), anonymous_namespace{test_cubic_store_namespace.cpp}::add_point_rejects_unknown_uid(), anonymous_namespace{test_lc_linear_fit.cpp}::both_fits_are_serialized(), anonymous_namespace{test_lc_linear_fit.cpp}::cubic_model_is_unchanged(), disabled_board_orphan_is_not_applied(), emmc_log_init(), emmc_stm32_init(), anonymous_namespace{test_lc_tare.cpp}::fingerprint_tracks_what_the_curve_does(), anonymous_namespace{test_cubic_store_namespace.cpp}::kind_round_trip(), anonymous_namespace{test_cubic_store_namespace.cpp}::legacy_file_without_kind(), anonymous_namespace{test_lc_linear_fit.cpp}::linear_model_fits_a_line(), anonymous_namespace{test_lc_linear_fit.cpp}::linear_needs_two_points(), anonymous_namespace{test_lc_tare.cpp}::loaded_tare_is_corrected_by_recompute(), log_new(), anonymous_namespace{test_cubic_store_namespace.cpp}::logical_1_collision(), anonymous_namespace{test_lc_tare.cpp}::non_finite_offset_is_never_recorded(), port_start(), anonymous_namespace{test_cubic_store_namespace.cpp}::pt_lc_logical_collision(), anonymous_namespace{test_lc_linear_fit.cpp}::raw_coefficients_match_the_normalized_form(), fsw::elodin::ElodinClient::read_packet(), anonymous_namespace{test_lc_tare.cpp}::recompute_carries_tare_across_a_better_fit(), anonymous_namespace{test_cubic_store_namespace.cpp}::recovery_regenerates_overwritten_pt_curve(), removed_board_does_not_win_the_logical_map(), role_moved_to_t7_keeps_its_unit(), anonymous_namespace{test_lc_tare.cpp}::save_load_round_trip(), anonymous_namespace{test_lc_tare.cpp}::stale_audit_finds_a_missed_recompute(), t7_role_follows_within_t7(), anonymous_namespace{test_lc_linear_fit.cpp}::tare_cancels_zero_drift_on_linear_not_cubic(), anonymous_namespace{test_lc_linear_fit.cpp}::tared_reading(), test_invalid_init(), anonymous_namespace{test_cubic_store_namespace.cpp}::unreadable_file_is_not_overwritten(), anonymous_namespace{test_lc_tare.cpp}::unreadable_file_is_not_overwritten(), and anonymous_namespace{test_lc_tare.cpp}::untrusted_curves_keep_the_last_good_offset().