t_utils.h 1.7 KB
Newer Older
1 2 3 4
#ifndef _WENDELIN_TESTING_UTILS_H_
#define _WENDELIN_TESTING_UTILS_H_

/* Wendelin.bigfile | various testing utilities
5
 * Copyright (C) 2014-2019  Nexedi SA and Contributors.
6 7 8 9 10 11 12
 *                          Kirill Smelkov <kirr@nexedi.com>
 *
 * This program is free software: you can Use, Study, Modify and Redistribute
 * it under the terms of the GNU General Public License version 3, or (at your
 * option) any later version, as published by the Free Software Foundation.
 *
 * You can also Link and Combine this program with other software covered by
13 14 15 16
 * the terms of any of the Free Software licenses or any of the Open Source
 * Initiative approved licenses and Convey the resulting work. Corresponding
 * source of such a combination shall include the source code for all other
 * software used.
17 18 19 20 21
 *
 * This program is distributed WITHOUT ANY WARRANTY; without even the implied
 * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 *
 * See COPYING file for full licensing terms.
22
 * See https://www.nexedi.com/licensing for rationale and options.
23 24 25 26
 */

#include <wendelin/bigfile/ram.h>

27 28 29 30 31
#ifdef __cplusplus
extern "C" {
#endif


32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
/* access to vma memory as byte[] and blk_t[] */
#define b(vma, idx) ( ((volatile uint8_t *)vma->addr_start) [ idx ] )
#define B(vma, idx) ( ((volatile blk_t *)vma->addr_start)   [ idx ] )


/* RAM with limit on #allocated pages
 *
 * NOTE allocated pages are linked to ->lru_list and backend->lru_list will be empty.
 */
struct RAMLimited {
    RAM;
    RAM *backend;
    size_t alloc_max;
    size_t nalloc;
};
typedef struct RAMLimited RAMLimited;

RAMLimited *ram_limited_new(RAM *backend, size_t alloc_max);

51 52 53
/* current time as float */
double microtime();

54 55 56 57 58

#ifdef __cplusplus
}
#endif

59
#endif